在Vim 7.3中针对特定文件类型选择性地禁用“filetype插件缩进”

时间:2011-09-07 06:32:46

标签: indentation vim

我有vim 7.3,默认情况下使用Ubuntu 11.04提供的设置。我的.vimrc如下所示:

set nocompatible
set autoindent
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab

filetype plugin indent on
let g:omni_sql_no_default_maps = 1 " Stops Omni from grabbing left/right keys

" syntax, colorscheme and status line directives omitted.

如何针对不同的文件类型(例如php,phtml,rb)有选择地禁用此缩进?

到目前为止,我已尝试autocmd FileType php filetype plugin indent off和一些变种,但我还没有太多运气。

(删除filetype plugin ...行会产生所需的行为,但显然会影响所有文件类型,而不仅仅是少数。)

3 个答案:

答案 0 :(得分:5)

请注意,禁用filetype indent可能不是您想要的:

    :filetype indent off
     

[...]这实际上加载了文件   'runtimepath'中的“indoff.vim”。这会禁用文件的自动缩进   你打开。它将继续在已打开的文件中工作。重启   'autoindent','cindent','smartindent'和/或'indentexpr'禁用   在打开的文件中缩进。

如果你想要,就像这个在线帮助所建议的那样,要禁用某些文件类型的缩进选项,你可以将它放在.vimrc中:

filetype plugin indent on
au filetype php,phtml,rb call DisableIndent()

function! DisableIndent()
        set autoindent&
        set cindent&
        set smartindent&
        set indentexpr&
endfunction

此外,请务必通过查看在线帮助(例如:help autoindent)了解您关闭的这些选项。

答案 1 :(得分:4)

所有filetype indent on命令都是来源$VIMRUNTIME/indent.vim,它本身会切换文件类型并调用单个$VIMRUNTIME/indent/[type].vim。因此,您可以修改默认的indent.vim以忽略某些文件类型(或在.vim / indent.vim本地保存此文件的修改版本)。

如果您对此不满意,可以尝试单独设置vimrc中的插件/缩进行为:

filetype plugin on
au FileType c,vim,lisp filetype indent on

(当然还要添加相关的文件类型)。这对我有用。

答案 2 :(得分:4)

Prince对autocmd的建议对我不起作用。这样做:

filetype plugin on
autocmd BufRead,BufNewFile * filetype indent off
autocmd BufRead,BufNewFile *.py filetype indent on

有选择地为python文件启用filetype indent on。同样set ai也很酷,因为它适用于缩进作为后备的文件。