环境:
OS X:10.11.3
NeoVim:0.1.2-dev
设置文件格式=unix
下面的 vim 函数运行一个 zsh 脚本,它返回页面标题、URL、最后修改时间和当前日期和时间。
function! SafariURL()
let saf_data=system(shellescape('/Users/xxx/Documents/zsh scripts/saf_grab.sh'))
let saf_sub=substitute(saf_data, "^M", "\r","g")
call append(17,saf_sub)
end function
saf_grab.sh 脚本包含以下代码:
mytext=$(/usr/bin/osascript << END
tell application "Safari"
set selecTxt to (do JavaScript "(getSelection().toString())" in document 1)
set pgTitl to (do JavaScript "document.title" in document 1)
set pgDate to (do JavaScript "document.lastModified" in document 1)
set myURL to URL of front document
set copyText to selecTxt & "[" & pgTitl & "]" & "(" & myURL & ")" & return & "Page Last Modified:" & pgDate & return & "Clipped On:" & (current date)
return copyText
end
END)
echo $mytext
echo "$mytext" | bcopy
出于某种原因,sf_grab.sh 返回的字符串^M
作为换行符插入,如下所示:
[Newline - Wikipedia, the free encyclopedia]^M(https://en.wikipedia.org/wiki/Newline)^MPage Last Modified:01/16/2016 13:07:02^MClipped On:Tuesday, 2 February 2016 at 11:00:37^@
我试图在 vim 函数中进行替换以替换这些字符,\r
但它导致^M
被替换为^M
.
如果我将替换更改为\n
而不是\r
,则将^M
替换为^@
。
我不明白为什么原始脚本^M
首先返回 's 以及如何根据需要用换行符替换它们。