Emacs любит строгий авто-отступ в vim - PullRequest
2 голосов
/ 26 сентября 2011

Emacs, при редактировании файла C, заставляет меня следовать определенному отступу. Когда я нажимаю клавишу Tab на строке с неправильными отступами, она исправляет отступ. Я хочу такое поведение от моего редактора vim. До сих пор я сделал следующее: set cindent set smartindent set autoindent set expandtab set tabstop=2 set shiftwidth=2 set cinkeys=0{,0},:,0#,!,!^F

в моем файле .vimrc. Тем не менее, я не достигаю такого же emacs-подобного принудительного эффекта, как хочу.

Возможно ли это вообще в vim?

Ответы [ 2 ]

11 голосов
/ 26 сентября 2011

'smartindent' устарел.На самом деле нет причин, по которым вам нужно иметь это в вашем vimrc.

'cindent' отменяет 'smartindent', поэтому установка обоих в вашем vimrc бессмысленна.Установка 'cindent' в вашем vimrc также не очень полезна, так как она действительно хорошо работает только на языках, подобных Си.

filetype indent on включит плагины для файлов, специфичные для типов файлов (cf, indentкаталог под $VIMRUNTIME).Это в сочетании с 'autoindent', по крайней мере, обеспечивает базовую автоматическую поддержку отступов независимо от того, какой тип файла вы редактируете.

Если вы хотите добавить настройки отступа для определенного типа файла, вы можете создать свой собственный скрипт отступа в ~/.vim/indent/<filetype>.vim или ~/.vim/after/indent/<filetype>.vim, если вы дополняете существующий общесистемный сценарий отступа.

Когда показанные вами настройки показывают, нажмите Ctrl f во вставкережим будет делать то же, что и Emacs, когда вы нажимаете Tab .Это описано в : help indentkeys-format .'cinkeys' используется, когда 'cindent' включено, а 'indentexpr' пусто.'indentkeys' для обратного.Это небольшое изменение, чтобы изменить настройку, поэтому вместо 1033 * Ctrl f .

можно использовать Tab .В заключение, я бы порекомендовал узнать, как помочь Вим.Это очень тщательно и легко использовать, как только вы разберетесь.: help usr_toc - хорошее место для начала для документации уровня пользователя.: справка описывает основные сведения о навигации по справке, поиске тем и т. Д.

2 голосов
/ 26 сентября 2011

Команда == - это то, что вы хотите, если я вас правильно понимаю.Он переопределяет текущую строку в соответствии с правилами синтаксиса.

Что касается привязки ее к tab, это, безусловно, возможно, но я этого не сделал и не совсем уверен, как вы можете поймать нужный момент, когда он долженна самом деле вставьте вкладку, и когда она должна сделать отступ.

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

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