Могу ли я использовать Vim для многострочного редактирования?

Я объединил файл python с помощью vimdiff, и результат имеет что-то вроде этого:

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

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

4 ответов


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

или, чтобы удалить все пробелы в начале каждой строки в файле:

:%s/^\s\+

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

  1. есть blockwise выберите режим, чем вы входите с помощью Ctrlv. Вы можете выбрать пробелы в начале строк и нажмите d.

  2. кроме того, вы можете выбрать линейно строку, которую хотите изменить, введя визуальный режим с SHiftv (затем используйте стрелку вниз или j для выбора). А затем используйте удалить один уровень отступа. Использовать . чтобы повторить последнюю операцию, если вы хотите удалить несколько отступов.


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


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

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

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