本文记录vi编辑器的一些快捷操作:
vi +行号 文件名:打开文件并将光标移动指定行的行首
eg:$ vi +6 hello.c
vi + 文件名:打开文件并将光标移动到最后一行的行首
eg:$ vi + hello.c
vi +/模式字符串 文件名:打开文件并将光标移动到匹配行的行首
eg:$ vi +/printf hello.c
命令模式
光标移动命令:
h:光标左移一个字符
j:光标下移一行
k:光标上移一行
l:光标右移一个字符
H:光标移动到当前屏幕的第一行的行首
M:光标移动到当前屏幕的中间行的行首
L:光标移动到当前屏幕的最后一行的行首
G:光标移动到最后一行的行首
n+G:光标移动到第n行的行首
w:光标移动到下一个字的字首。字首指英文单词,标点符号和非字母字符的字首
W:光标移动到下一个字的字首。字首以空格分割的内容,及下一个空格后的内容字首
e:光标移动到字的字尾。字尾指英文单词,标点符号和非字母字符的尾部字尾
E:光标移动到字的字尾。字尾以空格分割的内容,及下一个空格后的内容字尾
b:光标移动到上一个字的字首,字首指英文单词,标点符号和非字母字符字首
B:光标移动到上一个字的字首。字首指以空格分割的内容,及上一个空格后的内容字首
(:光标移动到上一句的开头
):光标移动到下一句的开头
{:光标移动到上一段的开头
}:光标移动到下一段的开头
>+n:将指定的正文行右移8个空格,移动范围由光标所在行和随后输入的n所限定,共移动n+1行
<+n:左移,与右移相反
>>:将光标所在行右移8个空格
n+>>;将光标开始到n-1行右移8个空格,共移动n行
<<:左移与右移相反
n+<<:左移与右移相反
ctrl+u:将屏幕向上滚动半个屏幕
ctrl+d:将屏幕向下滚动半个屏幕
ctrl+f:将屏幕向上滚动一个屏幕
ctrl+b:将屏幕向下滚动一个屏幕
撤销命令:
u:撤销上一次命令
U:一次性撤销自上次移动到当前行以来所有的操作
重复命令:
.:重复上一次命令
插入文本命令:(insert)
i:插入到光标位置
I:插入到当前行的行首
追加文本命令:(apend)
a:追加到当前光标之后
A:追加到当前行的行尾
空行插入命令:(open)
o:光标所在下一行插入空行,光标移动到插入行的行首
O:光标所在上一行插入空行,光标移动到插入行的行首
文本删除操作:
x:删除光标处的字符
X:删除光标前面的字符
dd:删除光标所在行
D或d$:删除光标位置开始到行尾的内容
d0:删除光标前一个字符到行首的内容
dw:删除一个单词
d回车:删除到下一行结尾的字符,共删除两行
文本复制操作:
yy或Y:复制光标所在行整行
n+yy或Y:复制n行
y$:复制从光标处开始到行尾内容
y0:复制从光标前一个字符到行首内容
y回车:复制包括当前行到下一行行尾的内容
yw:复制一个单词
文本黏贴命令:p
文本选择命令:
v:按v后移动光标选择,按字符选择
V:按V后移动光标选择,按行选择
文本替换命令:
r:将当前光标处的字符替换为输入字符。如命令模式先将光标移动至需要替换的字符,输入r进入替换,再次输入需要替换 的字符完成替换,只替换一个字符
n+r:将当前光标开始的n个字符替换为输入字符,只替换n个字符
R:进入replace模式,键入字符提换光标下的字符,直到输入ESC结束
末行模式
:q 退出vi
:q! 强制退出vi,并且不询问保存
:w 写文件
:w! 强制写文件
:wq 写入文件并退出
:x 若当前编辑文件被修改过,则保存文件后退出,否则直接退出
:imj 将i行的内容剪切黏贴到j行下方
:/string 查找字符串string
:n 检索见过当中向下继续查找
:N 检索见过当中向上继续查找
:g/string 列出查找结果
替换命令:
todo
窗口切分:
:spilt 文件名 窗口上下切分,上半部分为新打开的文件,下半部分为原来的文件
:sp 文件名 为spilt命令缩写
切分后可用快捷键进行窗口快速切换:
ctrl+w+j:光标移动到下一个窗口
ctrl+w+k:光标移动到上一个窗口
ctrl+w+q:关闭当前窗口
ctrl+w+w:光标移动到另一个窗口
设置环境:
:set hlsearch 高亮查找
:set nohlsearch 取消高亮查找
:set nu 显示行号
:set nonu 不显示行号
:set audtoindent 语法缩进
:set backup(nobackup) 文件存储
:set all 显示所有选项
:syntax on(off) 语法高亮
:set ignorecase(noignorecase) 区分大小写