Как я могу быстро добавить что-то к нескольким строкам в vim? - PullRequest
3 голосов
/ 22 февраля 2011

Я пытаюсь уйти от использования стрелок, но есть одна вещь, которую мне еще предстоит решить без использования клавиш со стрелками.Возьмите этот пример:

var1 = "1"
var2 = "2"
var3 = "3"
var4 = "4"

Теперь я хочу, чтобы это было:

var_1 = "1"
var_2 = "2"
var_3 = "3"
var_4 = "4"

Используя стрелки, я бы просто пошел в var1, вставил и добавил подчеркивание, а затем стрелку вниз и сделал быто же самое.Проблема с использованием hjkl в том, что я не могу быть в режиме вставки, поэтому мне нужно выйти, переместиться вниз, вставить ... повторить промывку, что потребовало больше работы.Есть ли другой способ сделать это?

Ответы [ 5 ]

7 голосов
/ 22 февраля 2011

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

  • перейти к «1» в «var1»
  • нажмите CTRL+V
  • нажмите j, чтобы выбрать все строки, которые вы хотите затронуть
  • I (это заглавная буква i)
  • _
  • <ESC>

Подчеркивание теперь должно быть вставлено в правильное место во всех выбранных строках (по какой-то причине это происходит на моей машине за секунду)

4 голосов
/ 22 февраля 2011

Есть много способов сделать это. Используя команды движения, например:

  • 1G0 → Перейти к началу первой строки
  • f1 → перейти к первому вхождению «1»
  • i_<ESC> → вставить «_» и вернуться в нормальный режим
  • j. → перейти по строке и повторить команду вставки
  • j. → перейти по строке и повторить команду вставки
  • ...

Или, что еще лучше, используйте команду "ex":

  • :%s/var/var_/

Или даже с помощью команды визуального блока, как отмечает johusman .

1 голос
/ 22 февраля 2011

Предполагается, что вы на первой строке, символ 1 ...

Использование макроса:

qqfra_<Esc>+q3@q
  • q Запись макроса
  • q В регистр q
  • f find
  • r 'r'
  • a append
  • _ подчеркивание
  • Esc Нормальный режим
  • + Начало следующей строки
  • 3 Трижды
  • @ Играть в макрос
  • q из регистра q

Пар 11.

Или (лучше), используя замену :

:%s!r!&_<CR>

Пар 9!

[Извините ... слишком много VimGolf !]

0 голосов
/ 23 февраля 2011

У меня всегда включены номера строк, поэтому я бы сделал, например,

1,4 s/var/var_/

Это похоже на

% s/var/var_/

ответ, но он работает только в именованных строках. Вы можете использовать визуальный режим для маркировки линий, если вам не нравится вводить диапазон (префикс 1,4) в вашей команде.

0 голосов
/ 22 февраля 2011

Я предпочитаю: заменить режим визуального блока.

%s/var\zs\ze\d/_/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...