烦人的vim(un)缩进规则

时间:2008-11-24 03:39:31

标签: php vim indentation

编辑PHP代码时(我不确定它是否特定于该语言)并且我在跨越多行的逗号分隔列表中创建了一个新行,缩进规则总是取消我要离开的行。 Here's a video of it.这在数组,函数参数列表等中发生。

我能做些什么来阻止这种情况发生,或者任何更快的方法来修复错误,而不是向上移动,重新缩进,向下移动,重新缩进(因为当你离开线时它被清除),并继续?

.vimrc

8 个答案:

答案 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标记<?

时不再需要缩减