当前位置:  开发笔记 > 编程语言 > 正文

如何在Vim中为不同语言设置不同的选项卡设置?

如何解决《如何在Vim中为不同语言设置不同的选项卡设置?》经验,为你挑选了4个好方法。

在我的.vimrc中,我有一个两个空格的通用选项卡设置,我想在每种语言基础上覆盖它(也就是说,四个用于Python等,否则使用默认值),但我有找不到任何好的例子.



1> skierpage..:

这些其他答案似乎过于复杂.不要乱用〜/ .vim树中的更多目录和文件,只需将以下内容添加到〜/ .vimrc即可.

autocmd Filetype python setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4

(你可以是l33t和缩写参数et ts=4 sw=4 sts=4).我在文件类型中设置Vim空白首选项时发现了这一点



2> Fritz G. Meh..:

只需将设置放入filetype插件文件〜/ .vim/ftplugin/LANGUAGE.vim即可.我的〜/ .vim/ftplugin/perl.vim包含以下行:

"
" ---------- tabulator / shiftwidth --------------------
"  Set tabulator and shift width to 4 (Perl Style Guide)
"
setlocal  tabstop=4
setlocal  shiftwidth=4
"

对于文件类型为"perl"(新的或现有的)的每个文件,这些设置将自动生效.



3> Brian Neal..:

我的回答是基于VIM Wiki 上的这个提示.这个答案使用"after"目录,因此您不必使用提供的插件文件来处理不同的文件类型.

例如,要指定Python文件的自定义设置,请创建一个名为python.vim保存Python设置的文件:

setlocal expandtab
setlocal shiftwidth=4
setlocal softtabstop=4

将此文件放入其中

~/.vim/after/ftplugin (Linux)的

$HOME/vimfiles/after/ftplugin (视窗)

最后,你必须在你的.vimrc(Linux)或_vimrc(Windows)中拥有它:

filetype plugin indent on



4> Curt J. Samp..:

通常,您要设置一个特殊的vimrc类型文件,其中包含特定语言的设置,然后在主.vimrc中使用自动命令在必要时执行特殊的vimrc.这是我对Haskell(.hs等)文件的配置:

autocmd! BufNewFile,BufReadPre,FileReadPre  *.hs    so ~/.vim/haskell.vim
autocmd! BufNewFile,BufReadPre,FileReadPre  *.hsc   so ~/.vim/haskell.vim
autocmd! BufNewFile,BufReadPre,FileReadPre  *.lhs   so ~/.vim/haskell.vim
autocmd! BufNewFile,BufReadPre,FileReadPre  *.cabal so ~/.vim/haskell.vim

~/.vim/haskell.vim做了像"set expandtab"这样的东西来使用空格而不是制表符,以及各种其他魔法用于格式化和类似这样的事情.您可以从http://vim.org和其他网站下载各种语言的优秀版本.

请注意,您可以做的不仅仅是更改vim设置.例如,您可以在编辑之前和之后通过过滤器运行该文件:

" Edit gpg-encrypted ascii-armoured files
autocmd! BufReadPre,FileReadPre      *.asc  set bin
autocmd  BufReadPost,FileReadPost    *.asc  '[,']!gpg -q -d
autocmd  BufReadPost,FileReadPost    *.asc  set nobin
autocmd! BufWritePre,FileWritePre    *.asc  set bin
autocmd  BufWritePre,FileWritePre    *.asc  '[,']!gpg -e
autocmd  BufWritePost,FileWritePost  *.asc  undo
autocmd  BufWritePost,FileWritePost  *.asc  set nobin


这不是正确的解决方案.正确的解决方案包括使用ftplugins(不需要自己编写和维护自动命令),以及(非常重要)使用本地设置. - > s#:set tabstop =#:setlocal tabstop =#.见fgm的答案.如果您的扩展程序未被识别为haskell,请更新您的文件类型库.你不想让vim对你的文件应用正确的语法高亮吗?
推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有