Macvim: измените содержимое регистра буфера обмена перед его вставкой

Предположим, я выделил какой-то текст в Safari и скопировал его в буфер обмена, например, "foo, bar" (без кавычек). Теперь я вижу, что он доступен в Macvim в регистре "*, набрав :reg. Я могу скопировать содержимое этого реестра в редактор Vim с помощью ярлыка или с помощью редактирования-> вставить. Но как мне изменить содержимое этого регистра (или любого регистра, если на то пошло) перед его вставкой. Например, как мне применить процедуру поиска и замены, такую ​​как поиск "," и замена его на ".", чтобы регистр теперь содержал "foo. bar"?

Заранее спасибо!


person TriSSSe    schedule 06.07.2012    source источник


Ответы (1)


:reg *
original content

let @*='altered content'

:reg * 
altered content

Вы можете сделать это с каждым именованным регистром.

С вашим примером можно справиться:

let @a=substitute(@*,',','.','g')
"ap

Но вам, вероятно, следует сделать резервную копию, прежде чем делать что-то слишком сложное:

:reg a
original content

let a_orig = @a

let @a='altered content'
"ap
altered content

let @a=a_orig

:reg a
original content
person romainl    schedule 06.07.2012
comment
@romainl Спасибо, но когда я хотел заменить разрыв строки ^J на " ", это не удалось. Я подумал, что, возможно, разрыв строки не является ^ добавлением J, поэтому я просто скопировал его из реестра при запуске :reg, но также получил неправильный результат. Можно ли заменить перевод строки пробелом? - person Lerner Zhang; 21.06.2015
comment
@leoadams, в Vim ^J на самом деле один символ. Вы можете вставить его, набрав <C-v><C-j>. - person romainl; 21.06.2015