我的日常工作涉及使用Perl进行编码。在家里我玩Python和Erlang。对于Perl,我想用两个空格缩进我的代码。而对于Python,标准是4.我也有一些键绑定到打开函数声明,我想用于所有编程语言。如何在gVim中实现这一目标?
有没有办法为每种编程语言或类似的东西维护配置文件?
答案 0 :(得分:24)
在$ HOME中,创建.vim /目录(或Windows上的vimfiles /),在其中创建ftplugin /目录,并在其中保存名为“perl.vim”或“python.vim”或“html.vim”的文件“或......
只要您不忘记在.vimrc(或windows下的_vimrc)中添加:filetype plugin on
,就应该在打开/创建给定文件类型的新文件时自动加载这些文件
然后,vim选项应使用:setlocal
定义(而不是:set
,否则其定义将覆盖默认的全局设置。)
使用:n/i/v(nore)map <buffer>
定义映射以及缩写。命令使用-b
选项定义。没有插件的帮助,菜单不能在本地制作。
local
,<buffer>
和-b
对于防止副作用很重要。
答案 1 :(得分:22)
您应该可以通过利用文件类型来实现...例如,将其添加到您的vimrc(并针对不同语言进行适当修改):
autocmd FileType python set tabstop=4|set shiftwidth=4|set expandtab
答案 2 :(得分:7)
除了rangerchris的答案,你可以考虑使用modelines。 Modelines告诉编辑器如何配置自己:
#!/usr/bin/perl
# vi: ts=4 sw=4 ht=4 et textwidth=76 :
use strict;
use warnings;
print "hello world\n";
该模式行告诉vi使用4个字符选项卡和自动注释,使用空格而不是制表符,并且当光标变为76个字符时应该插入换行符。
您可以控制Vim如何使用两个变量读取模型(最有可能在.vimrc中设置):
set modeline
set modelines=5
modeline
变量告诉Vim查找设置的模型。 modelines
变量告诉Vim从顶部和底部扫描多少行以查找模式行(在这种情况下,如果它位于文件的第一行或最后五行,它将找到模式行。)
与从不受信任的来源获取指令的任何系统一样,模型可以是security threat,因此root
用户永远不应该使用模型,并且您应该保持Vim的副本为最新。< / p>
模型的真正好处是它们是每个文件。大多数Perl人都是四个空格作为缩进的人,但我是一个八字符标签人。使用其他人的代码时,我会使用反映其用法的模式行。剩下的时间我都用自己的。
答案 3 :(得分:3)
我是这样做的。以下是我.vimrc
的摘录,我保留了每种语言的进一步配置,并在加载新缓冲区时加载它们。
" HTML
autocmd BufNewFile,BufRead *.html,*.htm,*.xhtml source ~/.vimhtml
" XML
autocmd BufNewFile,BufRead *.xml,*.xmi source ~/.vimxml
" Perl
autocmd BufNewFile,BufRead *.pl,*.pm source ~/.vimperl
请注意,虽然我提供了一个文件,但我可以执行任何VIM命令或调用函数。例如为了加载一个新的Java文件,我这样做:
autocmd BufNewFile *.java call GeneratePackage()
其中GeneratePackage()
是VIM函数。