vi

普通模式:移动光标的操作
G或(shift+g) //将光标移动到文件的最后一行。
gg //将光标移动到文件的第一行,等价于1gg或1G。
0 //数字0,将光标从所在位置移动到当前行的开头。
$ //从光标所在位置移动到当前行的结尾。
n<Enter> //n为数字,<Enter>为回车键,将光标从当前位置向下移动n行。
ngg //n为数字,移动到文件的第n行,如11gg可移动到第11行,可配合 “:set nu”查看。
H //光标移动到当前窗口最上方的那一行。
M //光标移动到当前窗口中间的那一会。
L //光标移动到当前窗口最下方的那一行。
h或(←) //光标向左移动一个字符。
j或(↓) //光标向下移动一个字符。
k或(↑) //光标向上移动一个字符。
l或(→) //光标向右移动一个字符。
 
 
普通模式:搜索与替换操作
/liang //从光标位置开始,向下寻找名为liang的字符串。
?liang //从光标位置开始,向上寻找名为liang的字符串。
n //从光标位置开始,向下重复前一个搜索的动作。
N //从光标位置开始,向上重复前一个搜索的动作。
:g/A/s//G/g //把符号A的内容全部替换成B,斜线为分隔符,可以用@、#等替代。
:%s/A/B/g //把符号A的内容全部替换成B,斜线为分隔符,可以用@、#等替代。
:n1,n2s/A/B/gc //n1、n2为数字,在第n1行和第n2行直接寻找A,用B替换。
 
 
普通模式:复制、粘贴、删除等操作
yy //复制光标所在的当前行。
nyy //n为数字,复制光标开始向下共n行。
p //将已复制的数据粘贴到光标的下一行。
P //将已复制的数据粘贴到光标的上一行。
dd //删除光标所在的当前行。
ndd //n为数字,删除从光标开始向下共n行。
u //恢复(回滚)前一个执行过的动作。
x //向后删除字符。
X //向前删除字符。
d1G //删除当前行至第一行。
dG //删除当前行至最后一行。
d0 //删除当前光标文本至行首。
d$ //删除当前光标文本至行尾。
 
 
进入编辑模式命令
i //在当前光标所在处插入文字。
a //在当前光标所在的下一个字符插入文字。
I //在当前所在行行首的第一个非空格符处开始插入文字,和A相反。
A //在当前所在行行位的最后一个字符处开始插入文字,和I相反。
O //在当前所在行的上一行插入新的一行。
o //在当前所在行的下一行插入新的一行。
Esc //退出编辑模式,回到命令模式中。
 
 
命令行模式:
:wq //退出并保存。
:wq! //退出并强制保存,“!”为强制的意思。
:q! //强制退出,不保存。
:n1,n2 w filename //n1、n2为数字,将n1行到n2行的内容保存成filename这个文件。
:n1,n2 co n2 //n1、n2为数字,将n1行到n2行的内容复制到n3位置下。
:n1,n2 m 呢 //n1、n2为数字,将n1行到n2行的内容剪切到n3位置下。
:!command //暂时离开vi到命令行模式下执行command的显示结果,例如,:!ls /etc
:set nu //显示行号。
:set nonu //与set nu相反,取消行号。
:vs filename //垂直分屏显示,同时显示当前文件和filename对应文件的内容。
:sp filename //水平分屏显示,同时显示当前文件和filename对应文件的内容。
I + # + Esc //在可视块模式下(Ctrl+V),一次性注释所选的多行,取消注释可用“:n1,n2s/#/gc”,这里的操作是一个通用的方法,# 号可以换成别的操作,例如Tab键盘,这样就是批量缩进。
Del //在可视化模式下(Ctrl+V),一次性删除所选内容。
r //在可视化模式下(Ctrl+V),一次性替换所选内容。
 
 
vim 打开文件的方法小结
vim file 打开/新建文件,光标置于第1行行首,file为任意文件名。
vim file +n 打开文件,光标置于第n行行首,n为自然数。
vim file + 打开文件,光标置于最后一行行首。
vim file +/pattern 将光标置于第一个与pattern匹配的字符串处,pattern为任意字符串。
 
特别说明:
当如果不知道自己处在什么模式时可以按2次Esc键即可回到命令模式。
最要提醒:注意大小写!!!
原文地址:https://www.cnblogs.com/liang545621/p/9416462.html