Подтвердить что ты не робот

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

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

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

. vimrc

4b9b3361

Ответ 1

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

Ответ 2

Ваш отступ управляется отступением PHP script ( "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 wiki-страница для отступов источника.

Ответ 3

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

Ответ 4

Попробуйте следующее:

:let g:PHP_default_indenting=1

См. :h php-indent.

Ответ 5

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

set cindkeys=-0#

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

width: 100%

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

set cindkeys-=:

Ответ 6

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

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

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

Ответ 7

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

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

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

Ответ 8

Найдите файл indent php.vim. например /usr/share/vim/vim 73/indent/php.vim

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

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

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

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

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