2016-02-02 2 views
0

Окружающая среда:Подставив^M в nvim сценарии

OS X: 10.11.3

NeoVim: 0.1.2-DEV

набор FileFormat = Юникс

Следующая Функция 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 «s заменяются ^@.

Не понимаю, почему исходный скрипт возвращает ^M в первую очередь и как заменить их разрывами строк по мере необходимости.

ответ

0

Откройте функцию VIM в самом Vim, и писать^M по

шаги

  1. Включить режим вставки

  2. Нажмите Ctrl + Shift + v

  3. Контроль давления + сдвиг + м

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) 
%s/^M/\r/g 
end function 
+0

Замена с помощью' \ r' вставок '^ M'. См. Мой комментарий к @Dasan – pdoak

+0

Попробуйте% s/^ M/\ r/g после добавления – Zam

+0

Это сработало. Спасибо. У вас есть идеи, почему 'let saf_sub = substitute (saf_data,"^M "," \ r "," g ")' не работает? – pdoak

0

Пожалуйста, найдите ссылку ниже, это может помочь

[How to replace "^@" with "\r"

ИЛИ простое решение (я знаю, что это не правильный путь)

Сначала заменить \ п с текстом, который не будет появляться, как «@@ newline @@» в вашем saf_grab.sh

и вернуть «@@ newline @@» с помощью «\ r».

let saf_sub=substitute(saf_data, "@@[email protected]@", "\r","g") 
+0

Спасибо за предложение. Я уже пробовал что-то подобное. Заменяя '' @ @ newline @@ '' на '/ r', все еще выдает'^M' на выходе.Если я заменю на '/ n', я получаю'^@ 'на выходе вместо новой строки. Я верю, что это так, как nVim интерпретирует новый символ строки, но я не понимаю, почему это должно быть проблемой, поскольку у меня есть 'fileformat = unix'. – pdoak

+0

use \ r вместо/r – Zam

+0

Я использую '\ r', просто набрал его неправильно в комментарии – pdoak

Смежные вопросы