Как редактировать несколько строк, когда новая строка также задействована в VIM? (или)

#linux #vim #vi

#linux #vim #vi

Вопрос:

Я хочу отредактировать несколько строк в VIM.Я знаю, что существует редактирование визуальных блоков (например, CTRL V —-> I ——> <Внести необходимые изменения> ——> ESC). Но, к удивлению, это не работает в случае ввода новой строки.

Например, я хочу создать следующий код

 if(i==1):
if(i==2):
 

к чему-то вроде

 if(i==1):
  print("say Hello")
if(i==2):
  print("say Hello")
 

Надеясь найти способ сделать это без слишком большого количества команд.
Заранее спасибо.
🙂

Ответ №1:

Самый простой подход заключается в использовании :help .

  1. Откройте новую строку под первой строкой и введите то, что вам нужно:
     o  print("say Hello")
     
  2. Выйдите из режима вставки:
     <Esc>
     
  3. Переместите курсор вниз на одну строку:
     j
     
  4. И повторите последнее редактирование:
     .
     

Короче говоря:

 o  print("say Hello")<Esc>j.
 

Если вы абсолютно хотите использовать визуальный режим, вот другой способ:

  1. Выберите строки:
     vj
     
  2. Нажмите : , чтобы войти в режим командной строки, при этом диапазон, соответствующий визуальному выбору, автоматически вставляется для вас:
     :'<,'>
     
  3. Используется :help :s для замены EOL новой строкой, за которой следует желаемый текст в каждой строке диапазона:
     :'<,'>s/$/r  print("say Hello")<CR>
     

Комментарии:

1. Как насчет использования глобальной команды? :g/./normal o print("say Hello") или визуальный выбор и запуск :'<,'>g/./normal o print("say Hello") ?