Часто при редактировании кода я выбираю блок в визуальном режиме и выполняю поиск и замену блока. Однако после внесения изменений он покидает визуальный режим. Как вы делаете новую находку и заменяете ту же самую подборку?
Как вы повторно используете выбор визуального режима?
4 ответа
Вы можете повторно выбрать последнюю выбранную визуальную область с помощью gv.
Потрясающие! @ Не знаю, как найти эту команду самостоятельно без Stackoverflow?
@skywinder: помогите Г.В.
@Heptite: Я не уверен, что вы тут недоверчивы, но эта команда показывает вам, что: gv делает, когда вы об этом знаете. Но что, если я * не *? Научите (горе) человека ловить рыбу и все такое.
@BenThul: я думаю, что неправильно понял вопрос. Я знаю о многих функциях Vim, просто прочитав большую часть документации с течением времени, начиная с ": help ".
: help select-visual должен привести вас к правильному руководству внутри vim @skywinder.
gv is definitely the fastest method (use last selection), but if you want a stable saved selection region (or several), you can always create macros.
Lets say I want to store a selection of my current method, which goes from lines 25-35. I can create a macro that selects the whole method by typing
q //start recording a //use register a 25G //Go to line 25 V //visual-line mode 35G //Go to line 35 q // stop recording I can then get that selection back by typing @a (run macro in register a). Repeat with any register, lines, or sections of lines, that you wish. Obviously if you make changes to the file the selection may change as well, so you may want to consider using marks instead of "hardcoding" line numbers.
zmto введите, что вам нужно знать номера строк. Я думаю, что лучше определить две метки, а затем использовать: «a», «b» для работы с диапазоном между ними (или заменить «обратными галочками», если хотите детализацию в пределах линии)
Да, нумерация строк была глупой - я просто использовал это как пример того, как создать макрос выбора. Использование диапазона отметок - интересная идея, хотя ...
gv works great for recovering the last selection. But one sometimes needs a bit more.
If you ever needed more persistent record, have a look a this plugin we are currently working on on the GitHub.
VisualMarks allows you to save and restore visually selected areas just like you save and mark specific locations in your files with m. After installing, and with the default options, use:
ma in visual mode to save your current selection to mark a, then
<a in normal mode to get back to this selection.
Вау, это звучит действительно круто. Я должен дать этому плагину попробовать! Кстати, могут ли эти VisualMarks сохраняться с mkview, как с маркерами?
@labyrinth Я не знаю mkview, но .. я думаю * да *, поскольку отметки сохраняются в отдельном файле и ... я предлагаю вам попробовать в любом случае :) Если они не сохранятся, как вы хотите, мы будем рад получить ваш запрос о функции на GitHub и попробовать его обработать.
Предположим, я хотел заменить Goodbye на Hello, и был выбран код ниже:
public static void main(String[] args){ System.out.println("Goodbye World"); } Я бы :s/Goodbye/Hello/набрал и vim заменит все экземпляры GoodbyeсHello
Это просто сочетание регулярных выражений vim и выбора визуального режима. Когда вы выбираете, он должен заполнить автоматически'<,'>
Извините, я не об этом. То, что я спрашиваю, - как вы повторно используете выбор, чтобы сделать другое нахождение и замену в том же диапазоне, что и выбранный ранее?
После замены вы выйдете из визуального режима. введите gv и ваш визуальный режим вернется к предыдущему состоянию выбора.
Ну, я нашел один способ, но он немного громоздок:: <, '> s / old / new / g Любой способ сделать это без необходимости набирать' <, '>?