插入文本 |
|
vim -R filename |
把指定的文件以只读方式放入 Vim 编辑器中 |
i |
在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动 |
I |
在光标所在行的行首插入随后输入的文本 |
o |
在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本 |
O |
在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本 |
a |
在当前光标所在位置之后插入随后输入的文本 |
A |
在光标所在行的行尾插入随后输入的文本 |
查找文本 |
|
/abc |
从光标所在位置向前查找字符串 abc |
/^abc |
查找以 abc 为行首的行 (^表示行首) |
/abc$ |
查找以 abc 为行尾的行 ($表示行尾) |
?abc |
从光标所在向后查找字符串 abc |
n |
向同一方向重复上次的查找指令 |
N |
向相反方向重复上次的查找指定 |
:set ic |
忽略大小写 |
:set noic |
不忽略大小写 |
替换文本 |
|
r |
替换光标所在位置的字符 |
R |
从光标所在位置开始替换字符,其输入内容会覆盖掉后面等长的文本内容,按“Esc”可以结束 |
:s/a1/a2/g |
将当前光标所在行中的所有 a1 用 a2 替换,其中 g 表示一行中的所有,删除 g 则只替换一行中的第一个匹配 |
:n1,n2s/a1/a2/g |
将文件中 n1 到 n2 行中所有 a1 都用 a2 替换 |
:%s/a1/a2/g |
将文件中所有的 a1 都用 a2 替换 |
删除文本 |
|
x |
删除光标所在位置的字符 |
X |
删除光标前一个位置字符 |
dd |
删除光标所在行 |
ndd |
删除当前行(包括此行)后 n 行文本 |
dG |
删除光标所在行一直到文件末尾的所有内容 |
D |
删除光标位置到行尾的内容 |
:a1,a2d |
函数从 a1 行到 a2 行的文本内容 |
被删除的内容都放在了剪贴板中,按下 “p” 键粘贴。
复制文本 |
|
p |
将剪贴板中的内容粘贴到光标后 |
P |
将剪贴板中的内容粘贴到光标前 |
y |
复制已选中的文本到剪贴板 |
nyy |
将从光标所在行及其以下共 n 行复制到剪切板 |
yy |
将光标所在行复制到剪贴板,此命令前可以加数字 n,可复制多行 |
yw |
将光标位置的单词复制到剪贴板 |
: n,m y |
将 n 到 m 行复制到剪切板 |
撤销操作 |
|
u |
撤销上一次操作 |
ctrl + r |
反撤销 |
U |
第一次会撤销对光标所在行文本做过的全部操作,第二次使用该命令会恢复对该行文本做过的所有操作。 |
移动光标 |
|
h |
左移 |
j |
下移(j 像下箭头) |
k |
上移 |
l |
右移 |
w 或 W |
光标移动至下一个单词的单词首 |
b 或 B |
光标移动至上一个单词的单词首 |
e 或 E |
光标移动至下一个单词的单词尾 |
fx |
光标移动至当前行中下一个 x 字符处 |
Fx |
光标移动至当前行中上一个 x 字符处 |
gg |
光标移动到文件开头 |
G |
光标移动至文件末尾 |
:n |
可以将光标快速定义到指定行的行首 |
0 |
光标移到行首非空白字符处 |
$ |
光标移到行尾非空白字符处 |
可视化模式 |
|
|
v |
字符可视化模式,此模式下目标文本的选择以字符为单位 |
|
V |
行可视化模式,此模式化目标文本的选择以行为单位 |
|
Ctrl+shift+v |
块可视化模式,该模式下可以选中文本中的一个矩形区域作为目标文本 |
|
多窗口模式 |
|
:sp filename |
横向窗口 |
:vs filename |
竖向窗口 |
ctrl+ww |
切换窗口 |
:q |
关闭该窗口 |
注释 |
|
:line1,line2 s/^/#/g |
在line1到line2的行首添加"#"注释符 |
:line1,line2 s/^#//g |
在line1到line2的行首去掉"#"注释符 |
:line1,line2 s/^////g |
在line1到line2的行首添加"//"注释符(特殊字符须转义) |
可见添加 //
注释符是异常麻烦的事,为此我们有以下两种快捷方式:
1、单行注释快捷键映射
在 home 目录下的 .vimrc 配置文件中定义快捷键:
1 2 3 4 5
| nnoremap <C-m> I//<Esc> 将 ctrl+m 映射为 I//<Esc> ,其中I进入INSERT模式并在行首插入文本,插入//后退出编辑模式
nnoremap <C-k> :s/^\/\///g<Esc> 去除行首的//注释符
|
2、多行注释函数
在 home 目录下的 .vimrc 配置文件中定义以下函数:
1 2 3 4 5 6 7
| function COM(b1, b2) execute a:b1.','.a:b2.'s/^/\/\//g' endfunction
function DCOM(b1, b2) execute a:b1.','.a:b2.'s/^\/\///g' endfunction
|
其中 COM(b1,b2)
功能是为 b1 到 b2 行的行首添加 // 注释符,DCOM(b1,b2)
反之。以下几点供大家了解:
- 调用函数的方式为:
:CALL COM(X1,X2)
- 函数名可以自定义,但首字母必须大写
- 函数内部使用参数时,参数名前必须有
a:
,这是在表明作用域
- execute 函数用来执行命令(命令行模式)
.
是连接符
多插一句,编写此类脚本语言,多使用 chatGPT,甚是方便!
文件配置 |
|
:set nu :set nonu |
设置与取消行号 |
:syn on :syn off |
是否依据语法显示相关的颜色 |
set hlsearch set nohlsearch |
设置是否将査找的字符串高亮显示 |
set autoindent |
设置自动缩进,即每行的缩进同上一节相同 |
set tabstop=4 |
设置 Tab 键宽度为 4 个空格, 强烈建议 |
set mouse=a set selection=exclusive set selectmode=mouse,key |
Vim 编辑器里默认是不启用鼠标的,通过此设置即可启动鼠标。 |
用户配置文件位于主目录 ~/.vimrc
文件备份 |
|
: set backup |
备份该文件到指定目录 |
set backupdir=指定目录 |
在 .vimrc 中设置备份文件的保存目录 |
: w filename |
将当前文件保存到 filename 文件 |
执行外部命令 |
|
!!命令(normal模式下) |
执行命令并将输出结果写入到光标位置 |
文件跳转 |
|
gf |
当光标位于头文件名时,跳转到对应头文件 |
ctrl+o |
返回上一个页面 |
ctrl+i |
返回下一个页面 |
ctrl+t |
返回到之前的标签 |
ctrl+] |
跳到定义处(须 ctags 支持) |
其他 |
|
J |
合并本行和下一行文本 |
ctrl+z 和 fg |
使用 ctrl+z 挂起当前窗口,fg 命令快速返回此窗口 |
ctrl+n |
代码自动补全,包括检测头文件 |