| 插入文本 |
|
| 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 |
代码自动补全,包括检测头文件 |