Часто при редактировании кода я выбираю блок в визуальном режиме и выполняю поиск и замену блока. Однако после внесения изменений он покидает визуальный режим. Как вы делаете новую находку и заменяете ту же самую подборку?
Часто при редактировании кода я выбираю блок в визуальном режиме и выполняю поиск и замену блока. Однако после внесения изменений он покидает визуальный режим. Как вы делаете новую находку и заменяете ту же самую подборку?
Ответы:
Вы можете повторно выбрать последнюю выбранную визуальную область с помощью gv
.
:help
".
gv
это, безусловно, самый быстрый метод (используйте последний выбор), но если вы хотите сохранить сохраненный регион выделения (или несколько), вы всегда можете создать макросы.
Допустим, я хочу сохранить выбор моего текущего метода, который идет из строк 25-35. Я могу создать макрос, который выбирает весь метод, набрав
q //start recording
a //use register a
25G //Go to line 25
V //visual-line mode
35G //Go to line 35
q // stop recording
Затем я могу вернуть этот выбор, набрав @a
(запустить макрос в регистре а). Повторите с любым регистром, строками или секциями линий, которые вы хотите. Очевидно, что если вы вносите изменения в файл, выбор также может измениться, поэтому вы можете рассмотреть возможность использования меток вместо «жесткого кодирования» номеров строк.
gv
отлично работает для восстановления последнего выбора. Но иногда нужно немного больше.
Если вам когда-нибудь понадобилась более постоянная запись, посмотрите этот плагин, над которым мы сейчас работаем, на GitHub.
VisualMarks позволяет сохранять и восстанавливать визуально выбранные области так же, как вы сохраняете и отмечать определенные места в ваших файлах m
. После установки и с параметрами по умолчанию используйте:
ma
в визуальном режиме, чтобы сохранить текущий выбор, чтобы пометить a
, затем
<a
в обычном режиме, чтобы вернуться к этому выбору.
Предположим, я хотел заменить Goodbye на Hello, и был выбран код ниже:
public static void main(String[] args){
System.out.println("Goodbye World");
}
Я бы :s/Goodbye/Hello/
набрал и vim заменит все экземпляры Goodbye
сHello
Это просто сочетание регулярных выражений vim и выбора визуального режима. Когда вы выбираете, он должен заполнить автоматически'<,'>
gv
и ваш визуальный режим вернется к предыдущему состоянию выбора.