我有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 ...
行会产生所需的行为,但显然会影响所有文件类型,而不仅仅是少数。)
答案 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
也很酷,因为它适用于缩进作为后备的文件。