2

Есть ли в Vim команда, эквивалентная Emacs 'Ctrl-I?

Emacs имеет чрезвычайно полезный ярлык "CI", который исправляет отступ текущей строки (или выбранных строк).

Например, предположим, что вы пишете этот крошечный код на Emacs:

    def foo
  print "boo"
end

и вы выбираете целых 3 строки. Вы нажимаете «CI», тогда код становится

def foo
  print "boo"
end

Я могу использовать это в тихом режиме, т.е. игнорируя. Emacs также. Кто-нибудь знает, как это сделать на Vim?

4 ответа4

4

В режиме вставки Ctrl+F переопределяет текущую строку. Связывание клавиш можно изменить, установив cinkeys

3

может быть есть другие способы, но попробуйте:

=
3

Ответы на этот вопрос: https://stackoverflow.com/questions/235839/how-do-i-indent-multiple-lines-quickly-in-vi предлагает несколько способов сделать отступ.

Возможно, вы ищете ={ для отступа вашего текущего блока кода.

2

Спасибо за всю твою помощь. Я очень ценю это. Но на самом деле я нашел решение:

В vimrc вы увидите код ниже около L37-39:

"if has("autocmd")
"  filetype plugin indent on
"endif

и так удалите " в начале каждой строки, чтобы включить эту настройку. Теперь авто отступ и исправление отступов работают!

Как говорит Casual Coder, если вы хотите исправить отступ в текущей строке, нажмите = (в Emacs Ch.) Также вы можете комбинировать это с выбором команд, таких как gg=G (в Emacs, Cx h Ci) для всего кода, и Cv (Visual Block Mode) будет удобно.

(Пример кода, который я написал в вопросе, написан на Ruby. Мой Vim, который я скачал из репозитория Ubuntu, поставляется с файлом конфигурации отступа Ruby (/usr/share/vim/vim72/indent/ruby.vim), поэтому вам не нужно получать vim-ruby.)

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