Удаление пробелов на нескольких строках в VIM - PullRequest
4 голосов
/ 19 января 2011

Для отступа кода HAML я обычно добавляю или удаляю 2 пробела. Добавление я делаю:

  1. Вход в визуальный режим (ctrl + v)
  2. JJ, чтобы выбрать строки
  3. shift + i, чтобы войти во вставку
  4. тип 2 пробела
  5. ESC

Вот и все 2 пробела. Однако для удаления пробелов я не работаю, например, делаю:

  1. Вход в визуальный режим (ctrl + v)
  2. JJ, чтобы выбрать строки
  3. shift + i, чтобы перейти на вставку
  4. Удалить 2 пробела (с пробелом или удалить)
  5. ESC

Это просто не работает, остальные строки не удаляются. Как тогда я могу это сделать?

Вот пример кода:


 .module_1
     .pricing_details
       %h2
         Save

Идея заключается в перемещении всего, чтобы оно соответствовало двум пробелам в отношении .module_1 как:


 .module_1
   .pricing_details
     %h2
       Save

Предлагаемое решение, использующее <>, работает только для отступов, теперь я хотел бы, например:


 .module_1
   .pricing_details
     %h2
       Save

Переместить выше:


 .module_1
 .pricing_details
   %h2
     Save

Ответы [ 3 ]

7 голосов
/ 19 января 2011

Попробуйте команды <</kbd> и > .Вам нужно будет :set shiftwidth=2, чтобы они работали таким образом.


ОБНОВЛЕНИЕ

Учитывая ваш последний пример, измените

.module_1
  .pricing_details
    %h2
      Save

до 101

.module_1
.pricing_details
  %h2
    Save

можно выполнить, перейдя на линию .pricing_details и нажав Vjj<.

4 голосов
/ 19 января 2011

Выделите свой текст и сделайте:

<

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

.

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

:set sw=2

Вы можете сделать отступ для текста таким же образом, используя ">".

Все это есть в документации: http://vimdoc.sourceforge.net/htmldoc/usr_25.html#25.3

0 голосов
/ 19 января 2011

в vimrc:

" pressing F5 adds two spaces at beginning of line and goes to next line
inoremap <F5> <ESC>:s/\(.*\)/  \1/e<CR>:set nohlsearch<CR>ji
" also works when not in edit mode
map <F5> i<F5><ESC>

" F6 removes two spaces from the end of whitespace at the beginning of line
inoremap <F6> <ESC>:s/\(^\s*\)/\1/e<CR>:set nohlsearch<CR>ji
map <F6> i<F6><ESC>

Чтобы удалить 2 пробела в начале каждой строки абзаца, просто нажмите F5 через все его строки.

Это смоделировано после моих сочетаний клавиш для комментирования и раскомментирования кода C (различие, конечно, в регулярном выражении)

Единственный недостаток - необходимо отключить подсветку поиска, поскольку регулярное выражение постоянно находится рядом со всем документом.

...