为 Perl 定制 Vim

#################################
#
#          自动换行
#
#################################

set wrap
set nowrap

你编码过程中,有时一行的字符数要超过一行的宽度,有人喜欢让这样长的一行自动换行(就是说,让一行显示不完的字符在接下来的一行中继续显示),而还有的人更喜欢让其没有换行,保持原来的样子。你可以根据你的喜好来设置Vim,在你的 .vimrc配置文件中,加入 “set wrap "或者 “set nowrap”。你可以设置
101109170850.jpg
#################################
#
#          制表格的宽度
#
#################################

set tabstop=4

加入“set tabstop=4” 到你的 .vimrc ,使得所有出现的制表符(ASCII码#9)都显示为4个空格。这个选项是不会改变实际的文本,它只是改变了文本的显示方式。
#################################
#
#          自动缩进
#
#################################

set autoindent

加入 “set autoindent” 到 .vimrc文件,让 Vim自动移动光标在合适的位置,满足恰当的缩进级别的要求,当你按下回车(Enter)要写下下一行代码之前。这很有用,特别是你想缩进好代码当中的循环或者子函数等等的时候。
#################################
#
#          单位缩进宽度
#
#################################

set shiftwidth=4

Vim允许你选定一块代码,并改变它的缩进级别(增加或减小都行)。这就需要设置单位缩进宽度,加入“set shiftwidth=4”到 .vimrc配置文件。
#####################################
#
#    文件名或目录名的自动填充 /tab
#
#####################################

set wildchar = <tab></tab>

当你在命令模式下时,vim可以自动完成文件名或目录名,像你想打开或者保存文件的情况。要这样,您可以先在命令行上输入文件名或目录名的开始的几个字符,然后按下自动完成键。你可以改变自动完成键(注:一般为Tab键)到几乎任何一个键,只要在配置文件.vimrc中的“set wildchar = <tab></tab>”这一行做修改。
#################################
#
#          显示行号
#
#################################

set number

虽然Vim一直会在信息行上显示你现在所在的行的位置,但是你可能还想看到所有行的前面都被标上了行号。做到这一点,你只要加入“set number”到配置文件 .vimrc就可以了。
101109170213.jpg
#################################
#
#      设置明暗度
#
#################################
可根据喜好设置字体亮度

syntax on
set bg=dark # 暗背景色的终端
set bg=light # 亮背景色的终端

101109170832.jpg
#################################
#
#        文本自动补全
#
#################################

Ctrl-n / Ctrl-p # 在编辑模式,直接按下。

对我来说,文本的自动补完功能是vim中打死也不能没有的特性之一。当在进行编辑时,按下Ctrl-n/Ctrl-p即可在当前单词下给出补全提示。 Vim会基于要想补全的单词给出一个提示列表,该列表从当前文件中产生。如果你需要补全的关键字的提示来自于其他文件,那么默认下Vim可以识别 ctags文件。只要运行"ctags *.p?"就可以为当前目录下所有的perl文件和模块生成ctags(假设你的Perl脚本和模块的扩展名分别是".pl"和".pm")。这个vim 特性不仅节省了大量的打字时间,和非常显著地减少了输入的错误率,特别是对于代码中那些长变量名和过程名。
#################################
#
#         窗口的分割
#
#################################

:splite # 水平分隔
:vsplite file_name # 垂直分隔显示指定的文件

有时我要同时查阅两个或多个文件。尽管我可以在一个单独的终端下运行另一个Vim,但有时这样总不如使用Vim分割特性来得舒服。
Vim支持窗口的垂直和水平分割.要对当前窗口进行水平分割,就在一般模式下执行“:splite"。要垂直分割,那么就使用":vsplite"。如果在split/vsplit后不使用任何文件名作为参数的话,那么该参数就为你当前编辑的文件名.你可以按照你的想法对窗口进行进一步的切割。":close"将会关闭当前的窗口.":only"会关闭除当前窗口外的所有窗口。
101109170859.jpg
##################################
#
#      Diff mode 比较模式
#
##################################

vim -d main.pl main2.pl

vimdiff main.pl main2.pl

针对两个或多个文件,Vim提供了强大的差异性检查和编辑功能。在命令行下执行 "vimdiff main.pl main2.pl"(或"vim -d main.pl main2.pl")可以查看文件main.pl和文件main2.pl的区别.
Vim会以垂直分割窗口的形式来显示两个文件.当你在一个窗口滚动浏览时,另一个窗口也会自动进行滚动。
101109170745.jpg
##################################
#
#            内容折叠
#
##################################
还有一种在流行的编辑器和IDEs中广泛存在的特性就是内容折叠。我认为折叠后程序结构显示更加清晰,也更便于程序的理解。
Vim支持六种内容折叠的方法:通过缩进、表达式、语法、内容的变化、标记、以及手动折叠。这取决于你所使用的方法。在所举的例子中,我将展示如何通过标记方法配置折叠。
为了通过标记方法开启Vim的内容折叠特性,需将以下几行添加到.vimrc配置文件:

" Folding configuration
set foldmethod=marker
" Edit and uncomment next line if you want non-default marker
"set foldmarker="{{{,}}}

101109170757.jpg
101109170751.jpg
##################################
#
#         Marks 标记
#
##################################
标记——是Vim中一个加速导航的特性。你可以在文本的任何地方设置一个标记,然后快速的跳回标记所在处。你可以同时设置多个标记。你也可以在多个文件中设置标记然后在它们之间来回切换。我经常在当前工作的地方设置mc(m代表标记,c代表当前所在处)标记,以便通过通过c返回到相同的地方。
##################################
#
#         垂直缩进显示
#
##################################
对于某些人来说,水平缩进还不足以满足其要求。他们需要一些垂直缩进的帮助来查看代码的相应部分。我并非这样的人,然而在我周围经常可以看到这样的特性,因而决定将其加入到codemonkey用户的.vimrc配置文件中。
你要做的就是将以下两行(译者注:非注释行)添加到.vimrc配置文件:

" This is for vertical indenting
set list
set listchars=tab:|
" NOTE the space char after last backslash.注意:最后一个反斜线后的空字符串。

“:set list”迫使Vim显示隐藏字符,如:制表符(tabulations)、行结束符以及文件结束符。“:set listchars=tab:| ”要求Vim只显示制表符,并使用带有一个空格符(“ ”) 的管道符(“|”) 取代Vim经常使用的“^I”。
101109170854.jpg
##################################
#
#         文件和缓存浏览
#
##################################
Vim支持同时编辑多个文件。你可以通过“vim main.pl main2.pl”运行Vim,然后使用“:next”和“:previous”在打开的文件之间进行导航。还有一种可能就是不退出Vim打开多个文件进行编辑。例如:要打开文件main2.pl,可以使用简单的“:e main2.pl”命令。
照例,也存在更好(更加方便)的方式达到此目的。Vim站点列出了少数的相关插件:有的只可以处理多个文件,有的只可以处理缓存,还有的可同时处理两种情况。其中之一个就是Srinath Avadhanula的winmanager插件,可以从http://www.vim.org/scripts/script.php?script_id=95得到该插件。
Vim的winmanager插件可利用jeff lanzarotta在http://www.vim.org/scripts/script.php?script_id=42提供的bufexplorer插件。
安装过程与之前类似,即:保存,减压,并转换为UNIX格式。然而,我们并不需要时刻开启该功能,我们可以添加如下影射行到.vimrc文件通过F2触发该功能:

map <F2> :WMToggle<CR>

101109170904.jpg
##################################
#
#      Tag explorer 标签管理器
#
##################################
官网地址:
http://www.vim.org/scripts/script.php?script_id=273
下载 taglist.zip 文件并解包
拷贝里面taglist.vim到 ~/.vim/plugin
拷贝里面taglist.txt到 ~/.vim/doc
(如没目录,手动创建)
在vim里,打":helptags"查看是否帮助信息已经加载完毕
要安装ctags
地址:http://ctags.sourceforge.net/
我对前面所做的改进感到高兴。最后我还希望的是某种方法可以简化我浏览代码的过程,我需要一种可以在代码的不同块之间以及代码的分层试图间快速切换方法。再次,我在Vim的站点上掏到了由Yegappan Lakshmanan制作的taglist插件,位于http://www.vim.org/scripts/script.php?script_id=273。下载的不是归档文件,你只需要将其复制到.vim/plug-in目录,并将“:Tlist”命令影射到F3键:

map <F3> :Tlist<CR>

有一点恼人的是taglist在可能的情况下会调节终端窗口的大小。因而,我更倾向于在.vimrc配置文件中以下面的方式关闭插件中的这个特性:

let Tlist_Inc_Winwidth = 0
map <F3> :Tlist<CR>

还可以用同一个键“打开/关闭”Taglist
------------------------------------
map <silent> <F9> :TlistToggle<cr>
------------------------------------
taglist靠右边
------------------------------------
let Tlist_Use_Right_Window = 1
------------------------------------
在taglist窗口中,可以使用下面的快捷键:
--------------------------------------------------------------------
<CR>          跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样
o             在一个新打开的窗口中显示光标下tag
<Space>       显示光标下tag的原型定义
u             更新taglist窗口中的tag
s             更改排序方式,在按名字排序和按出现顺序排序间切换
x             taglist窗口放大和缩小,方便查看较长的tag
+             打开一个折叠,同zo
-             将tag折叠起来,同zc
*             打开所有的折叠,同zR
=             将所有tag折叠起来,同zM
[[            跳到前一个文件
]]            跳到后一个文件
q             关闭taglist窗口
<F1>          显示帮助
--------------------------------------------------------------------
101109170846.jpg
##################################
#
#       Embperl 语法高亮
#
##################################
如果你使用Embperl perl模块来开发动态内容站点,那么你需要下载由Lukas Zapletal开发的Embperl语法高亮插件。设置的步骤类似于你可能使用过的为其它编程语言设置语法高亮的过程。
Embperl语法高亮插件位于http://www.vim.org /scripts/script.php?script_id=61。下载并解压到.vim/目录。相同的,如果你也像我一样使用UNIX/Linux,那么将所有文件通过dos2unix转换是一个好主意。归档中的vimrc_example包含你需要的配置例子,你可以将其放到.vimrc中。

[codemonkey@gucho .vim]$ ls
colors colors.zip Embperl_Syntax.zip
[codemonkey@gucho .vim]$ unzip Embperl_Syntax.zip
Archive: Embperl_Syntax.zip
inflating: colors/embperl_yellow.vim
  creating: syntax/
inflating: syntax/embperl.vim
inflating: vimrc_example
[codemonkey@gucho .vim]$ cat vimrc_example

Embperl语法高亮插件使用其自带的配色方案,因而不要在看到与你原先期望的不同颜色时担忧。
101109170837.jpg
##################################
#
#        Perl 语法编译器
#
##################################

:make # 来核对代码中的错误
:cnext和:cprevious # 详细检查其它错误消息
:clist # 会显示一个所有错误的清单

大多数的集成开发环境(IDE)都试图简化编写-编译-调试这一循环。其中一种简化方法就是在错误发生时自动将光标定位到错误代码处。Vim几乎可以为任何语言和编译器实现此功能。如果你知道编译器输出的内容格式,那么你可以通过配置Vim来解析那些错误并定位光标。因为我并非首个使用Vim的 Perl开发者,所以我立即假设已经有人编写了这样的错误语法解析编译器(听起来是不是很可怕?)。
让我们再次从Vim的web站点——http://www.vim.org/scripts/script.php?script_id=56
(更新下载地址:http://www.vim.org/scripts/script.php?script_id=2300)——下载这样的编译器。安装说明相当简单:只需复制perl.vim(由Lukas Zapletal开发)到你的.vim/compiler/目录。现在我们需要指定Vim使用perl编译器脚本文件,只需将以下几行添加到.vimrc文件:

autocmd BufNewFile,BufRead *.p? compiler perl

现在你可以使用“:make”来核对代码中的错误。如果你的代码中确实有问题,那么Vim会将光标定位于第一个错误处。你可以使用“:cnext”和“:cprevious”详细检查其它错误消息。“:clist”会显示一个所有错误的清单。
101109170820.jpg
##################################
#
#        Perldoc 集成
#
##################################
目前,大部分 IDE 都提供了另外一项重要功能:在线文档。Vim 也可以帮助帮助开发者实现这个功能。 默认情况下,Vim 在所有 UNIX 环境下都自带说明手册支持的。当你在脚本中使用系统命令,并且想要检查命令行参数的时候,这是非常有用的。只要把光标移动到你刚兴趣的词,并且按下 K 键。Vim 就会将光标所在的词作为关键字,并执行 "man 关键字" 命令了。这已经是很大的帮助,但是,还不够。
让我们来访问以下 Vim 网站并且下载 Perldoc 插件(由 Colin Keith 开发) , 地址为 http://www.vim.org/scripts/script.php?script_id=209 。解压缩 perldoc.zip 并且用 dos2unix 运行全部解压缩出来的文件 。另外,在你的 .vimrc 文件中将 F1 键指定为 ":Perldoc”也是个不错的主意。

autocmd BufNewFile,BufRead *.p? map <F1> :Perldoc<cword><CR>
autocmd BufNewFile,BufRead *.p? setf perl
autocmd BufNewFile,BufRead *.p? let g:perldoc_program='/usr/bin/perldoc'
autocmd BufNewFile,BufRead *.p? source /home/codemonkey/.vim/ftplugin/perl_doc.vim

101109170809.jpg

转载于:https://my.oschina.net/alphajay/blog/89832

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值