0 ------------> 移动光标到行首
$ -------------->移动光标到行尾
G -------------->移动光标到文档最后一行
nG ------------->移动光标到文档的第n行
gg -------------->移动光标到文档第一行 (1G)
n<Enter> ----> 向下移动 n行
/word -------->在光标下查找 "word"
?word ------->向光标之上查找 word
n -------------->重复前一个搜索动作
N-------------->反向重复前一个搜索
:n1,n2s/word1/word2/g ------------->把 n1行和n2行之间的 word1替换为 word2
:1,$s/word1/word2/g -------------->把 整个文档的word1替换为 word2
:1,$s/word1/word2/gc ----------->把 整个文档的word1替换为 word2,并要求用户确认
x, X---->x 向后删一个字符(del),X 为前删一个字符(backspace)
ndd --->删除光标下的 n行
dd --->删除光标所在的一行 (1dd)
d$---->删除从光标到行最后的字符
d0---->删除从光标到行首的字符
yy (或者 :.y, Y) ----->复制光标所在的行
nyy(或者nY)--->复制光标所在及向下的n行
y0, y$---->(猜猜是什么?)
p, P---->p 将复制的数据贴在光标下一行,P为贴在上一行
u---->复原前一个动作 (undo)
.(dot) ---->重复前一个动作
o,O---> o是在光标行的下面插入一行, O则是光标行上面插入
set nu ---> 显示行号
set nonu --->取消显示行号
:! command ---->暂时离开 vi执行 command
:w filename ---->将文档另存为 filename
:r filename ---->读入另一个文件
:n1,n2 w filename --->将 n1,n2行之间的保存为一个文件。
字符串替换:
替换第n行所有的字符串:
:ns/old/new/g
替换当前行:
:.s/old/new/g
替换最后一行:
:$s/old/new/g
替换从m行到 n行:
:m,ns/old/new/g
替换所有行:
:1,$s/old/new/g
或者:
:%s/old/new/g
字符拷贝:
拷贝当前 cursor下的字符:
yl
拷贝从 cursor下开始的n个字符:
ynl
拷贝从cursor下开始到行结尾的字符:
y$
拷贝从行起始到cursor结束的字符:
y0
单词拷贝:
拷贝一个单词:
yw (先把光标定位在单词的起始位置)
拷贝n个单词:
ynw
行拷贝 (先要进入命令模式):
拷贝第 n行:
:ny
拷贝当前行:
:.y
拷贝最后一行:
:$y
拷贝一组行:
:m,ny
拷贝所有行:
:$y
显示当前正在显示的文件和目录:先按1,然后ctrl + g
全部复制:1,$y
全选: ggVG
全选并复制到系统剪切板:
gg"+yG