在编辑 PHP 代码(我不确定它是否特定于该语言)并且我在跨越多行的逗号分隔列表中间创建一个新行时,缩进规则总是取消我要离开的行的缩进。这是它的视频。这发生在数组、函数参数列表等中。
我能做些什么来阻止这种情况的发生,或者有什么比向上移动、重新缩进、向下移动、重新缩进(因为当你离开线路时它被清除)并继续更快速的方法来修复错误?
在编辑 PHP 代码(我不确定它是否特定于该语言)并且我在跨越多行的逗号分隔列表中间创建一个新行时,缩进规则总是取消我要离开的行的缩进。这是它的视频。这发生在数组、函数参数列表等中。
我能做些什么来阻止这种情况的发生,或者有什么比向上移动、重新缩进、向下移动、重新缩进(因为当你离开线路时它被清除)并继续更快速的方法来修复错误?
试试看:set indentexpr=""
是否有帮助。请参阅:help filetype-indent-off
处理文件类型插件的部分(这可能是这个 indentexpr 的来源)。
您的缩进由 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上有更多关于这个主题的内容。
我认为把cindent
一切都搞砸了,smartindent
通常是你想要的。
尝试将其放入~/.vim/filetype.vim
:
au BufNewFile,BufRead *.html,*.css setlocal nocindent smartindent
尝试这个:
:let g:PHP_default_indenting=1
见:h php-indent
。
在正常模式下使用“o”似乎可以避免这个问题。从插入模式命中<esc>o
不是最佳的,但它比硬方式更好(如上所述)。
你也可以做
set cindkeys=-0#
对于 # 字符。如果您遇到与我在使用 css 声明时遇到的问题相同的问题,例如
width: 100%
也向左移动,您可以添加
set cindkeys-=:
找到你的 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 标签时不再缩进<?
你可能想看看缩进键
例如,这些天的默认设置是:
indentkeys=0{,0},:,0#,!^F,o,O,e,*,<>>,,end,: