В Vim скрипт / плагин, как мне визуально выделить строку, а затем заменить ее новой строкой? - PullRequest
9 голосов
/ 19 декабря 2010

Я хочу попробовать написать несколько простых плагинов VIM.Я хотел бы взять текущий визуальный выбор, обработать эту строку, а затем заменить выбор на результат.Позже я хотел бы попытаться расширить это для работы с текстовыми объектами и диапазонами.

В частности, я хотел бы знать, как:

  • Получить строку из текущего символа -мудрый выбор
  • Удалить выборку
  • Вставить мою новую строку

Ответы [ 2 ]

7 голосов
/ 19 декабря 2010

Есть разные способы сделать это.Ниже один.Предполагается, что вы хотите получить значение текущего выделения и каким-то образом использовать его при принятии решения о замене новой строки;если новая строка полностью независима, вы можете сделать шаг или два ниже:

"map function to a key sequence in visual mode
vmap ,t :call Test()<CR>

function! Test()
   "yank current visual selection to reg x
   normal gv"xy
   "put new string value in reg x
   " would do your processing here in actual script
   let @x = @x . 'more'
   "re-select area and delete
   normal gvd
   "paste new string value back in
   normal "xp
endfunction
0 голосов
/ 06 декабря 2013

Мне пришлось создать резервную копию позиции курсора, чтобы заставить это работать должным образом, когда текст следовал за выделением:

function! Test()
   "yank current visual selection to reg x
   normal! gv"xy
   "get current column position
   let cursor_pos = getpos('.')
   "subtract 1
   let cursor_pos[2] = cursor_pos[2] - 1
   "put new string value in reg x
   " would do your processing here in actual script
   let @x = @x . 'more'
   "re-select area and delete
   normal gvd
   "set cursor back one
   call setpos('.', cursor_pos)
   "paste new string value back in
   normal "xp
endfunction

Может быть, другие имеют функцию вставки Vim, настроенную иначе, чем я, но если я не использовал это,выделенный / измененный текст будет сдвигаться вперед при вставке.

Обновление: это, к сожалению, не будет работать с текстом, выделенным в начале строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...