注意:
Linux、MAC下的全局目录是在/usr/vim/share/vim目录中,我们为每个用户或者为自己的用户单独配置一个,可以这样做:
debian:~# cp /usr/share/vim/vimrc ~/.vimrc
debian:~# vim ~/.vimrc
然后直接编辑这个文件就行了,在当前用户的根目录,名字叫.vimrc
Vim中有三类模式,正常模式(normal),插入模式(insert)和可视模式(visual)。
正常模式中可以执行命令。默认情况下,Vim启动后会进入这个模式。
插入模式中可以插入文本。
可视模式中可以可视化地选择一段文本,然后仅针对这段文本执行命令或操作。
1)nB:n代表数字,表示B命令可重复n次
2)大写字母与小写字母命令相同,但方向相反
3) (输入:jump,看跳过的位置)
(输入:marks,可看到所做的特殊标记)
一. vim基本操作
1. vim复制
vim有12个粘帖板,分别是0,1,2,...,8,9,",+,。可用:reg命令来查看各个粘帖板里面的内容。
在vim用y复制只是复制到"(双引号)粘帖板中,用p命令即粘帖该粘帖板里面的内容。
2. 插入
i:在光标的前面插入字符
a:在光标的后面插入字符
o:在当前行的下面插入一个新行,并进入插入模式
O:在当前行的上面插入一个新行,并进入插入模式
3. 跳转
ctrl+]: 跳转至定义处(建立tag)
ctrl+T:跳回前一个位置
ctrl+O:跳回到较早的位置
4. 帮助:
查看某个命令的:help command;
查看移动光标的命令:help Q_lr;
查看插入模式下的上箭头的功能:help i_Up
5. 移动(光标移动跳到)
n$:移动至行尾;
数字0:移动至行首;
^:移动至当前行的第一个非空白字符;
fh:单字符搜索命令,f=find,在当前行上查找下一个字符h(只向右查找,不能换行),分号;可重复该命令, 逗号往相反方向重复该命令;
Fh:同上,向左查找;
th:同fh, t=to, 只是光标停在h的前面;
%:跳转到与当前光标下的括号相匹配的那一个括号上去,适合与[],(),{}成对的括号;
nG(大写):光标移动到第n行;
gg:移动到文档第一行;
nw:将光标向前(右)移动n个word,(其中,;-=/等都可以当作分割符),每次移动光标停在word的首字符上;
nW:分割符是空格;
nb:将光标向后移动n个word;
nB:分割符是空格;
e:与w类似,只是每次移动后光标停在word的末字符上; nE:分割符是空格;
ge:与nb类似,只是光标停在word的末字符上;
ctrl+o:光标跳转到之前的一个位置,o=older
``:两个开单引号,跳回上一个位置,只能在两点直接来回切换
(注:输入:jump,看跳过的位置)
有名标记----ma(a~z):将光标所在的位置标记为a(或a~z),m=mark,此后可用'a,跳回a标记的位置;
(注:输入:marks,可看到所做的特殊标记)
6. 显示当前位置信息:ctrl+G
7. zz:保存并退出文件,或推出help文件,或将当前行置于窗口中央;
8. 删除
x: 删除单个字符
dw: 删除一个word, dnw: 删除光标处开始后的4个word, d$(=D): 删除从光标到行尾的内容
c: 改变文本,与d类似,先删除并进入插入模式
cw: 删除一个word, 并进入插入模式
cc: 删除整行,保持缩进; c$(=C): 类似d$
r: 替换当前光标的字符, rT: 将当前光标的字符替换为T
.: 重复执行上一次命令
9. 查找
ctrl+]: 跳到定义处
ctrl+T: 跳回来
:/string: 搜索字符串string (不需要输入:,直接按/,就可输入字符串),注:输入/后,可以通过上下箭头翻看历史的搜索
?string:往相反方向搜索字符串string
n: 搜索下一个匹配
N: 往相反方向搜索下一个匹配
可用光标放到某个函数名上,然后按*号键,则会将该函数名作为字符串进行搜索;
查找独立单词,如/the,显然there也会匹配,此时可以输入:/\<the\>来只查找the这个词,\表示一个word的结束处;
搜索正则表达式:
/the^: 只匹配行开头是the的字符串
/the$: 只匹配行尾是the的字符串
匹配单子符: /t.h: 3个字符的字符串,前一个位t,后一个为h,中间任意;
10. 屏幕控制
ctrl+u: 向上翻半屏 ctrl+b: 向上(后backword)翻整屏
ctrl+d: 向下翻半屏 ctrl+f: 向下(前forword)翻整屏
二. ctags:
1.安装后,在源代码目录(最上层目录)下shell运行命令:ctags -R, 即可建立tag文件。
2.如果修改程序后,如增加函数,删除变量等,此时需要重新运行命令:ctags -R, 以使tags文件得到更新。
3.#vim usb.c,进入vim环境后,输入":Tlist",即可在窗口中显示tag列。
4. ctrl+]:在函数调用的地方跳转到函数定义的地方
ctrl+t:返回上一个查找的地方
注:所生成的cscope.out和tags文件要在打开VIM所在的文件夹,否则VIM无法找到相关符号信息。
三. 文件浏览器和窗口管理器 -- 插件: WinManager,安装之后可在vim中看到有文件浏览的地方
1. 安装
1) http://www.vim.org/scripts/script.php?script_id=95 下载
2) 在 ~/.vim 目录下解压winmanager.zip,(unzip)
3) 在Normal模式下,输入wm,即可看到浏览文件的窗口; 注:是normal模式,按ESC后直接敲wm即可,不是:wm。
4) 再次输入wm后,窗口将关闭。
四. cscope
1. 安装后,进入根目录,输入$ cscope -Rbq,将生成3个文件:cscope.in.out,cscope.out,cscope.po.out。
2. 进入vim后第一件事是要把刚才生成的cscope文件导入到vim中来, 用下面的命令:cs add /usr/src/linux-2.6.38/cscope.out /usr/src/linux-2.6.38
上面这条命令很重要, 必须写全, 不能只写前半句。
3. 在vim下输入:cs,即可看到cscope的用法。
:cs find g vim_strsave---查找函数vim_strsave()的定义
:cs find c vim_strsave---查找vim_strsave()到底在那些地方被调用过
4. 快捷键设置
在vimrc中加入:nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR>
即表示可用ctrl+\+s来执行上面的命令。
五. MiniBufExplorer: 多文档编辑器
打开多个文档时,自动创建多个buffer,并在最上面的一行显示各文件
ctrl+TAB:切换各个buffer
点击minibufexplorer一行,光标处在该窗口内,输入d即可删除光标所指的文件
六. 进入可视模式 v
1. 当光标移动时,就能看到有一些文本被高亮显示了,它们就是被选中的内容。
2. 三种可视模式(用方向键移动光标)
1)v: 一个字符一个字符地选。从按下v的那个字符起,一直到光标所移动到的位置之间的内容都被选中。
2)V: 一行一行地选。从按下V的那行起,一直到光标所移动到的行之间的所有行都被选中。
3)Ctrl-v: 它选中屏幕上的一个矩形区域。以按下Ctrl-v的位置为一个角,光标所在位置为它的对角。
3. 离开可视模式:按下ESC
4.可视模式下的编辑
在可视模式下删除文本: d
删除所选中的部分: D
删除所选中部分所在的行。即使没有把一行都选中,也把一行都删除。
v:复制选中的部分。
c:删除所选中的部分并切换到输入模式。
C: 删除所选中的部分所在的行并切换到输入模式。
合并行:当选中想合并在一起的行以后,按下J(大写)
>:所选中的部分都缩进一个tab。
vim中执行shell命令
1):!command
不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容
例如:!ls -l
特别的可以运行:!bash来启动一个bash shell并执行命令,不需要退出vim
2) :r !command
将shell命令command的结果插入到当前行的下一行
例如:r !date,读取系统时间并插入到当前行的下一行。
3):起始行号,结束行号 !command
将起始行号和结束行号指定的范围中的内容输入到shell命令command处理,并将处理结果替换起始行号和结束行号指定的范围中的内容
例如:62,72 !sort,将62行到72行的内容进行排序
可以只指定起始行,例如:62 !tr [a-z] [A-Z],将62行的小写字母转为大写字母
当前光标所在行,除可以指定行号外,也可以用.表示,例如:. !tr [a-z] [A-Z],将当前行的小写转为大写
4):起始行号,结束行号 w !command
将起始行号和结束行号所指定的范围的内容作为命令command的输入。不会改变当前编辑的文件的内容
例如
:62,72 w !sort,将62行到72行的内容进行排序,但排序的结果并不会直接输出到当前编辑的文件中,而是显示在vim敲命令的区域
Linux、MAC下的全局目录是在/usr/vim/share/vim目录中,我们为每个用户或者为自己的用户单独配置一个,可以这样做:
debian:~# cp /usr/share/vim/vimrc ~/.vimrc
debian:~# vim ~/.vimrc
然后直接编辑这个文件就行了,在当前用户的根目录,名字叫.vimrc
Vim中有三类模式,正常模式(normal),插入模式(insert)和可视模式(visual)。
正常模式中可以执行命令。默认情况下,Vim启动后会进入这个模式。
插入模式中可以插入文本。
可视模式中可以可视化地选择一段文本,然后仅针对这段文本执行命令或操作。
1)nB:n代表数字,表示B命令可重复n次
2)大写字母与小写字母命令相同,但方向相反
3) (输入:jump,看跳过的位置)
(输入:marks,可看到所做的特殊标记)
一. vim基本操作
1. vim复制
vim有12个粘帖板,分别是0,1,2,...,8,9,",+,。可用:reg命令来查看各个粘帖板里面的内容。
在vim用y复制只是复制到"(双引号)粘帖板中,用p命令即粘帖该粘帖板里面的内容。
2. 插入
i:在光标的前面插入字符
a:在光标的后面插入字符
o:在当前行的下面插入一个新行,并进入插入模式
O:在当前行的上面插入一个新行,并进入插入模式
3. 跳转
ctrl+]: 跳转至定义处(建立tag)
ctrl+T:跳回前一个位置
ctrl+O:跳回到较早的位置
4. 帮助:
查看某个命令的:help command;
查看移动光标的命令:help Q_lr;
查看插入模式下的上箭头的功能:help i_Up
5. 移动(光标移动跳到)
n$:移动至行尾;
数字0:移动至行首;
^:移动至当前行的第一个非空白字符;
fh:单字符搜索命令,f=find,在当前行上查找下一个字符h(只向右查找,不能换行),分号;可重复该命令, 逗号往相反方向重复该命令;
Fh:同上,向左查找;
th:同fh, t=to, 只是光标停在h的前面;
%:跳转到与当前光标下的括号相匹配的那一个括号上去,适合与[],(),{}成对的括号;
nG(大写):光标移动到第n行;
gg:移动到文档第一行;
nw:将光标向前(右)移动n个word,(其中,;-=/等都可以当作分割符),每次移动光标停在word的首字符上;
nW:分割符是空格;
nb:将光标向后移动n个word;
nB:分割符是空格;
e:与w类似,只是每次移动后光标停在word的末字符上; nE:分割符是空格;
ge:与nb类似,只是光标停在word的末字符上;
ctrl+o:光标跳转到之前的一个位置,o=older
``:两个开单引号,跳回上一个位置,只能在两点直接来回切换
(注:输入:jump,看跳过的位置)
有名标记----ma(a~z):将光标所在的位置标记为a(或a~z),m=mark,此后可用'a,跳回a标记的位置;
(注:输入:marks,可看到所做的特殊标记)
6. 显示当前位置信息:ctrl+G
7. zz:保存并退出文件,或推出help文件,或将当前行置于窗口中央;
8. 删除
x: 删除单个字符
dw: 删除一个word, dnw: 删除光标处开始后的4个word, d$(=D): 删除从光标到行尾的内容
c: 改变文本,与d类似,先删除并进入插入模式
cw: 删除一个word, 并进入插入模式
cc: 删除整行,保持缩进; c$(=C): 类似d$
r: 替换当前光标的字符, rT: 将当前光标的字符替换为T
.: 重复执行上一次命令
9. 查找
ctrl+]: 跳到定义处
ctrl+T: 跳回来
:/string: 搜索字符串string (不需要输入:,直接按/,就可输入字符串),注:输入/后,可以通过上下箭头翻看历史的搜索
?string:往相反方向搜索字符串string
n: 搜索下一个匹配
N: 往相反方向搜索下一个匹配
可用光标放到某个函数名上,然后按*号键,则会将该函数名作为字符串进行搜索;
查找独立单词,如/the,显然there也会匹配,此时可以输入:/\<the\>来只查找the这个词,\表示一个word的结束处;
搜索正则表达式:
/the^: 只匹配行开头是the的字符串
/the$: 只匹配行尾是the的字符串
匹配单子符: /t.h: 3个字符的字符串,前一个位t,后一个为h,中间任意;
10. 屏幕控制
ctrl+u: 向上翻半屏 ctrl+b: 向上(后backword)翻整屏
ctrl+d: 向下翻半屏 ctrl+f: 向下(前forword)翻整屏
二. ctags:
1.安装后,在源代码目录(最上层目录)下shell运行命令:ctags -R, 即可建立tag文件。
2.如果修改程序后,如增加函数,删除变量等,此时需要重新运行命令:ctags -R, 以使tags文件得到更新。
3.#vim usb.c,进入vim环境后,输入":Tlist",即可在窗口中显示tag列。
4. ctrl+]:在函数调用的地方跳转到函数定义的地方
ctrl+t:返回上一个查找的地方
注:所生成的cscope.out和tags文件要在打开VIM所在的文件夹,否则VIM无法找到相关符号信息。
三. 文件浏览器和窗口管理器 -- 插件: WinManager,安装之后可在vim中看到有文件浏览的地方
1. 安装
1) http://www.vim.org/scripts/script.php?script_id=95 下载
2) 在 ~/.vim 目录下解压winmanager.zip,(unzip)
3) 在Normal模式下,输入wm,即可看到浏览文件的窗口; 注:是normal模式,按ESC后直接敲wm即可,不是:wm。
4) 再次输入wm后,窗口将关闭。
四. cscope
1. 安装后,进入根目录,输入$ cscope -Rbq,将生成3个文件:cscope.in.out,cscope.out,cscope.po.out。
2. 进入vim后第一件事是要把刚才生成的cscope文件导入到vim中来, 用下面的命令:cs add /usr/src/linux-2.6.38/cscope.out /usr/src/linux-2.6.38
上面这条命令很重要, 必须写全, 不能只写前半句。
3. 在vim下输入:cs,即可看到cscope的用法。
:cs find g vim_strsave---查找函数vim_strsave()的定义
:cs find c vim_strsave---查找vim_strsave()到底在那些地方被调用过
4. 快捷键设置
在vimrc中加入:nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR>
即表示可用ctrl+\+s来执行上面的命令。
五. MiniBufExplorer: 多文档编辑器
打开多个文档时,自动创建多个buffer,并在最上面的一行显示各文件
ctrl+TAB:切换各个buffer
点击minibufexplorer一行,光标处在该窗口内,输入d即可删除光标所指的文件
六. 进入可视模式 v
1. 当光标移动时,就能看到有一些文本被高亮显示了,它们就是被选中的内容。
2. 三种可视模式(用方向键移动光标)
1)v: 一个字符一个字符地选。从按下v的那个字符起,一直到光标所移动到的位置之间的内容都被选中。
2)V: 一行一行地选。从按下V的那行起,一直到光标所移动到的行之间的所有行都被选中。
3)Ctrl-v: 它选中屏幕上的一个矩形区域。以按下Ctrl-v的位置为一个角,光标所在位置为它的对角。
3. 离开可视模式:按下ESC
4.可视模式下的编辑
在可视模式下删除文本: d
删除所选中的部分: D
删除所选中部分所在的行。即使没有把一行都选中,也把一行都删除。
v:复制选中的部分。
c:删除所选中的部分并切换到输入模式。
C: 删除所选中的部分所在的行并切换到输入模式。
合并行:当选中想合并在一起的行以后,按下J(大写)
>:所选中的部分都缩进一个tab。
vim中执行shell命令
1):!command
不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容
例如:!ls -l
特别的可以运行:!bash来启动一个bash shell并执行命令,不需要退出vim
2) :r !command
将shell命令command的结果插入到当前行的下一行
例如:r !date,读取系统时间并插入到当前行的下一行。
3):起始行号,结束行号 !command
将起始行号和结束行号指定的范围中的内容输入到shell命令command处理,并将处理结果替换起始行号和结束行号指定的范围中的内容
例如:62,72 !sort,将62行到72行的内容进行排序
可以只指定起始行,例如:62 !tr [a-z] [A-Z],将62行的小写字母转为大写字母
当前光标所在行,除可以指定行号外,也可以用.表示,例如:. !tr [a-z] [A-Z],将当前行的小写转为大写
4):起始行号,结束行号 w !command
将起始行号和结束行号所指定的范围的内容作为命令command的输入。不会改变当前编辑的文件的内容
例如
:62,72 w !sort,将62行到72行的内容进行排序,但排序的结果并不会直接输出到当前编辑的文件中,而是显示在vim敲命令的区域