gVim和多种编程语言

时间:2009-09-10 10:34:07

标签: python perl editor vim

我的日常工作涉及使用Perl进行编码。在家里我玩Python和Erlang。对于Perl,我想用两个空格缩进我的代码。而对于Python,标准是4.我也有一些键绑定到打开函数声明,我想用于所有编程语言。如何在gVim中实现这一目标?

有没有办法为每种编程语言或类似的东西维护配置文件?

4 个答案:

答案 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函数。