12

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

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

.vimrc

4

8 回答 8

3

试试看:set indentexpr=""是否有帮助。请参阅:help filetype-indent-off处理文件类型插件的部分(这可能是这个 indentexpr 的来源)。

于 2008-11-24T03:42:55.033 回答
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上有更多关于这个主题的内容。

于 2008-11-26T03:31:41.357 回答
0

我认为把cindent一切都搞砸了,smartindent通常是你想要的。

尝试将其放入~/.vim/filetype.vim

au BufNewFile,BufRead *.html,*.css setlocal nocindent smartindent
于 2010-09-04T05:31:04.750 回答
0

尝试这个:

:let g:PHP_default_indenting=1

:h php-indent

于 2008-11-24T18:57:02.910 回答
0

在正常模式下使用“o”似乎可以避免这个问题。从插入模式命中<esc>o不是最佳的,但它比硬方式更好(如上所述)。

于 2008-11-24T04:04:18.033 回答
0

你也可以做

set cindkeys=-0#

对于 # 字符。如果您遇到与我在使用 css 声明时遇到的问题相同的问题,例如

width: 100%

也向左移动,您可以添加

set cindkeys-=:
于 2009-12-21T22:53:47.707 回答
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 标签时不再缩进<?

于 2014-02-20T02:23:35.463 回答
0

你可能想看看缩进键

例如,这些天的默认设置是:

indentkeys=0{,0},:,0#,!^F,o,O,e,*,<>>,,end,:

于 2010-10-24T22:50:31.900 回答