Перейти к содержимому

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

151

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

21 758 просмотров
labyrinth спросил 15 лет назад
L 1 051

4 ответа

218
Принятый ответ

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

Потрясающие! @ Не знаю, как найти эту команду самостоятельно без Stackoverflow?

skywinder · 10 лет назад · 4

@skywinder: помогите Г.В.

Heptite · 10 лет назад · 4

@Heptite: Я не уверен, что вы тут недоверчивы, но эта команда показывает вам, что: gv делает, когда вы об этом знаете. Но что, если я * не *? Научите (горе) человека ловить рыбу и все такое.

Ben Thul · 8 лет назад · 2

@BenThul: я думаю, что неправильно понял вопрос. Я знаю о многих функциях Vim, просто прочитав большую часть документации с течением времени, начиная с ": help ".

Heptite · 8 лет назад · 0

: help select-visual должен привести вас к правильному руководству внутри vim @skywinder.

nwildner · 8 лет назад · 0
Heptite ответил 15 лет назад
H 14 646
13

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

sillyMunky · 12 лет назад · 0

Да, нумерация строк была глупой - я просто использовал это как пример того, как создать макрос выбора. Использование диапазона отметок - интересная идея, хотя ...

AlexMA · 12 лет назад · 0
AlexMA ответил 13 лет назад
A 347
6

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 · 10 лет назад · 0

@labyrinth Я не знаю mkview, но .. я думаю * да *, поскольку отметки сохраняются в отдельном файле и ... я предлагаю вам попробовать в любом случае :) Если они не сохранятся, как вы хотите, мы будем рад получить ваш запрос о функции на GitHub и попробовать его обработать.

iago-lito · 10 лет назад · 0
iago-lito ответил 10 лет назад
I 201
0

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

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

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

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

Извините, я не об этом. То, что я спрашиваю, - как вы повторно используете выбор, чтобы сделать другое нахождение и замену в том же диапазоне, что и выбранный ранее?

labyrinth · 15 лет назад · 1

После замены вы выйдете из визуального режима. введите gv и ваш визуальный режим вернется к предыдущему состоянию выбора.

Scott Nguyen · 15 лет назад · 1
Scott Nguyen ответил 15 лет назад
S 1