Раздражающие правила vim (un)

При редактировании PHP-кода (я не уверен, что он специфичен для этого языка), и я создаю новую строку в середине разделенных запятыми списков, которые охватывают несколько строк, правила отступов всегда отделяют строку, которую я оставляю. Вот видео. Это происходит в массивах, списках аргументов функций и т. Д.

Есть ли что-нибудь, что я могу сделать, чтобы это не произошло, или какие-либо более быстрые методы исправления ошибки, чем перемещение вверх, повторное отступы, перемещение вниз, повторное отступы (поскольку оно очищается, когда вы покидаете линию) и продолжаете?

.vimrc

Попробуйте :set indentexpr="" и посмотрите, поможет ли это. Смотрите :help filetype-indent-off для раздела, который имеет дело с файловыми плагинами (вероятно, именно там, откуда этот indentexpr).

Ваш отступ контролируется скриптом отступа PHP («indty filetype on» в вашем .vimrc). Я использую эти параметры для моего отступа PHP, который вы помещаете в ~/.vim/after/ftplugin :

 setlocal autoindent setlocal cindent setlocal cinwords=if,else,elseif,do,while,foreach,for,case,default,function,class,interface,abstract,private,public,protected,final setlocal cinkeys=0{,0},0),!^F,o,O,e setlocal nosmartindent " don't use smart indent option 

В этой теме есть дополнительная информация о вики-странице vim для отступов источника .

Использование «o» в нормальном режиме, похоже, позволяет избежать проблемы. Нажатие <esc>o из режима вставки не является оптимальным, но это лучше, чем жесткий способ (как описано выше).

Попробуй это:

 :let g:PHP_default_indenting=1 

См :h php-indent .

Вы также можете сделать

 set cindkeys=-0# 

Для символа # char. Если у вас такая же проблема, как у меня с объявлениями css, например

 width: 100% 

также сдвинувшись влево, вы можете добавить

 set cindkeys-=: 

Я думаю, cindent все в порядке, а smartindent – это то, что вы хотите.

Попробуйте поместить это в ~/.vim/filetype.vim :

 au BufNewFile,BufRead *.html,*.css setlocal nocindent smartindent 

вы, вероятно, хотите посмотреть на indentkeys

например, по умолчанию в эти дни:

indentkeys = 0 {, 0},:, 0 #, F ^, о, о, е, *, <>> ,, конец ,:

Найдите свой файл отпечатка php.vim. например /usr/share/vim/vim73/indent/php.vim

Затем найдите следующие строки:

 elseif lastline =~ '^\s*?>.*<?\%(php\)\=\s*$' let lnum = lnum - 1 

И прокомментируйте их, добавив кавычки, например:

 "elseif lastline =~ '^\s*?>.*<?\%(php\)\=\s*$' " let lnum = lnum - 1 

Это исправит! Больше не нужно отступать при открытии тегов PHP <?