摘要
本文主要介绍Vi的常用操作命令,以及Vim的一些特有操作命令。
目录
提示:以下是本篇文章正文内容,下面命令及案例可供参考
一、Vi的基本指令
1. 命令模式
1.1 文件操作
vi file 新建或打开一个file文件
vi /[str] file 在第一次出现str代表的文本的位置打开file文件
rm file 删除文件
mv file /path/ 移动file到path路径下
mv file newfile 重命名文件名file为newfile
Ctrl + Z 文件挂起
fg id 恢复后台执行的任务 id: Ctrl +Z 后出现的任务序号(非进程号),或使用 :jobs 查看当前后台执行的任务的序号;
1.2 光标操作
1、键盘“上、下、左、右”方向键;
2、键盘“0、$、H、M、L、K、J”
0: 移动到一行的开头;
$: 移动到一行的结尾;
H: 将光标移动到home位置;
M: 将光标移动到屏幕中间那一行;
L: 将光标移动到末行结尾;
K: 上移一行;
J: 下移一行。
3、Ctrl + ?
Ctrl + F 往前滚动一整屏
Ctrl + B 往下滚动一整屏
Ctrl + U 往前滚动半屏
Ctrl + D 往下滚动半屏
1.3 内容编辑
grep -n [str] file 显示file文件中包含str代表的字符串所在行及行号
G 跳转到第一行
gg 跳转到最后一行
[num]G 跳转到第num行 例如:5G 光标跳转到第5行的开头
/[str] 往前搜索str代表的文本
?[str] 往后搜索str代表的文本
yy 复制当前一行
[num]yy 复制以光标为起始num行内容
p 粘贴在光标处的下一行
P 粘贴到光标处的上一行
[num]j => p 粘贴在光标之下num行位置处 例如::5yy => 3j => p 复制从光标起5行的内容,粘贴到光标之下3行的位置
[num]i => ?插入num个?代表的文本 例如:5i => * 插入5个*
2. 插入模式(按ESC返回命令模式)
2.1 插入、删除及撤销
:i 插入操作
:a 在光标位置附加内容
:A 在一行的最后附加内容
:o 在光标下方新建一行
:D 删除或剪切光标及之后的本行内容
:dd 删除或剪切光标所在的一行内容
:[num]dd 删除或剪切从光标处起num行的内容
:de 删除或剪切单词到结尾,不包含单词后的空格
:dw 删除或剪切单词到结尾,不包含单词后的标点
:dW 删除或剪切单词到结尾,包含单词后的空格及标点
:x 删除或剪切光标所在字符
:[num]x 删除或剪切从光标起num个字符,例如:5x
:p 放置光标;与剪切一起用时,相当于粘贴
:o 在光标的下一行打开新一行
:O 在光标的上一行打开新行
:u 撤销上一个操作
:U 将一整行恢复到原来的状态
:. 重复上一个操作
2.2 更改
:r[char] 更改光标处的字符(执行后,不使用ESC) char:更改后的字符,例如:ra 将光标处的字符更改为a
:cw 更改光标处的单词(从光标处到此单词结尾)
:c$ 更改光标处到本行结尾的内容
:c0 更改光标处到本行开头的内容
:s[char] 更改光标处的字符 例如:s5
:[num]s[str] 更改从光标起num个字符,更改为str代表的文本 例如:5shello
:[num]S[str] 更改从光标起num行内容,更改为str代表的num行文本 例如:5S?????
2.3 替换
:[num1],[num2] s /old/new/g 将第num1行到第num2行的每一个old替换成new 例如::50,100 s /a/r/g 将第50行到第100行的a全都替换成r
:/[str1] => :cw[str2] => ESC => [n] =>[.] =>[n] =>[.] => ....... 查找str1代表的文本,更改str1代表的文本为str2代表的文本,ESC切换到命令模式,n:重复搜索 . :重复上一个编辑命令
3. 末行模式
3.1 退出、保存
:q 退出,不保存
:q! 强制退出,不保存
:wq 退出,保存
:wq! 强制退出,保存
:w 保存
:w newfile 另存为newfile(原文件仍存在)
3.2 跳转到特定行
:set nu 显示行号
:set nonu 取消显示行号
:[nu]G 跳转到特定行 例如:5G
3.3 ex指令
d 删除
:[num1],[num2] d 从删除第num1行到第num2行删除 例如: :5,17 d 删除第5行到第7行的内容
m 移动
:[num1],[num2] m [num3] 将第num1行到第num2行内容移动到第num3行 例如: :5,17 m 25 将第5行到第17行的内容移动到第25行后
co 复制
:[num1],[num2] co [num3] 将第num1行到第num2行内容复制到第num3行之后 例如: :5,17 m 25 将第5行到第17行的内容复制到第25行之后
:/[str]/= 显示第一次出现字符串的行号 str: 代表查找的内容
:= 显示文件总行号
:.= 显示当前光标所在的行号
3.4 Unix命令
使用Vi编辑器时,可以显示或读取任何Unix命令所产生的结果。感叹号(!)会告诉编辑器创建一个shell,并将后续文本视为Unix命令,即 :![command] command:代表指令
:!date 显示当前的日期与时间(按Enter回到原来文件中的位置继续编辑)
:!ls 显示与当前文件同一位置下的所有文件名
:sh 创建一个shell(下达多个Unix命令,中途不返回vi,直到按Ctrl +D)
二、Vim的基本使用
1. Vim特有的操作
1.1 打开、比较、撤销
vim file 新建或打开file文件
vim -o file1 file2 打开两个文件,两个文件各占编辑窗口一半
vim -d file1 file2 比较file1文件和file2文件的差异
Ctrl + r 重做上一次撤销的操作
vim -b file 以二进制格式打开file文件(推荐使用vim打开二进制文件)
:%!xxd 将二进制内容转换为十六进制(想要修改二进制文件内容,需要将文件修改为十六进制以后再进行修改)
:%!xxd -r 将当前文本转换回文本格式
:wq 保存并退出
1.2 分割窗口
:sp 将窗口水平分割成两半,均显示相同缓冲区内容(即 两个窗口浏览相同文件内容)
:vsp 将窗口竖直分割成两半,均显示相同缓冲区内容(即 两个窗口浏览相同文件内容)
:Ctrl + w 跳转不同窗口
:only 保留当前窗口,关闭其他窗口
:close 关闭当前窗口,若当前窗口为最后一个,则不会关闭
:quite 关闭当前窗口,若当前窗口为最后一个,则关闭窗口,退出vim
1.3 其他
:syntax enable 打开语法高亮(如果未变化,再打开语法设置 :syntax on 即可)
总结
本文主要介绍Vi的常用操作命令,以及Vim的一些特有操作命令;Vim兼容Vi的常用操作命令;不定期更新和补充。