————————————————vim使用简介———————————————
在 vi 中数字与命令结合往往表示重复进行此命令, 若在扩展模式的开头出现则表示行号定位. 如11,12s/old/new/g
移动到文件开始和结束位置和当前位置(gg,G)、快速定位到当前光标所在变量或函数的定义处(gf)、自动对齐C和C++程序(先gg再=再G)、自动补全变量名,函数名和字符串ctrl+n或ctrl+p、复制(yy,nyy,ctrl+v配合y)、粘贴(p,P)、删除(dd,ndd,ctrl+v配合d,x)、撤销(u,ctrl+r)、查找(/string配合n或N)、查看匹配的另外一半符号(%)。
还有使用ctags,cscope等插件可以用来阅读linux内核源码,其功能真的很好很强大
但其不过是个工具,必要的时候可以查看其在线帮助文档:直接在shell命令行运行vimtutor即可
1、将光标移动到文件的开始位置或结束位置:
gg或1G 将光标移动到文件的第一行。
G 将光标移动到文件的最后一行。
对当前行做标记,例如ma,即标记当前行为a行,mb,即标记当前行为b行,mc,即...等等。(m后面必须跟字母)
要回到a行使用'a。要回到b行使用'b。
2 、vim中进行C和C++源码缩进操作:
a、全局缩进:
gg+=+G
先gg跳转到文件开始位置,再输入=,再输入G,vim将自动进行C和C++源码的缩进操作。
b、局部缩进:
右缩进: 按v选定后按 = 就是自动缩进选定的代码,内部递归的缩进都做到了
行右移>:该命令用于将一行右移一个Tab
行左移<:该命令用于将一行左移一个Tab
3、vim中删除字符,并进入插入模式,修改为想要的字符串:
/ 要删除的字符,后cw ,然后修改为想要的字符串。然后n,进入下一个字符,然后"."就可 以重复上面的操作。
cnw 是删除n个字符,并进入插入模式。
例如将所有的four替换为five,方法为:
/four 找到four
cw 删除four,并进入插入模式。
five 输入five
n 找到下一个four (首先用ESC进入命令行模式)
. 重复上面的操作
这样就可以完成将所有的four替换为five。
4、vim中“上下左右”移动光标:
a、普通移动:
h 将光标向左移动。
j 将光标向下移动,j就像向下箭头
k 将光标向上移动。
l 将光标向右移动,L就像向右箭头
M 移动光标到屏幕的中间一行.
0到行首,$到行尾。
注意: 大写J是两行和并,要特别注意
大写K是光标所指标识符的man帮助页
b、跳到与当前符号匹配的另外一半符号所在位置:
在vim中使用%可以匹配另外一半符号出现的位置。
例:
void fun(int argc,char *argv)
{
//代码
}
当我们将光标放在第一个大括号哪里,想找到另外一个与之匹配的大括号时,使用%。就可以将光标跳到与之匹配的大括号处
c: :后边加行号+enter 或行号+G 就是跳到这一行
5、vim复制:
复制一个单词: yw
复制n个单词: nyw
复制一行: yy或大写Y
复制n行: nyy
拷贝从当前光标到光标所在行首的内容: y0 (包括空格)
拷贝从当前光标到光标所在行尾的内容: y$
6、vim粘贴:
在vim中使用p或P进行粘贴。
小写p是表示在当前位置之后,大写P表示在其之前
7、vim剪切:
x(小写,同Del) 剪切一个字符,使用
dd 剪切一行,使用
ndd 剪切n行,使用
dw 删除一个单词并保持命令模式
cw 删除一个单词并进入插入模式,
cc 删除一行并进入插入模式。
r 然后输入的字母将替换当前字母并保持命令模式,R则是不停的替换(一个挨着一个)。直到按esc
d0 删除从当前光标到光标所在行首的内容. (包括空格)
d$(或D) 删除从当前光标到光标所在行尾的内容.
y:copy,拷贝
d:delete,删除
p:past,粘贴
c:clip,剪掉
8、高级复制剪切粘贴操作
a. 可按小写字母v进入可视化操作,然后用方向键选中相应块,
后可用y进行复制,d进行剪切,p进行粘贴。
b. 也可按大写字母V,与小写不同的是,大写的最小选中单位为行,而小写的为一个字符。
c.块操作:ctrl+小写v,将所选定块中对某一行的操作,应用到选定块的每一行
示例:ctrl+小写v,进入块操作————>移动光标选定块————>大写I//————>esc,结果为在选定块的每一行前面都加上//
9、vim撤销:
撤销: u (undo)
恢复: ctrl+r (redo,ctrl表示启用R键的第二功能,因为R的第一功能为替换Replace)
在光标当前位置处重复上一次操作: .
10、vim查找:
用/string(或?string),查找到以后, 再输入 n 查找下一个匹配处, 输入 N 反方向查找.
/ 表示向下查找, ? 表示向上查找.
一般来说是区分大小写的, 要想不区分大小写, 那得先输入:setignorecase,
可用:set noignorecase 来关闭这项功能。
11、vim进入头文件,从头文件中返回:
进入头文件:
将光标移动到指定的头文件中,在命令行中键入gf就进入指定的头文件中。
返回原文件:
当对头文件编辑结束后,键入ctrl+^就返回到原文件中。
12、TAB
TAB 就是制表符, 单独拿出来做一节是因为这个东西确实很有用.
> 输入此命令则光标所在行向右移动一个tab.
5>> 输入此命令则光标所在行及后面4 行向右移动一个tab.
:12,24> 此命令将12行到14行的数据都向右移动一个tab.
:12,24>> 此命令将12行到14行的数据都向右移动两个tab.
那么如何定义tab 的大小呢? 有人愿意使用 8 个空格位, 有人用4个, 有的用2个.
vim 能帮助你.以下的设置一般也都先写入配置文件中, 免得老敲.
如fedora的vim配置文件在/etc/vimrc中,ubuntu的在/etc/vim/vimrc中
:setshiftwidth=4 设置自动缩进 4 个空格, 当然要设自动缩进先.
:set sts=4 即设置 softtabstop为 4. 输入 tab 后就跳了 4 格.
:set tabstop=4 实际的 tab 即为 4 个空格, 而不是缺省的 8 个.
:set expandtab 在输入 tab 后, vim 用恰当的空格来填充这个tab.
若在配置文件中设置了Tab键,则在写Makefile时一定要在打开的文件使用
:set noexpanded使Tab不转换才能成功
13、快速输入字符
abbr 即缩写. 这是一个宏操作, 可以在编辑模式中用一个缩写代替另一个
字符串. 比如编写java文件的常常输入 System.out.println,这很是麻烦, 所以应该用缩写来减少敲字. 可以这么做:
:abbr sprtSystem.out.println+enter
以后在输入sprt后再输入其他非字母符号, 它就会自动扩展为System.
out.println
14、vim的ctags插件的使用
得先安装上ctags插件
sudo apt-get install cscope即可
a.生成tags标签文件ctasg -R *
b.跳到某一变量、函数名的定义处
vim -t name
快捷键:先把光标移到变量名或函数名上
ctrl加]直接跳到这个变量或函数定义处
ctrl加t退回到原来的地方
c.修改vim配置文件,在配置文件最后添加
set tasg=标签文件所在路径/tags
d.在vim命令行模式下执行:tags xxx,即可找到想要的函数xxx,等同于ctrl加 ]