Часто при редактировании кода я выбираю блок в визуальном режиме и выполняю поиск и замену блока. Однако после внесения изменений он покидает визуальный режим. Как вы делаете новую находку и заменяете ту же самую подборку?
4 ответа
Вы можете повторно выбрать последнюю выбранную визуальную область с помощью gv
.
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
(запустить макрос в регистре 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 и выбора визуального режима. Когда вы выбираете, он должен автоматически заполнить '<,'>