vim | 快捷键整理
vim | 快捷键整理
目录
🌟一、一般模式下的命令
🌊1.1 光标移动命令
🔸基本光标移动命令
命令 | 含义 |
---|---|
h / ← | 光标向左移动一个字符 |
j / ↓ | 光标向下移动一个字符 |
k / ↑ | 光标向上移动一个字符 |
l / → | 光标向右移动一个字符 |
n+hjkl | 多字符移动 |
0/[Home] | 移动到行首 |
$/[End] | 移动到行尾 |
n+[space] | 向右移动 n 个字符 |
🔸按字光标移动命令
命令 | 含义 |
---|---|
w / W | 光标右移至下一个字的字首 |
e / E | 光标移至字尾 |
b / B | 光标移至字首 |
- w/e/b 命令所指的字是指英文单词、标点符号和非字母字符;
- W/E/B 命令所指的字是指两个空格之间的任何内容。
🔸按行光标移动命令
命令 | 含义 |
---|---|
H | 光标移动到屏幕最上方一行的第一个字符 |
M | 光标移动到屏幕中央一行的第一个字符 |
L | 光标移动到屏幕最下方一行的第一个字符 |
G | 移动到档案的最后一行 |
nG | 移动到档案的第 n 行 |
gg | 移动到档案的第一行,相当于 1G |
n | n 为数字,光标向下移动 n 行 |
🔸按段落光标移动命令
在 vi 中,一个段落被定义为是以一个空白行开始和结束的片段。按段落移动光标的命令有以下两种:
{
命令:该命令将光标向前移至上一个段落的开头。}
命令:该命令将光标向后移至下一个段落的开头。
🌊1.2 滚屏命令
命令 | 含义 |
---|---|
Ctrl + f | 屏幕向『下』移动一页,相当于 [Page Down]按键 |
Ctrl + b | 屏幕向『上』移动一页,相当于 [Page Up] 按键 |
Ctrl + d | 屏幕向『下』移动半页 |
Ctrl + u | 屏幕向『上』移动半页 |
🌊1.3 删除、复制、粘贴命令
🔸文本删除命令
命令 | 含义 |
---|---|
x | 向后删除一个字符 ([del] 按键) |
X | 向前删除一个字符([backspace] 按键) |
dw | 删除一个单词 |
dd | 删除光标所在的整行 |
ndd | 删除光标所在的向下 n 行 |
d0 | 删除从光标前一个字符开始到行首的内容 |
D/d$ | 删除从光标所在处开始到行尾的内容 |
d( | 删除到上一句开始的所有字符 |
d) | 删除到下一句开始的所有字符 |
d{ | 删除到上一段开始的所有字符 |
d} | 删除到下一段开始的所有字符 |
d<CR> | 删除包括当前行在内的两行字符(<CR> 表示回车) |
d1G | 删除光标所在到第一行的所有数据 |
dG | 删除光标所在到最后一行的所有数据 |
🔸文本复制命令
命令 | 含义 |
---|---|
yy | 复制光标所在的整行 |
nyy | 复制光标所在的向下 n 行 |
y0 | 复制从光标前一个字符开始到行首的内容 |
Y/y$ | 复制从光标所在处开始到行尾的内容 |
y( | 复制到上一句的开始 |
y) | 复制到下一句的开始 |
y{ | 复制到上一段的开始 |
y} | 复制到下一段的开始 |
y<CR> | 复制包括当前行在内的两行内容(<CR> 表示回车) |
yw | 复制一个单词 |
y1G | 复制游标所在行到第一行所有数据 |
yG | 复制游标所在行到最后一行所有数据 |
🔸文本粘贴命令
命令 | 含义 |
---|---|
p | 在光标下一行粘贴 |
P | 在光标上一行粘贴 |
J | 将光标所在行与下一行的数据结合成同一行 |
c | 重复删除多个数据,例如:向下删除 10 行,[ 10cj ] |
🌊1.4 动作重复、撤销命令
命令 | 含义 |
---|---|
u | 撤销(Undo) |
U | 撤销对整行的操作 |
[Ctrl]+r | 重做(Redo),即撤销的撤销 |
. | 重复前一个动作 |
🌊1.5 搜索替换命令
vi 编辑器提供简单的字符串替换命令,在末行模式下可以使用替换命令,其命令格式如下:
[range]s/s1/s2/ [option]
- [range] 表示检索范围,省略时表示当前行。下面是一些检索范围的例子。
1,10
表示从第 1 行到 10 行。%
表示整个文件,同1, $
。. ,$
从当前行到文件尾。
- s 为替换命令。
- s1 要被替换的串,s2 为替换的串。
- option 表示选项:
/g
表示在全局文件中进行替换。/c
表示在每次替换之前需要用户进行确认。- 省略时仅对每行第一个匹配串进行替换。
命令 | 含义 |
---|---|
/word | 向光标之下寻找一个名称为 word 的字符串 |
?word | 向光标之上寻找一个名称为 word 的字符串 |
n | n 是英文按键,重复前一个搜寻的动作 |
N | N 是英文按键,反向进行前一个搜寻动作 |
:n1,n2s/word1/word2/g | 在第 n1 与 n2 行之间寻找 word1,并取代为 word2 |
:1,$s/word1/word2/g | 从第一行到最后一行寻找 word1,并取代为 word2 |
s/old/new/ | 用old替换new,替换当前行的第一个匹配 |
s/old/new/g | 用old替换new,替换当前行的所有匹配 |
%s/old/new/ | 用old替换new,替换所有行的第一个匹配 |
%s/old/new/g | 用old替换new,替换整个文件的所有匹配 |
:10,20s/old/new/g | 在10-20行之间,用old替换new |
:10,20s/^/ /g | 在10-20行每行前加四个空格,用于缩进 |
ddp | 交换光标所在行和其下紧邻的一行 |
🌊1.6 文本移动命令
命令 | 含义 |
---|---|
> | >n,n行向右移动 |
< | <n,n行向左移动 |
>> | n>>,n行向右移动 |
<< | n<<,n行向左移动 |
imj | 把第 i 行移至第 j 行的下方 |
🌟二、编辑模式下的命令
命令 | 含义 |
---|---|
i, I | 插入模式:i 从光标所在处插入,I 在所在行第一个非空格符处插入 |
a, A | 插入模式:a 从光标所在下一个字符处插入,A 所在行最后一个字符处插入 |
o, O | 插入模式:o 所在行的下一行插入新行,O 所在行的上一行插入新行 |
r, R | 取代模式:r 只取代光标所在字符一次,R 一直取代光标所在文字,直到按下 ESC |
[Esc] | 退出编辑模式,回到一般模式 |
🌟三、指令行模式下的命令
🌊3.1 vi 文件操作命令
命令 | 含义 |
---|---|
:w | 将编辑数据写入硬盘 |
:w! | 文件属性为只读时,强制写入 |
:q | 离开 vi |
:q! | 强制离开不储存 |
:wq | 储存后离开,:wq! 为强制储存后离开 |
ZZ | 没有更动则不储存离开,已被更动则储存后离开 |
:w [filename] | 另存新档 |
:r [filename] | 将新档案内容追加到游标所在行后 |
:n1,n2 w [filename] | 将 n1 ~ n2 内容另存新档 |
:! command | 退出并执行 command 例如『:! ls /home』可在 vi 中查看 /home 下以ls 输出的信息 |
:open file | 在vim窗口中打开一个新文件 |
:split file | 在新窗口中打开文件 |
:bn | 切换到下一个文件 |
:bp | 切换到上一个文件 |
:args | 查看当前打开的文件列表,当前正在编辑的文件会用[]括起来 |
🌊3.2 vi 窗口切分命令(split)
在末行模式中,输入 split 命令即可实现窗口的切分,其命令格式如下:
: split文件名
split 也可简写为 sp。这时窗口切分为上下两部分,下半部分对应原来的文件,上半部分对应新打开的文件。有时用户需要在多窗口之间进行切换,vi 编辑器提供一组命令支持用户切换多个窗口,其命令如下表所示:
命令 | 含义 |
---|---|
Ctrl+w,然后 j | 移动光标到下面的一个窗口 |
Ctrl+w,然后 k | 移动光标到上面的一个窗口 |
Ctrl+w,然后 q | 关闭当前窗口 |
Ctrl+w,然后 w | 移动光标到另一个窗口 |
🌊3.3 vi 属性设置命令
设置 | 命令 |
---|---|
行号设置命令 | :set nu (nonu) |
高亮搜索结果 | :set hlsearch (nohlsearch) |
大小写区分命令 | :set ignorecase(noignorecase) |
语法缩进命令 | :set autoindent |
自动储存备份 | :set backup(nobackup) |
显示选项命令 | :set all |
语法高亮命令 | :syntax on (off) |
逐步搜索模式 | :set incsearch |
循环搜索 | :set wrapscan |
💌vim 中批量添加注释
方法一 :块选择模式
批量注释:
Ctrl + v
进入块选择模式,然后移动光标选中你要注释的行,再按大写的 I
进入行首插入模式输入注释符号如 //
或 #
,输入完毕之后,按两下 ESC
,Vim
会自动将你选中的所有行首都加上注释,保存退出完成注释。
取消注释:
Ctrl + v
进入块选择模式,选中你要删除的行首的注释符号,注意 //
要选中两个,选好之后按 d
即可删除注释,ESC
保存退出。
方法二: 替换命令
批量注释:
使用下面命令在指定的行首添加注释。
使用名命令格式: :起始行号,结束行号s/^/注释符/g
(注意冒号)
取消注释:
使用名命令格式: :起始行号,结束行号s/^注释符//g
(注意冒号)
例子:
1、在 10 - 20 行添加 //
注释
:10,20s#^#//#g
2、在 10 - 20 行删除 //
注释
:10,20s#^//##g
3、在 10 - 20 行添加 #
注释
:10,20s/^/#/g
4、在 10 - 20 行删除 #
注释
:10,20s/#//g