在我的.vimrc我有一个两个空格的通用标签设置,我想覆盖每个语言的基本(即,四个Python等,否则使用默认值),但我无法找到任何这方面的好例子。如何在Vim中为不同语言设置不同的标签设置?
回答
只需将设置到文件类型插件文件 〜/ vim的/文件类型插件/ LANGUAGE.vim。 我〜/的.vim /文件类型插件/ perl.vim包含行:
"
" ---------- tabulator/shiftwidth --------------------
" Set tabulator and shift width to 4 (Perl Style Guide)
"
setlocal tabstop=4
setlocal shiftwidth=4
"
这些设置将自动生效用于与文件类型“的perl” (新的或者现有的)的每个文件。
通常情况下,您要为特定语言设置一个特殊的vimrc类型的文件,然后在您的主.vimrc中使用自动命令来在必要时执行特殊的vimrc。这是我的哈斯克尔(.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
做的东西,如“设置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
很好,谢谢。我打算使用这个解决方案而不是基于ftplugin的解决方案,因为在我使用相同语言的多个文件扩展名的情况下(比如你在Haskell示例中),这看起来更清晰。 – 2009-05-21 08:11:15
有一点小的代价。每次切换到这样的缓冲区时,源命令(例如〜/ .vim/haskell.vim)都会被执行。 – 2009-05-21 08:55:29
这不是正确的解决方案。正确的解决方案包括使用ftplugins(不需要自己编写和维护自动命令)和使用本地设置(非常重要)。 - > s#:set tabstop =#:setlocal tabstop =#。见fgm的答案。如果您的扩展程序未被识别为haskell,则更新您的文件类型库。你不想让vim将正确的语法高亮应用到你的文件吗? – 2009-05-21 10:43:26
我的回答基于VIM Wiki上的this tip。这个答案使用“后”目录,所以你不必为提供不同的文件类型提供的插件文件。
例如,指定Python文件自定义设置,创建一个名为python.vim
握住你的Python设置文件:
setlocal expandtab
setlocal shiftwidth=4
setlocal softtabstop=4
将该文件放在任何
~/.vim/after/ftplugin
(Linux的)$HOME/vimfiles/after/ftplugin
(Windows)
最后,你必须在你的.vimrc
(Linux)或_vimrc
(Windows)中有这样的:
filetype plugin indent on
这些其他的答案似乎太复杂。不要在〜/ .vim树中混淆更多目录和文件,只需将以下内容添加到〜/ .vimrc中即可。
autocmd Filetype python setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4
(您可以是l33t并将参数缩写为et ts=4 sw=4 sts=4
)。我发现这个在 Setting Vim whitespace preferences by filetype
我使用editor config插件和.editorconfig文件添加到我的所有项目 - 它会让你定义使用相同的编程语言不同的项目可以是经常不同的项目有用不同的缩进设置在同一种语言中有不同的编码标准。
你可以看到的配置类型,你可以在这里设置的例子: http://editorconfig.org/
- 1. 如何设置不同的语言
- 2. 如何设置matplotlib.dates.DateFormatter不同语言
- 3. 为不同语言设置info.plist文件
- 4. 如何在同一个标签中设置不同的颜色?
- 5. 如何在Android上为不同分辨率的不同语言设置文本?
- 6. 如何为不同的蜘蛛设置不同的scrapy设置?
- 7. iPhone:如何在应用程序设置中添加不同的语言设置?
- 8. 以不同语言设置日期
- 9. 如何为asp.NET应用程序设置不同的语言?
- 10. 如何测试为SKProductsRequest设置不同的语言环境
- 11. 如何为不同的语言设置i18n?
- 12. 如何为网站上的不同蜘蛛设置不同的语言?
- 13. 为每种语言设置不同的Formatter配置
- 14. HighCharts设置不同的xAxis标签
- 15. 如何在levelplot中设置不同的x&y标签?
- 16. 如何在饼图图例中设置不同的标签
- 17. 如何在不同的标签中设置默认按钮?
- 18. Rails:如何为多个字段设置不同的标签_
- 19. 如何将不同的forecolor设置为单个标签?
- 20. 如何在Facebook频道中为Bot框架设置不同的语言?
- 21. 如何在Drupal中为每种语言设置不同的主页?
- 22. 如何在magento中为不同的主题设置不同的徽标2.1
- 23. 如何为不同的用户设置不同的系统区域设置
- 24. 设置不同的语言为ASP.NET MVC错误
- 25. 为所有编程语言文件类型设置vim设置
- 26. 如何在codeigniter中为3种不同语言设置form_validation错误消息?
- 27. 如何为rPlot中的不同点设置不同的颜色?
- 28. 如何将iOS模拟器永久设置为与英语不同的语言
- 29. 测试在语言检测从训练完全不同的设置设置
- 30. Django populate()不可重入多语言设置与不同的域
很遗憾,我们仍然需要ftplugin来做到这一点。 – shabunc 2013-11-12 06:50:24