It's our wits that make us men.

VIM使用

Posted on By Junliang Huang

VIM使用

如果设置 /etc/vimrc 是影响所有用户,如果设置 /root/.vimrc 是影响 root 用户。

1.替换字符串

:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1 
 
:1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1 

2.导入文件

如要将a.txt的内容拷贝到b.txt中,可以执行如下步骤:
用vim打开b.txt。将光标定位到要复制插入的位置,然后进入命令模式中输入
:r!cat a.txt
保存退出:wq!搞定

3.删除当前行到结尾的全部内容

在命令模式下,输入:.,$d 一回车就全没了。

表示从当前行到末行全部删除掉

4.Taglist

4.1 安装Taglist

taglist 45.zip

下载后,解压得到两个文件./taglist/doc/taglist.txt; ./taglist/plugin/taglist.vim 分别复制到各自的目录下:
cp ./taglist/doc/taglist.txt /usr/share/vim/vim74/doc/
cp ./taglist/plugin/taglist.vim /usr/share/vim/vim74/plugin/

Taglist 安装:http://www.cnblogs.com/caosiyang/archive/2011/12/23/2299190.html
Taglist源码下载:https://vim.sourceforge.io/scripts/script.php?script_id=273
Taglist使用:http://blog.csdn.net/daniel_ustc/article/details/8299096

4.2 配置~/.vimrc文件

filetype plugin on 
let Tlist_Ctags_Cmd = '/usr/bin/ctags' "设置ctags命令目录
let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的 
let Tlist_Exit_OnlyWindow =  1 "如果taglist窗口是最后一个窗口,则退出vim 
let Tlist_Use_Left_Window = 1 "让taglist窗口在右侧显示
let Tlist_Auto_Open = 1 		"自动打开 taglist

4.3 命令与用法:

在vim中命令模式下使用:
:Tlist // 打开或者关闭当前文件的索引;
:TlistSync // 立即在打开的索引窗口中定位当前的光标所在位置属于哪个函数或者结构定义中。

左右窗口切换:Ctrl +ww

在Taglist窗口按
F1:打开帮助
 回车键: 跳到光标所在的标记的定义处(如将光标移到main函数,按回车键)
o: 新建一个窗口,跳到标记定义处
p: 预览标记定义(仍然在taglist窗口)
空格:显示标记的原型(如函数原型)
u:更新标记列表(比如源文件新增了一个函数,并在保存后,可在taglist窗口按u)
 s:选择排序字段
d:删除光标所在的taglist文件(如用vi打开了两个文件f1.c,f2.c可以删除f1.c的标记)
x:放大/缩小taglist窗口
+:展开(指标记)
-:折叠
*:全部展开
=:全部折叠
[[:将光标移到前一个文件的起点
]]:将光标移到后一个文件的起点
q:退出taglist窗口
F1:关闭帮助

5.vimrc(/root/.vimrc)

set nu
syntax on
set ai   [自动对齐功能]
set sw=4 [shiftwidth缩进量长度为4]
set ts=4 [tabstop制表符的长度为4]

6.ctags的使用

vim 用tag来定位说要查找的内容:
ctags -R *
#"-R"表示递归创建,也就包括源代码根目录下的所有子目录下的源程序。"tags"文件中包括这些对象的列表
ctrl+] 跳到所要找的函数
ctrl+o 返回
用命令行。在运行vim的时候加上”-t”参数,例如:
vim -t aa
其实用grep "aa" -nr也可以实现。

7.多行删除

在命令模式下,输入:.,$d 一回车就全没了。(表示从当前行到末行全部删除掉)

8.拷贝文件

例如:将a.txt的内容拷贝到b.txt中,可以执行如下步骤:
用vim打开b.txt。将光标定位到要复制插入的位置,然后进入命令模式中输入
:r!cat a.txt

保存退出:wq!搞定

9.在一个脚本里面粘贴多行(解决粘贴时行首出现很多缩进和空格的问题)

1,在拷贝前输入:set paste (这样的话,vim就不会启动自动缩进,而只是纯拷贝粘贴)
2,拷贝完成之后,输入:set nopaste (关闭paste)

10.撤销和回退

u撤销上一步的操作 Ctrl+r 恢复上一步被撤销的操作