151

Часто при редактировании кода я выбираю блок в визуальном режиме и выполняю поиск и замену блока. Однако после внесения изменений он покидает визуальный режим. Как вы делаете новую находку и заменяете ту же самую подборку?

4 ответа4

220

Вы можете повторно выбрать последнюю выбранную визуальную область с помощью gv .

13

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). Повторите с любым регистром, строками или секциями линий, которые вы хотите. Очевидно, что если вы вносите изменения в файл, выбор также может измениться, поэтому вы можете рассмотреть возможность использования меток вместо "жесткого кодирования" номеров строк.

6

gv отлично работает для восстановления последнего выбора. Но иногда нужно немного больше.

Если вам когда-нибудь понадобилась более постоянная запись, посмотрите этот плагин, над которым мы сейчас работаем, на GitHub.

VisualMarks позволяет сохранять и восстанавливать визуально выбранные области так же, как вы сохраняете, и отмечать определенные места в ваших файлах с помощью m . После установки и с параметрами по умолчанию используйте:

ma

в визуальном режиме, чтобы сохранить текущий выбор, чтобы пометить, a затем

<a

в обычном режиме, чтобы вернуться к этому выбору.

0

Предположим, я хотел заменить Goodbye на Hello, и был выбран код ниже:

public static void main(String[] args){
    System.out.println("Goodbye World");
}

Я набрал бы :s/Goodbye/Hello/ и vim заменит все экземпляры Goodbye на Hello

Это просто сочетание регулярных выражений vim и выбора визуального режима. Когда вы выбираете, он должен автоматически заполнить '<,'>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .