7

У меня есть несколько строк текста, как это:

firstName
lastName
email

Теперь я добавляю private readonly string для чтения в начало первой строки. Как мне повторить это редактирование для других строк? (конечно, не посещая каждую строку вручную) (Кстати, я понимаю, что это можно сделать с помощью регулярного выражения, но я ищу "путь vi", если это возможно)

На всякий случай пользуюсь VsVim

6 ответов6

7

Перейдите к firstName в обычном режиме и введите

qaIprivate readonly string <ESC>jq

Это запишет макрос (в регистре a) о том, что вы добавили "частную строку только для чтения" в начало строки, а затем переместились на одну строку вниз. Если вы хотите повторить этот макрос дважды (таким образом, повторяя команду для следующих двух строк), введите в командном режиме 2@a в строке lastName , которая выполнит макрос еще два раза.


Этот метод выполняет ваше требование "не посещать каждую строку вручную"; однако это немного тяжеловесно для вашего приложения.

Если вы возражаете против ввода private readonly string , быстрое решение состоит в том, чтобы выполнить редактирование в первой строке, а затем перейти вниз к каждой строке, которую вы хотите редактировать и использовать . в обычном режиме. Это будет повторять вашу последнюю команду (в этом случае добавление текста в строку) без суеты.

7

Другой способ сделать это - использовать режим Visual Block:

  1. Начните с вашего курсора в начале первой строки.
  2. Нажмите Ctrl+v, чтобы войти в режим визуального блока.
  3. Нажмите j, чтобы переместиться вниз, расширяя выбор, чтобы включить нужные вам линии.
  4. Нажмите I, чтобы перейти в (предваряющий) режим вставки.
  5. Введите private readonly string .
  6. Нажмите Esc . Это заставит вас вернуться в командный режим, и набранный вами текст будет повторяться в каждой строке перед началом выбора визуального блока (в данном случае в начале каждой строки, поскольку именно там вы начали выделение) ,
6

: нормально тоже отлично (и короче)


:.,+2norm Iprivate readonly string 

  • .,+2 - отсюда до 2 двух строк внизу (или вы можете выбрать строки, используя визуальный режим shift+v и затем набрав : чтобы войти в режим ex)
  • norm - введите эти команды, как будто я набрал их в обычном (командном) режиме
  • I(...) - вставить следующую строку в начало строки
3

Просто наберите "private readonly string" в первой строке. Затем для оставшихся 2 строк введите 2(точка), например 2. из второй строки.

1

Попробуйте это:

:%s/^/private readonly string /

Я полагаю, вы могли бы написать сценарий, но почему?

0

Чтобы сделать это в интерактивном режиме, не задумываясь и не подготовившись (если вы уже ввели текст в первой строке, но позже заметите, что он вам нужен в несколько строк):

  1. Вставьте текст, как обычно, используя I в первой строке.

  2. Включите визуальный режим, нажав v или V или <c-v> .

  3. Возьмите все строки, которые вы хотите применить изменения. В этом случае jj сделает.

  4. Хит :norm . затем введите.

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