本文更新于2019-07-23。
说明:下文中,使用{}引起表示自定义变量,根据实际情况填写。使用[]引起表示内容可选,使用<>引起表示按键内容。(+)表示按键组合
模式
vim包括命令模式、编辑模式、底行模式。
编辑模式 <--------------------- 命令模式 ---------------------> 底行模式
---------------------> <---------------------
命令模式
进入vim时使用的是命令模式。
| 0 |
光标移动至该行第一个字符 |
| $ |
光标移动至该行最后一个字符 |
| <Home> |
光标移动至该行第一个字符 |
| <End> |
光标移动至该行最后一个字符 |
| {n}← |
光标向左移动n个字符,默认为一个字符 |
| {n}↓ |
光标向下移动n行,默认为一行 |
| {n}↑ |
光标向上移动n行,默认为一行 |
| {n}→ |
光标向右移动n个字符,默认为一个字符 |
| {n}h |
光标向左移动n个字符,默认为一个字符 |
| {n}j |
光标向下移动n行,默认为一行 |
| {n}k |
光标向上移动n行,默认为一行 |
| {n}l |
光标向右移动n个字符,默认为一个字符 |
| {n}<Space> |
光标向右移动n个字符,默认为一个字符 |
| {n}<Enter> |
光标向下移动n行,至其第一个字符 |
| - |
光标移动到非空格的上一行 |
| + |
光标移动到非空格的下一行 |
| <Page Up> |
光标向上移动一页 |
| <Page Down> |
光标向下移动一页 |
| <Ctrl>(+)b |
光标向上移动一页 |
| <Ctrl>(+)f |
光标向下移动一页 |
| <Ctrl>(+)u |
光标向上移动半页 |
| <Ctrl>(+)d |
光标向下移动半页 |
| H |
光标移动至此屏幕第一行的第一个字符 |
| M |
光标移动至此屏幕中间行的第一个字符 |
| L |
光标移动至此屏幕最后一行的第一个字符 |
| gg |
光标移动至文件第一行的第一个字符 |
| {n}G |
光标移动至文件的第n行的第一个字符,默认为最后一行 |
| <Ctrl>(+)wj |
光标移动至下面的窗口 |
| <Ctrl>(+)w↓ |
光标移动至下面的窗口 |
| <Ctrl>(+)wk |
光标移动至上面的窗口 |
| <Ctrl>(+)w↑ |
光标移动至上面的窗口 |
| <Ctrl>(+)wq |
退出当前窗口 |
| v |
多字符选择,反白选择光标经过的连续字符 |
| V |
多行选择,反白选择光标经过的连续行 |
| <Ctrl>(+)v |
块选择,反白选择光标移动开始和移动结束位置间的矩形文本块 |
| {n}X |
删除光标前n个字符,默认为一个字符 |
| {n}x |
删除光标所在字符起后n个字符,默认为一个字符 |
| d0 |
删除光标前一个字符至该行第一个字符 |
| d$ |
删除光标所在字符至该行最后一个字符 |
| {n}dd |
删除光标所在行开始的n行,默认为一行 |
| d1G |
删除光标所在行至第一行 |
| dG |
删除光标所在行至最后一行 |
| d |
删除反白选择的字符 |
| y0 |
复制光标前一个字符至该行第一个字符 |
| y$ |
复制光标所在字符至该行最后一个字符 |
| {n}yy |
复制光标所在行开始的n行,默认为一行 |
| y1G |
复制光标所在行至第一行 |
| yG |
复制光标所在行至最后一行 |
| y |
复制反白选择的字符 |
| P |
粘贴,如粘贴行则粘贴在当前行上一行 |
| p |
粘贴,如粘贴行则粘贴在当前行下一行,可黏贴矩形文本块 |
| J |
将光标所在行与下一行合并至同一行 |
| {n}c{direction} |
进入插入模式,并向指定方向删除n个字符或n行,direction可为←、↓、↑、→、h、j、k、l |
| i |
进入插入模式,从光标所在字符处开始插入 |
| I |
进入插入模式,从光标所在行第一个非空白符处开始插入 |
| a |
进入插入模式,从光标所在字符的下一字符处开始插入 |
| A |
进入插入模式,从光标所在行最后一个字符后开始插入 |
| o |
进入插入模式,在光标所在行下一行插入新行 |
| O |
进入插入模式,在光标所在行上一行插入新行 |
| r |
使用下一个输入的字符替换光标所在字符,只替换一次 |
| R |
进入替换模式,一直替换光标所在字符直至输入<Esc>,期间可移动光标 |
| u |
撤销上一个操作 |
| <Ctrl>(+)r |
重做上一个撤销的操作 |
| . |
重复上一个操作 |
| n |
重复底行模式输入的前一个查找操作 |
| N |
反方向重复底行模式输入的前一个查找操作 |
| ZZ |
如文件有改动,则保存文件后退出vim;如文件没有改动,则直接退出vim |
编辑模式
编辑模式包括:插入模式,界面左下方有“-- INSERT --”提示;替换模式,界面左下方有“-- REPLACE --”提示。
底行模式
底行模式需使用<Enter>结束输入。
| /{word} |
向下查找word |
| ?{word} |
向上查找word |
| :n |
编辑下一个文件 |
| :N |
编辑上一个文件 |
| :files |
列出打开的所有文件 |
| :sp [{filename}] |
打开新窗口。如不指定filename则使用当前窗口相同的文件 |
| :set {setting} |
修改vim设置 |
| :{n},{m}s/{src}/{dst}/g[c] |
将n(含)至m(含)行的src替换为dst,m使用$表示最后一行。可使用c指定替换前需要提示确认 |
| :r {filename} |
读取指定文件内容并插入至光标所在行的下一行 |
| :[{n},{m}] w {filename} |
将文件内容保存至指定文件,可指定n(含)至(m)行 |
| :w[!] |
保存文件。可使用!强制保存文件,但实际能否保存仍与文件权限有关 |
| :q[!] |
退出vim或退出当前窗口。可使用!强制退出,不保存文件 |
| :wq[!] |
保存文件后退出vim。可使用!强制保存后退出,但实际能否保存仍与文件权限有关 |
| :[ ]{command} |
暂时离开vim,执行Linux命令 |
| <Esc> |
退出底行模式,回到命令模式 |
.vimrc
vim设置。每行一个设置值,可以:开始,可使用"注释该行后面的内容。
| set |
显示所有与默认值不同的设置 |
| set all |
显示当前所有设置 |
| set autoindent |
自动缩进 |
| set backspace=N |
设置编辑模式下退格键的动作。2可以删除任何字符,0和1只能删除刚刚输入的字符,无法删除已存在的字符 |
| set backup |
自动备份文件。即当文件有任何改动时,原文件会在文件所在目录下备份为FILENAME~ |
| set bg=dark |
light |
| set hlsearch |
高亮查找结果 |
| set noautoindent |
取消自动缩进 |
| set nohlsearch |
取消高亮查找结果 |
| set nonu |
取消显示行号 |
| set nu |
显示行号 |
| set ruler |
显示右下角的提示 |
| set showmode |
显示左下角的提示 |
| syntax on |
off |
.viminfo
记录vim的历史操作。
.swap
使用vim打开文件后,会在文件所在目录下生成.FILENAME.swap文件。