Могу ли я, чтобы vim делал многострочное редактирование? - PullRequest
6 голосов
/ 20 июня 2011

Я слил файл python с помощью vimdiff, и результат выглядит примерно так:

def code():
  line 1
  line 2
   line 3
   line 4
   ...
   line n

В этом состоянии отступ не согласован.Как я мог удалить все пробелы перед строками?Я пытался в визуальном режиме, но он выбирает всю строку.Есть ли в vim многострочное редактирование?Notepad ++ позволяет это с помощью Alt-Shift.

Ответы [ 4 ]

6 голосов
/ 20 июня 2011

Существует как минимум два решения вашей проблемы:

  1. Существует режим выбора блоков, который вы вводите с помощью Ctrl v ,Вы можете выбрать пробелы в начале ваших строк и нажать d .

  2. В качестве альтернативы, вы можете выбрать линию, которую вы хотите изменить, войдя в визуальный режим с помощью SHIFT v (затем используйте стрелку вниз или j для выбора).А затем используйте <</kbd>, чтобы удалить один уровень отступа.Используйте . , чтобы повторить последнюю операцию, если вы хотите удалить множественные отступы.

6 голосов
/ 20 июня 2011

Ctrl-V для выбора блоков.

Или для удаления всего пробела в начале всех строк в файле:

:%s/^\s\+
3 голосов
/ 20 июня 2011

В режиме VISUAL вам нужно только выбрать все строки, которые вы хотите переместить, и нажать =.

Я никогда не использовал Notepad ++, но я думаю, что то, что вы называете многострочным редактированием, достижимо с помощью того, что Vim называет VISUAL BLOCK: вместо V hit <C-v>. Затем вы можете выбрать прямоугольные части текста. Получив столбец, нажмите I или A, чтобы перейти в режим редактирования, а затем <Esc>, чтобы применить изменения ко всем строкам. Поскольку вы хотите удалить один пробел, вы должны визуально выбрать столбец пробелов и нажать x или d.

Вы также можете сделать это простым поиском / заменой, я думаю. Или используйте :norm.

3 голосов
/ 20 июня 2011

Shift V переведет вас в режим визуальной линии, а затем вы можете нажать : , чтобы ввести команду для выполнения только на выбранных строках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...