常用的vim命令

vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

本文主要是简单的介绍 vim 的使用

介绍

  1. 命令模式(Command mode): 这是Vim的默认模式,在该模式下可以执行命令,例如保存文件、退出Vim等。按下Esc键可以从其他模式切换到命令模式。
  2. 编辑模式:
    1. 插入模式(Insert mode):插入模式像普通文本编辑器一样输入和编辑文本。按下i键可以从命令模式切换到插入模式。
    2. 附加模式(Append mode):附加模式类似于插入模式,但是光标会位于当前字符的后面,而不是前面。按下a键可以从命令模式切换到附加模式。
  3. 可视模式(Visual mode):可视模式允许你选择文本块进行操作,例如复制、删除或修改选中的文本。按下v键可以从命令模式切换到可视模式。
  4. 命令行模式(Command-line mode):命令行模式用于输入底部命令,例如保存文件、搜索文本等。按下冒号:键可以从命令模式切换到命令行模式。

模式

vim_mode

不知道当前处于什么模式的话按下ESC就会回到命令模式。

命令模式

常用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
dd			删除(剪切)光标所在行
ndd 删除(剪切)从光标处开始的n行
yy 复制光标所在行
nyy 复制从光标处开始的n行
x 删除光标所在位置的字符
p 粘贴(将删除或复制的数据粘贴到光标下一行)
P 粘贴(将删除或复制的数据粘贴到光标上一行)
u 撤销(后退)
Ctrl + r 重做上一次被撤销的操作(前进)

h/j/k/l 将光标向左/下/上/右移动一个字符/行

w 将光标向后移动一个词(以空格或标点符号分隔)
b 将光标向前移动一个词
0(数字) 将光标移动到当前行的行首
$ 将光标移动到当前行的行尾
gg 将光标移动到文件的第一行
G 将光标移动到文件的最后一行

Ctrl+f 向下滚动一页
Ctrl+b 向上滚动一页
Ctrl+d 向下滚动半页
Ctrl+u 向上滚动半页

i 从当前光标插入
I 从当前所在行的第一个非空格符处插入(即从开头插入)

a 从当前光标的下一个字符处插入
A 从当前所在行的最后一个字符处插入(即从行末尾插入)

o 当前光标的下一行插入新的一行,光标移动到行首
O 当前光标的上一行插入新的一行,光标移动到行首

r 替换光标所在的字符
R 一直替换光标所在的字符,直到按下Esc键为止

ZZ 退出vim

命令行模式

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
:wq			保存数据并退出vim
:w 将编辑的数据从内存写入硬盘
:w! 若文件属性为只读,强制写入
:q 退出vim环境
:q! 强制退出,且不保存文件
:wq! 强制保存并退出
:set nu 显示行号
:set nonu 不显示行号
:n 光标移动到第n行
:%d 清空当前文件
:w 文件名 将当前文件保存为指定的文件名

:set noai 不自动缩进,解决复制时的缩进问题
:set paste 粘贴模式,解决复制时的缩进问题
:set number 开启行号显示
:set tabstop=4 设置制表符(Tab)的宽度为4个空格
:set ff=unix 设置文件的行尾格式为Unix
:set encoding=utf-8 设置文件的编码格式为UTF-8
:set mouse=a 使用鼠标进行文本选择、滚动和其他操作
这些设置是临时的,如果要永久保存设置,可以将它们添加到Vim的配置文件(通常是~/.vimrc或~/.vim/vimrc)中

搜索和替换

1
2
3
4
5
:/pattern		在文件中向下搜索匹配指定模式的文本。
:?pattern 在文件中向上搜索匹配指定模式的文本。
:s/old/new 将当前行第一个匹配到的old替换为new。
:s/old/new/g 将当前行所有匹配到的old替换为new。
:%s/old/new/g 将文件中所有匹配到的old替换为new。

可视模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
y		复制选中的文本到剪贴板
d 剪切选中的文本到剪贴板
p 在光标位置粘贴剪贴板中的内容

> 向右缩进选中的文本
< 向左缩进选中的文本
= 自动对齐选中的文本

x 删除选中的文本
s 删除选中的文本,并进入插入模式以输入替换的文本
r 替换选中的文本为输入的字符

J 将选中的多行文本合并为一行
~ 反转选中文本的大小写
U 将选中文本转换为大写
u 将选中文本转换为小写

额外

1
2
export EDITOR="/usr/bin/vim"  #用vim打开crontab
crontab -e

参考:

chatgpt

https://www.jianshu.com/p/9e0007ca91b8


常用的vim命令
https://shyi.org/posts/22319/
作者
Shyi
发布于
2023年6月28日
更新于
2024年7月13日
许可协议