1.search
/xxx(?xxx)
表示在整篇文档中搜索匹配xxx的字符串, /表示向下查找, ?表示向上查找, 其中xxx可以是正则表达式, 默认区分大小写。
【区分:set ignorecase|不区分:set noignorecase】, 查找到后, 再输入n查找下一个匹配处, 输入N反向查找。
*(#)
当光标停留在某个单词上时, 输入这条命令表示查找与该单词匹配的下(上)一个单词, 同样的,输入n查找下一个匹配处,输入N反向查找。
g*(g#)
此命令与上条命令相似, 只不过他不完全匹配光标所在处的单词, 而是匹配包含该单词的所有字符串。
gd
本命令查找与光标所在单词相匹配的单词, 并将光标停留在文档的非注释段中第一次出现这个单词的地方。
%
本命令查找与光标所在处相匹配的反括号, 包括()[]{}, 并且定位于反括号处。
F(f)x
本命令表示在光标所在行进行查找,查找光标右(左)方第一个x字符. 输入 ; 表示继续往下找,输入 , 表示反向查找
2. 快速移动光标
w(e) 移动光标到下一单词
b 移动光标到上一单词
0 移动光标到本行最开头
$ 移动光标到本行结尾处
^ 移动光标到本行最开头的字符处
H 移动光标到屏幕的首行
M 移动光标到屏幕的中间一行
L 移动光标到屏幕的尾行
gg 移动光标到文档首行
G 移动光标到文档尾行
c-f page down
c-b page up
`. 移动光标到上一次的修改点
3. 拷贝, 删除与粘贴
yw 表示拷贝从当前光标到光标所在单词结尾的内容
dw 表示删除从光标到光标所在单词
y0 表示拷贝从当前光标到光标所在行首的内容
d0 表示删除从当前光标到光标所在行首的内容
y$ 表示拷贝从当前光标到光标所在行尾的内容
d$ 表示删除从当前光标到光标所在行尾的内容
yfa 表示拷贝从当前光标到光标后面第一个a字符之间的内容
dfa 表示删除从当前光标到光标后面第一个a字符之间的内容
yy 表示拷贝光标所在行
dd 表示删除光标所在行
D 表示删除从当前光标到光标所在行尾的内容
4 数字与命令
在vi中数字与命令结合往往表示重复进行此命令, 若在扩展模式的开头出现则表示行号定位. 如:
5fx 表示查找光标后第 5 个 x 字符.
5w 移动光标到下五个单词.
5yy 表示拷贝光标以下 5 行.
5dd 表示删除光标以下 5 行.
y2fa 表示拷贝从当前光标到光标后面的第二个a字符之间的内容.
:12,24y 表示拷贝第12行到第24行之间的内容.
:12,y 表示拷贝第12行到光标所在行之间的内容.
:,24y 表示拷贝光标所在行到第24行之间的内容. 删除类似.
5.括号匹配:
% 可以让光标从它当前所在的括号跳转到与它相匹配的括号上去, 对花括号和
圆括号, 方括号都有效, 常用于手工检查括号是否匹对.
标示位置
--------
你可以在档案□做些标记再随时返回被标记的位置.
m char (MARK) 把这个地方标示成 char
' char (quote character) 跳到被标为 char的那一行
'' (按两次') 回到刚才的位置
char 可以是小写的 a-z中的任一个 . 一个标记在除了下面的这两种情况
外会一直存在
1) 重覆使用相同的标示 char .
或 2) 删掉了被标示的那一行.
文字段落
--------------
有时候一段一段的移动游标会比较方便.我们可以用 {,},(,) 来达到这些功能
{ (左大括号) 跳到上一段的开头
} (右大括号) 跳到下一段的的开头.
( (左小括号) 移到这个句子的开头
) (右小括号) 移到下一个句子的开头
[[ 跳往上一个函式
]] 跳往下一个函式
vim+ctags+caglist