Linux Vim快捷键操作命令整理
CentOS安装Vim所依赖包
1.首先使用Ubuntu(所在ip为192.168.16.230)翻墙登陆,下载其上面的vim相关插件到Ubuntu的下载目录下:
cd ~/下载/
?script_id=273
?script_id=1581
?script_id=197
?script_id=95
?script_id=159
?script_id=31
?script_id=2620
?src_id=9679
?script_id=42
?script_id=311
使用sftp将这些压缩包上传到目标服务器CentOS 6.2上面
cd /usr/local/src
sftp root@192.168.16.237
ls
put a.vim ***
quit
退出sftp,下面开始安装。
2.在主目录下新建目录,开始安装
mkdir -p .vim/plugin
mkdir -p .vim/doc
mkdir -p .vim/tags
mkdir -p ~/.vim/syntax
将上述文件包转移到~/.vim/下面,逐个安装插件:
2.1 ctags插件(Exuberant Ctags)
生成tag文件的插件,从如下官网
下载到如下源码包ctags-5.8.tar.gz,下面使用源码安装方式
tar zxvf ctags-5.8.tar.gz
cd ctags-5.8
./configure
make
make install
cd ../
发现ctags是个可执行文件,被复制到/usr/local/bin下面了。你可以使用
ctags --help
来查看该执行文件的命令选项。
tags文件是由ctags程序产生的一个索引文件, ctags程序其实叫"Exuberant Ctags", 是Unix上面ctags程序的替代品, 并且比它功能强大, 是大多数Linux发行版上默认的ctags程序.
2.2 taglist插件
这个是浏览源代码的插件,直接将压缩包解压即可自动安装
unzip taglist_46.zip
会在plugin和doc中各生成一个文件taglist.vim和taglist.txt
相应地在我的.vimrc中如下配置:
let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window = 0 "在右侧窗口中显示taglist窗口 (默认是0)
注意taglist插件需要tags文件,所以它需要ctags或cscope生成的tags文件。也就是说,这几个插件是紧密联系的。
2.3 Lookup插件
利用插入补全方式在项目中快速查找文件,缓存区,目录的插件,我们从
?script_id=1581
下载源码包lookupfile-1.8.zip进行安装
unzip lookupfile-1.8.zip
将在doc,plugin,autoload目录下分别生成lookupfile.txt,lookupfile.vim和lookupfile.vim
注意autoload目录是自动生成的。
Lookupfile插件还需最新的genutils插件支持,否则你打开vim时会有警告:
lookupfile: You need a newer version of genutils.vim plugin
从下面的地址下载
?script_id=197
得到genutils-2.5.zip,下面直接解压就可自动安装好
unzip genutils-2.5.zip
发现它在autoload和plugin目录中都放入了文件genutils.vim
Lookupfile在查找文件时,需要使用tags文件,它可以使用ctags命令生成的tag文件,不过效率比较低,我们专门给它生成了一个包含项目中所有文件名的tag文件。下面是具体步骤:
我编写了下面的shell脚本make_lookupfile_tag.sh,为trafficserver-3.2.4的源代码,生成一个文件名tag文件。
#!/bin/bash
# generate tag file for lookupfile plugin
echo -e "!_TAG_FILE_SORTED\t2\t/2=foldcase/" > filenametags
find . -not -regex '.*\.\(png\|gif\)' -type f -printf "%f\t%p\t1\n" | \
sort -f >> filenametags
回想一下我们在”使用标签(tag)文件“一文中介绍的tag文件的格式。再对照脚本命令来看:
echo命令用来生成filenametags文件中的”!_TAG_FILE_SORTED”行,表明此tag文件是经过排序的。
find命令用来查找所有类型为普通文件,文件后缀名不是.png和.gif的文件,找到的文件按”文件名\t文件路径\t1″的格式输出出来。
sort命令则把find命令的输出重新排序,然后写入filenametags文件中
在~/program_dev/trafficserver-3.2.4/目录下运行该脚本,
chmod +x make_lookupfile_tag.sh
/bin/bash make_lookupfile_tag.sh
会生成一个名为filenametags的文件,包含了trafficserver-3.2.4目录下的所有文件的名字及其所在目录,你可以打开该文件查看并验证。
现在我们需要让lookupfile插件知道到哪去找文件名tag文件。我们假定vim当前工作目录为~/program_dev/trafficserver-3.2.4/,执行下面的命令:
:let g:LookupFile_TagExpr = '"./filenametags"'
注:如果不设定g:LookupFile_TagExpr的值,那么lookupfile插件会以tags选项定义的文件作为它的tag文件。
当恢复前次会话时,就给lookupfile插件定义了tag文件。