Вопрос Как вы повторно используете выбор визуального режима?


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


147
2017-12-10 16:58


происхождения


Ну, я нашел один путь, но это немного громоздко:: <<>> s / old / new / g Любой способ сделать это без ввода типа «<,»>? - labyrinth


ответы:


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


212
2017-12-10 23:59



Потрясающие! @Heptite, как найти эту команду самостоятельно w \ o Stackoverflow? - skywinder
@skywinder: help gv - Heptite
@Heptite: Я не уверен, что вы здесь в щеках, но эта команда показывает вам что: gv делает, когда вы это знаете. Но что, если я не? Научите (wo) человека ловить рыбу и все такое. - Ben Thul
@BenThul: Я думаю, что неправильно понял вопрос. Я знаю о многих функциях Vim, просто прочитав большую часть документации с течением времени, начиная с ":help». - Heptite
:help select-visual должен привести вас к правильному руководству внутри vim @skywinder. - nwildner


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


11
2018-03-14 13:26



zmto введите, что вам нужно знать номера строк. Я думаю, что лучше определить две метки, а затем использовать: «a», «b», чтобы работать в диапазоне между ними (или заменить «backticks», если хотите получить гранулярность внутри строки) - sillyMunky
Да, номера строк были глупыми - я просто использовал это как пример того, как создать макрос выбора. Использование диапазона меток - интересная идея, хотя ... - AlexMA


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

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

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

ma

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

<a

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


6
2017-10-18 17:39



Ничего себе, это звучит очень круто. Я должен дать этому плагину попробовать! Кстати, могут ли эти VisualMarks сохраняться с помощью mkview, как вы можете с помощью меток? - labyrinth
@labyrinth Я не знаю mkview но я думаю да поскольку метки сохраняются в отдельном файле и .. Я предлагаю вам попробовать в любом случае :) Если они не сохраняются, как вы хотите, мы будем рады получить ваш запрос функции на GitHub и попробуйте его обработать. - iago-lito


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

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

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

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


0
2017-12-10 17:20



Извините, это не то, о чем я просил. Я спрашиваю, как вы повторно используете выбор, чтобы сделать еще один поиск и замену в том же диапазоне, который был выбран ранее? - labyrinth
После замены вы выйдете из визуального режима. печатать gv и ваш визуальный режим вернется к предыдущему состоянию выбора. - Scott Nguyen