vim | 快捷键整理

vim | 快捷键整理

vim.gif

🌟一、一般模式下的命令

🌊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 进入行首插入模式输入注释符号如 //#,输入完毕之后,按两下 ESCVim 会自动将你选中的所有行首都加上注释,保存退出完成注释。

取消注释:

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
posted @ 2020-11-01 16:46  URmyLucky  阅读(399)  评论(0编辑  收藏  举报