什么是vi/vim
Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。
推荐使用 Vim 文本编辑器的原因有很多,比如说:
- 几乎所有的Linux 发行版都内嵌有 Vim 文本编辑器,而其他的编辑器则不一定存在;
- Vim具有编辑程序的能力,会主动利用不同的字体颜色辨别语法的正确性,方便程序设计;
- 使用 Vim 文本编辑器,编辑速度会更快。
命令格式
基本格式:vim [选项] 文件
vi [选项] 文件
文件名不存在就会新建文件
文件名存在就会修改文件
三种模式
1.命令模式:默认模式,可以实现移动光标,剪切/粘贴文本
2.插入模式:用于修改文本
3.末行模式:保存,退出,搜索,替代等。
不同模式之间的转换
命令模式切换至输入模式
i | 在当前光标位置之前插入内容 |
I | 在所在行的行首插入内容 |
o | 在光标所在行之下插入一个新行内容 |
O | 在光标所在行之上插入一个新行内容 |
a | 在当前光标位置之后插入内容 |
A | 在所在行的行尾插入内容 |
命令模式的基本操作
命令模式:此模式下,可使用方向键(上、下、左、右键)或 k、j、h移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。
操作键 | 功能 |
---|---|
ctrl+f或者Pagedown | 向下翻页 |
ctrl+b或者Pageup | 向上翻页 |
Home;^;0 | 跳到本行的行首 |
按 End 键或$ | 跳转到本行的行尾 |
1G 或 gg | 跳转到文件的第一行包括空行 |
G | 跳转文件的末尾 |
#G | #代表行号数字,直接跳转到#行 |
M | 跳转到当前显示页面的中间行 |
x或delete | 删除当前光标的字符 |
dd | 删除一整行 (相当于放到剪切板里) |
#dd | 删除当前光标开始到第#行(包括当前行) |
d^ | 删除当前光标之前到行首(不包括光标) |
d$ | 删除当前光标到行尾(包括当前光标) |
dw | 删除当前光标处的单词 |
R 或shift+r | 替换当前光标处文字,会进入替换模式 |
yy | 复制当前光标处整行 |
#yy | 复制当前光标处向下的#行 |
p | 粘贴到光标处下一行 |
P | 粘贴到光标处上一行 |
u | 只消除上一次可多次使用 |
U | U 取消所有操作 |
/字符 | 向下查找 |
?字符 | 向上查找 |
n | 向同一方向重复上次的查找指令 |
N | 向相反方向重复上次的查找指定 |
J | 把当前行的所有换行符删掉 |
输入模式:使 Vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令,当编辑文件完成后按 Esc 键即可返回命令模式。切入到输入模式
快捷键 | 功能描述 |
---|---|
i | 在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动 |
I | 行首插入命令 |
o | 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本 |
O | 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本 |
a | 在当前光标所在位置之后插入随后输入的文本 |
A | 行尾插入命令 |
末行模式:文件中的指定内容执行保存、查找或替换等操作。使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”(英文冒号)键,此时 Vim 窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了。
快捷键 | 功能效果 |
---|---|
:q | 退出不保存 |
:q! | 强制退出不保存 |
:w | 保存 |
:wq :zz :x | 保存并退出 |
:[范围]s/原内容/新内容/修饰符 | 范围前面加%是全部内容 加g一行全换 不加g一行只换第一个 |
:s /old/new | 替换当前行中的第一个old改为new |
:s /old/new/g | 替换当前行中的所有old改为new |
:#,# s /old/new/g | #到#行所有old改为new |
:%s /old/new/g | %代表全文 全文替换所有old改为new |
# d | 删除 第#行 |
#,# d | 删除#到#行 |
:set nu 或:set nonu | 加行号 不显示行号 |
:set cul (:set nocul ) | 光标所在行有下划线(取消) |
:set ai | 对齐 回车后和上一行对齐 |
set ts=4 | tab 一次为四个空格 |
.!命令 (who,date ) | 将date命令插入当前行注意会覆盖当前行 |