1 . 上下左右移动
h: 左
j: 下
k:上
l: 右
n+(h/j/k/l) : 数字加上述命令表示向各个方向跳转n行
2 . 跳转(行间/多行/单行)
gg : 跳转到全文首行
G : 跳转到最后一行
nG("数字+G"): 跳转到指定第n行;
H/M/L : 分别跳转到当前页面的顶端,尾端,中间 的首个非空字符
0(数字0):跳转到行头非空字符
$ : 跳转到行尾非空字符
[[ : 跳转到上一个函数的开始处
]] : 下一个函数的开始处
% : 跳转到匹配的括号( (,),{,},[,] )的另外一半的位置
ctrl + i : 跳转到下一个历史移动位置
ctrl + o(字母o) : 跳转到上一个历史记录位置
''''(两个引号) : 在两个历史记录之间跳转
zt : 以当前光标为参照,把当前光标所在行,移动到顶部(top)
zb: 以当前光标为参照,把当前光标所在行,移动到底部(button)
zz : 以当前光标为参照,把当前光标所在行,移动到中间
W : 下个字符串的开始
B : 上个字符串的开始
ctrl + b : 翻到上一页
ctrl + f : 翻到下一页
ctrl + d : 向下移动行
ctrl + u : 向上移动行
3 . 多行编辑
多行注释:
第一步: ctrl + v : 进入块编辑模式;
第二步: 上下移动, 选取需要编辑块(需要先把光标移动到行首)
第三步 : 按住大写i键,进入块插入模式
第四步: 输入注释符号(// , # ```等)
第五步 : 按esc,退出块编辑模式,完成(注释符号可能会稍延时出现)
删除多行注释:
第一步 : ctrl + v,进入块编辑模式
第二步 : 上下移动需要修改的块位置
第三部 : 按x或者d建,删除
第四步 : esc退出,完成(一次只能删除一个符号)
命令行删除或者添加行首:
在所有行的行首添加## :% s/^/##/g
在2到6行行首添加&&(需要转义):2,6 s/^/\&\&/g
多行删除:
n,m, d: (数字+数字+m) 可以删除n到m之间的多行文本;
例如: 23, 34, d : 删除第23行到34行之间的内容
多行缩进:
按v进入visual状态,选择多行,用>或<缩进或缩出
通常根据语言特征使用自动缩进排版:在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format。使用gg=G可对整篇代码进行排版。
4 . 查找:
/ + 字符串 : 向下查找
? + 字符串 : 向上查找
: noh : 取消查找到后高亮的文本的显示
执行完此两条命令之后,如果想要查找下一条记录, 可以通过n键继续执行正向查找, N: 反向查找(正向,反向是相对于/ 还是?的)
* : 查找当前光标所在的单词(n: 下一个匹配项,N: 上一个匹配项)
# : 高亮显示当前光标所在单词 (:noh 取消高亮)
5 . 删除
dd : 删除当前行
x (小写) : 删除一个当前字符(相当于delete)
X(大写) : 删除一个当前字符之前的字符(相当于Backspace)
dG : 删除当前行到尾行
:1, 10d : 删除一到第十行的内容
6 . 复制粘贴
yy : 复制当前行
y+n+w (y+数字+w) : 复制当前单词之后的n个单词
y+n+W : 复制当前位置之后的n个字
y + (h/j/k/l) : 表示从当前位置复制附近的一个位置(j/k:两行 / h/l : 一个字符)
y + n + (h/j/k/l) : 从当前位置复制多少行/字符
y+ G : 从当前复制至文档尾行
y + 1 + G : 从当前位置复制到文档首行
y + 0(数字0) : 从当前位置复制到当前行的行头
y + $ : 从当前位置复制到当前行行尾
p(小写) : 粘贴到游标之后
P(大写) : 粘贴到游标之前
shift + insert : 把当前粘贴板里面的内容粘贴进去(插入模式时候使用)
7 . 替换
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$ s/vivian/sky/g : 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
特别的: (去掉window下面的^M )
使用命令:cat filename1 | tr -d “^V^M” > newfile
使用命令:sed -e “s/^V^M//” filename > outputfilename.
在vi中处理:首先使用vi打开文件,然后按ESC键,接着输入命令:%s/^V^M//.
:%s/^M$//g
需要注意的是在1、2两种方法中,^V和^M指的是Ctrl+V和Ctrl+M.你必须要手工进行输入,而不是粘贴。
8 . 加入ctags"链接"
ctags -R * : 把一个目录下的所有文件的标记符号都记录下来,用于vim进行函数的跳转链接(ctrl + ] : 可以跳转)
9. 内容编辑回退
u : 编辑内容回到之前(一次一步)
ctrl + r : 重做(撤销之前的回退)
10. 不退出vim,执行shell命令
:!cmd
不退出vim 执行命令 cmd
:r !cmd
不退出vim执行命令cmd,并将cmd的输出内容插入当前文本中。
:shell
切换到shell里(此时并没有退出vim,可以理解成vim转入后台),你可以在shell中做任何操作,退出shell(比如用exit)后,会切换回原来的vim中