Ответ 1
Использовать Qfreplace http://github.com/thinca/vim-qfreplace
- добавить некоторые в quickfix. ex: grep foo */
- type: Qfreplace on quickfix
- измените строки так, как вы хотите.
- : ш
Я хотел бы использовать что-то вроде vils для буферов vim.
Пример:
a
b
a
b
Найдите "a" (:g/a/
)
Выход:
a
a
а затем отредактируйте вывод так, как если бы он был обычным буфером. Когда я закончил, он должен отобразить мои изменения по строкам обратно в исходный буфер.
Как это сделать?
PS: Я мог бы использовать :%s/../../
или что-то в этом роде, но это было бы не так удобно, как могло бы быть. (Даже если выполнение в буфере CTRL + F будет работать.)
Использовать Qfreplace http://github.com/thinca/vim-qfreplace
Функция, о которой вы говорите, звучит как occure
/narrow-to-region
в emacs.
В vim вы можете ввести следующую команду:
:vimgrep pattern %
Затем введите :cw
, чтобы открыть quickfix-список.
Вы можете использовать щелчок мыши или :cn
/:cp
, чтобы перейти к изменениям.
Пока соответствующие линии охватывают один ряд последовательных строк, плагин NrrwRgn может работать для вас.
Я обычно копирую строки в конец документа
:g/a/t$
Если вы хотите, вы можете установить отметку в "предыдущем" конце документа:
:$mark a
Итак, теперь вы можете редактировать часть 'a,$
вашего документа, как обычно, включая сохранение его в другом месте:
:'a,$d | new | put!
Также работает следующее: вы можете yank, добавляя к регистру a
:
:g/a/yank A
Конечно, вы можете очистить регистр перед запуском:
:let @a=""
g/../
можно комбинировать с командами типа
:g/^a/ s/a/a.txt/
чтобы изменить, например, каждый "a" на "a.txt". См. ': H: g'