本文内容大部分出自对传智播客linux课程内容的总结和课堂笔记。
1. 简介
- vi <—> vim
- vim是从vi发展过来的一款文本编辑器
- 描述
- 是一个文本编辑程序
- 没有菜单,只有命令,且命令繁多
vi a.txt
—-虽然输入的是vi,但是调用的是vim编辑器- 如果存在a.txt,则利用vim编辑器打开a.txt文件
- 如果不存在a.txt,则创建a.txt文件,并利用vim编辑器打开
-
2. 工作模式
vim编辑器有三种工作模式:
- 命令模式 — 打开文件之后, 默认处于命令模式
- 编辑模式 — 在命令模式下,需要输入一些命令(aA iI oO sS), 切换到编辑模式
- 末行模式 — 在末行模式下可以输入一些命令
- 工作流程如下图所示:
- 首先使用vi打开文件后,默认处于命令模式;
- 在命令模式输入一些命令(e.g. aA iI sS oO)可以切换到编辑模式,在命令模式输入冒号(:)切换到末行模式;
- 在编辑模式按Esc键切换到命令模式;
- 在末行模式按两次Esc或成功执行末行命令后切换到命令模式;
- 但是编辑模式与末行模式不可以直接切换;
- 在vim编辑器下无法使用鼠标,只能通过一些命令完成相关编辑操作。
3. vim编辑器的使用
提示:所有大写字母可以采用Shift + 小写字母的方式替换; 所有字符均为英文输入法下。
3.1 命令模式下的操作
3.1.1 光标的移动
- hjkl控制方向:
- h : ← 左移
- j : ↓ 下移
- k : ↑ 上移
- l : → 右移
- 0(零) : 光标移动到行首
- $ : 光标移动到行尾
- gg : 光标移动文件开头
- G : 光标移动到文件末尾
-
3.1.2 删除操作(并不是真的删除,实际上是剪切)
x : 删除光标后一个字符,相当于Del
- X : 删除光标前一个字符,相当于Backspace
- dw : 删除光标开始位置的单词,包含光标所在字符
- 光标必须移动到删除单词的首字符上,否则只能删除一部分
- d0(零): 删除本行**光标前所有**内容,不包含光标所在字符
- D (或d$) : 删除本行**光标**后所有内容,包含光标所在字符
- dd : 删除光标所在行
n dd 删除指定的行数,n为指定删除的行数(包括光标所在行)
3.1.3 撤销操作
u : 撤销:
-
3.1.4 复制粘贴
yy : 复制当前行
- n yy : 复制 n 行
- p(小写) : 在光标所在位置向下新开辟一行,粘贴
- P(大写) : 从光标所在行, 开始粘贴
- 当光标处于所在行内容的中间,光标所在行原整行内容会被下移到粘贴内容的下面
-
3.1.5 可视模式 — 可选择复制内容
v : 切换到可视模式
- 先把光标移动到想复制内容的开头,然后按v切换到可视模式
配合 h、j、k、l (控制方向的)使用,使用y复制选中内容,d剪贴(删除)选中内容
3.1.6 查找操作
/ + 要查找的内容
— 顺序向下查找指定内容(查找从光标位置向下查找,到底部之后,返回到头部)? + 要查找的内容
— 逆序向上(从光标位置向上查找,到顶部之后,返回到尾部)
#
— 把光标移动到查找的单词身上,按#,即可在文件中查找光标所在位置单词遍历时候的快捷键
>> : 文本行右移
-
3.1.9 查看man文档
光标移动到函数上,Shift-k,查看对应函数第一章的 ManPage
- 光标移动到函数上,3Shift-k,查看对应函数第三章的 ManPage
说明: 光标移到要查找关键字的位置,然后Shift + k,默认从man文档的第一章查找; 还可以先输入章节数字n,然后按Shift+K,从man文档的第n章开始查找。 比如找prinf,从man文档第三章找:把光标移动到printf,然浓厚,输入3+Shift + k
3.2 命令模式下的操作(a|A|i|I|o|O)—>切换到编辑模式
- a — 在光标所在位置的后边插入,进入编辑模式
- A — 在当前行的尾部**插入**,进入编辑模式
- i — 在光标所在位置的前边插入,进入编辑模式
- I — 在光标所在行的行首**插入**,进入编辑模式
- o — 在光标所在行的下边开辟一个新的行,进入编辑模式
- O — 在光标所在行的上**边开辟一个新的行**,进入编辑模式
- s — 删除光标后边的字符,进入编辑模式
-
3.3 末行模式下的操作(:)
3.3.1 行跳转
-
3.3.2 字符串替换
替换光标所在行中的内容:
- s**/要被替换的字符串/替换的字符串 **—— 替换第一处
- s**/要被替换的字符串/替换的字符串/**g —— 替换所有
- 替换当前文件所有内容:
- %s**/要被替换的字符串/替换的字符串** —— 替换所有行第一处
- %s**/要被替换的字符串/替换的字符串/**g —— 替换所有
替换某几行(m到n行)中的内容:
! + 其他命令
-
3.3.4 保存退出
q : 退出
- q! : 退出不保存
- w : 保存
- wq 或 x : 保存退出
-
3.3.5 分屏操作
水平分屏 sp
sp [其他文件名]
- 不加其他文件名,将当前文件分屏显示
- 加其他文件名,将另一个文件打开,分屏显示这两个文件
- 垂直分屏 vsp
vsp [其他文件名]
- 不加其他文件名,将当前文件分屏显示
- 加其他文件名,将另一个文件打开,分屏显示这两个文件
- 操作同一个文件时,在一个分屏对文件操作时,另一个也跟着同步变化。
- 在不同分屏之间切换:
Ctrl + ww
- 对所有分屏同时执行末行命令:
末行命令+all
e.g.wqall
— 全部分屏保存并退出 - 如果不加all,则对光标所在的屏幕执行相应的末行命令
3.4 vim 打造 IDE
- 系统级配置文件目录:/etc/vim/vimrc
- 用户级配置文件目录:~/.vim/vimrc
- 修改配置文件 vimrc 或者 .vimrc