原文地址: Geekinns
什么是Vim ?
Vim是上Linux非常常用的代码编辑器,很多Linux发行版都默认安装了Vim。Vim命令繁多但是如果使用灵活之后将会大大提高效率。Vi是“Visual Interface”的缩写,Vim是Vi IMproved(增强版的Vi)。
Vi/Vim的三种状态
Vim可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
命令模式(command mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式、底行模式。按i
进入插入模式。
插入模式(Insert mode)
只有在插入模式下,才能文字输入,按ESC键
可回到命令模式。
底行模式(last line mode)
将文件保存或退出Vim,也可以设置编辑环境,如寻找字符串、列出行号。不过一般我们在使用时把Vim简化成两个模式,就是将底行模式也算入命令模式。
Vi/Vim的使用方法
打开文件、保存、关闭文件(命令模式下使用)
命令 | 作用 |
---|---|
vi 文件名 | 打开指定文件 |
:w | 保存文件 |
:w abc | 保存至abc文件 |
:q | 不保存退出 |
:q! | 不保存退出 |
:wq | 保存退出 |
插入文本或行
命令 | 作用 |
---|---|
a | 在光标所在字符后插入 |
A | 在光标所在行尾插入 |
i | 在光标所在字符前插入 |
I | 在光标所在行行首插入(非空字符的行首) |
o | 在光标下方插入新行 |
O | 在光标上方插入新行 |
R | 替换当前光标位置及后面的若干文本 |
J | 合并光标所在行及下一行为一行 |
光标移动
操作 | 作用 |
---|---|
Ctrl+b | 屏幕往后移动一页 |
Ctrl+f | 屏幕往前移动一页 |
Ctrl+u | 屏幕往后移动半页 |
Ctrl+d | 屏幕往前移动半页 |
0 (数字零) | 移到当前行的开头 |
G | 移动到文章的末尾 |
$ | 移动到光标所在行的行尾 |
^ | 移动到光标所在行的行首 |
w | 光标跳到下个字符的开头 |
e | 光标跳到下个字符的字尾 |
b | 光标回到上个字符的开头 |
删除
命令 | 作用 |
---|---|
x | 每按一次,删除光标所在位置的后面一个字符 |
X | 每按一次,删除光标所在位置的前面一个字符 |
n x (n表示数字) | 删除光标所在位置的后面n个字符 |
n X (n表示数字) | 删除光标所在位置的前面n个字符 |
dd | 删除光标所在行 |
n dd (n表示数字) | 从光标所在行开始删除n行 |
设置行号
命令 | 作用 |
---|---|
:set nu | 显示行号 |
:set nonu | 取消显示行号 |
复制、粘贴
命令 | 作用 |
---|---|
yy | 将当前行复制到缓存区,也可用 “ayy 复制,”a 为缓冲 区,a也可以替换为a到z的任意字母,可以完成多个复制任务 |
n yy (n表示数字) | 将当前行向下n行复制到缓冲区,也可用 “anyy 复制,”a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务 |
yw | 复制从光标开始到词尾的字符 |
n yw (n表示数字) | 复制从光标开始的n个单词 |
y^ | 复制从光标到行首的内容 |
y$ | 复制从光标到行尾的内容 |
p | 粘贴剪切板里的内容在光标后,如果使用了前面的自定义缓冲区,建议使用”ap 进行粘贴 |
P | 粘贴剪切板里的内容在光标前,如果使用了前面的自定义缓冲区,建议使用”aP 进行粘贴 |
替换
命令 | 作用 |
---|---|
:s/old/new | 用new替换行中首次出现的old |
:s/old/new/g | 用new替换行中所有的old |
:n ,m s/old/new/g (n,m表示数字) | 用new替换从n到m行里所有的old |
:%s/old/new/g | 用new替换当前文件里所有的old |
常用操作
操作 | 作用 |
---|---|
h (或向左方向键) | 光标左移一个字符 |
j (或向下方向键) | 光标下移一个字符 |
k (或向上方向键) | 光标上移一个字符 |
l (或向右方向键) | 光标右移一个字符 |
Ctrl + f | 屏幕向下移动一页(相当于Page Down键) |
Ctrl + b | 屏幕向上移动一页(相当于Page Up键) |
0或[Home] | 光标移动到当前行的最前面 |
$或[End] | 光标移动到当前行的末尾 |
G | 光标移动到文件的最后一行(第一个字符处) |
n G (n表示数字) | 移动到当前文件中第n行 |
gg | 移动到文件的第一行,相当于"1G" |