Раздражающие правила vim (un) indent - PullRequest
12 голосов
/ 24 ноября 2008

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

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

.vimrc

Ответы [ 8 ]

3 голосов
/ 26 ноября 2008

Ваш отступ контролируется скриптом отступа PHP («Отступ типа файла» в вашем .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 wiki для отступа источника .

3 голосов
/ 24 ноября 2008

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

0 голосов
/ 20 февраля 2014

Найдите файл отступа 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 <?

0 голосов
/ 25 октября 2010

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

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

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

0 голосов
/ 04 сентября 2010

Я думаю cindent все испортило, а smartindent обычно то, что вы хотите.

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

au BufNewFile,BufRead *.html,*.css setlocal nocindent smartindent
0 голосов
/ 22 декабря 2009

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

set cindkeys=-0#

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

width: 100%

и сдвиг влево, вы можете добавить

set cindkeys-=:
0 голосов
/ 24 ноября 2008

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

:let g:PHP_default_indenting=1

См. :h php-indent.

0 голосов
/ 24 ноября 2008

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

...