编辑PHP代码时(我不确定它是否特定于该语言)并且我在跨越多行的逗号分隔列表中创建了一个新行,缩进规则总是取消我要离开的行。 Here's a video of it.这在数组,函数参数列表等中发生。
我能做些什么来阻止这种情况发生,或者任何更快的方法来修复错误,而不是向上移动,重新缩进,向下移动,重新缩进(因为当你离开线时它被清除),并继续?
答案 0 :(得分:3)
尝试:set indentexpr=""
,看看是否有帮助。有关处理文件类型插件的部分(可能是此indentexpr的来源),请参阅:help filetype-indent-off
。
答案 1 :(得分:3)
您的缩进由PHP缩进脚本(.vimrc中的“filetype indent on”)控制。我将这些选项用于我的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 page for source indenting上有关于此主题的更多内容。
答案 2 :(得分:0)
在正常模式下使用“o”似乎可以避免此问题。从插入模式命中<esc>o
不是最佳选择,但它比困难方式更好(如上所述)。
答案 3 :(得分:0)
试试这个:
:let g:PHP_default_indenting=1
请参阅:h php-indent
。
答案 4 :(得分:0)
您也可以
set cindkeys=-0#
#char。如果你遇到与css声明相同的问题,比如
width: 100%
向左移动,你可以添加
set cindkeys-=:
答案 5 :(得分:0)
我认为cindent
会搞砸所有内容,smartindent
通常就是你想要的。
尝试将其放入~/.vim/filetype.vim
:
au BufNewFile,BufRead *.html,*.css setlocal nocindent smartindent
答案 6 :(得分:0)
你可能想看看缩进
例如,这些天的默认值是:
indentkeys = 0 {4,0},:,0#,^ F,O,O,E,*,&LT;&GT;&GT; ,,端,:
答案 7 :(得分:0)
找到你的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标记<?