四种模式
一般模式,插入模式,命令行模式,可视模式。
一般模式下:
- 插入、替换:
i:在光标所在字符前插入内容。a:在光标所在字符后插入内容。I:在行首插入内容。A:在行尾插入内容。o:在光标所在行下一行插入内容。O:在光标所在上一行插入内容。r:按下后再按一个字符,将光标所在处原来的字符替换为这个字符。R:进入替换模式。
 - 删除:
x:删除光标所在字符。nx:从光标所在字符算起,向后删除 n 个字符。dd:删除光标所在行。ndd:从光标所在行算起,向下删除 n 行。D/d$:删除光标所在位置至行尾的所有字符。d^:删除光标所在位置至行首的所有字符。J:删除光标所在行的换行符。.:重复上一次删除操作。
 - 复制、粘贴:
yy:复制光标所在行。nyy:从光标所在行算起,向下复制 n 行。p:在光标所在行的下一行粘贴内容。P:在光标所在行的上一行粘贴内容。.:重复上一次粘贴操作。
 - 撤销、重做:
u:撤销一次编辑。Ctrl+r:撤销一次撤销操作。
 - 定位:
h/j/k/l:光标向 左/下/上/右 方向移动一位。nh/nj/nk/nl:光标向 左/下/上/右 方向移动 n 位。gg:光标移动到文件首行行首。G:光标移动到文件尾行行首。0/^:光标移动到当前行首。$:光标移动到当前行尾。nG:光标移动到第 n 行行首。n$:光标下移 n 行,并定位到行尾。n[Enter]:n 为数字,光标向下移动 n 行。
 - 查找字符串:
/words:查找 words,按n查找下一个,N查找上一个。?words:查找 words,按n查找上一个,N查找下一个。
 - 翻页:
Ctrl+f:向下翻页。Ctrl+b:向上翻页。
 
- 插入、替换:
 插入模式下:按
[ESC]退出到一般模式。一般模式下输入
:进入命令行模式。命令行模式下:w:将修改写入文件。q:退出 vim。wq:写入并退出。w!:文件没有写权限,但当前用户可以修改文件时,可以用该命令强制写入。wq!:强制写入并退出。q!:放弃修改并退出,!告诉 vim 无需保存。e!:撤销全部操作。w 文件名:将文件另存为。w! 文件名:将文件另存为,若已存在,则强行覆盖。!:暂时退出,按任意键回来继续编辑。数字:光标移动到第 n 行行首。/words、?words:查找字符串。用法与一般模式下的相同。1,20s/words1/words2/gc:将 1~20 行的 words1 替换为 words2。s和g是替换命令,加c表示由用户一个一个决定要不要替换,不加c则直接替换。行数可以是数字,也可以是$,$表示末行。r 文件名:读取指定文件,将其内容插入到当前文件光标所在行的后面。
可视模式:
- 分为 可视模式,可视行模式,可视块模式。
- 可视模式:一般模式下按 
v进入,可选择字符。 - 可视行模式:一般模式下按 
V进入,可选择块。 - 可视块模式:一般模式下按 
Ctrl+v进入,可选择块。 
 - 可视模式:一般模式下按 
 - 可视模式常用操作:
- 大多数一般模式下的操作。
 - 复制:
y,粘贴:p,删除:d,插入:I。 - 按 
[ESC]退出到一般模式。 
 
- 分为 可视模式,可视行模式,可视块模式。
 
多文件编辑
同时打开多个文件:vim file1 file2
在命令行模式下输入 xn 切换到下 x 个文件,输入 xN 切换到上 x 个文件,输入 files 查看打开的文件的信息。
多窗口功能
进入 vim 后,命令行模式下输入 sp filename 分割窗口。没有 filename 则分割窗口并在新窗口中编辑当前文件,有 filename 则分割窗口并在新窗口中编辑指定文件。
按 Ctrl+w+j 光标移动到下一个窗口;按 Ctrl+w+k 光标移动到上一个窗口。
光标移动到想关闭的窗口,按 Ctrl+w+q 或 输入 :q 关闭窗口。
环境参数设置
命令行模式下:
set all:查看所有环境参数。set nu:显示行号。set nonu:不显示行号。set autoindent:与上一行自动对齐。set tabstop=4:设置制表符宽度。set shiftwidth=4:设置自动缩进的宽度。filetype indent on:根据文件类型自动缩进。syntax on/off:是否显示关键词颜色。set bg=dark/light:设置色调样式。dark 和 light 是两种不同样式,默认为 light。set:显示与默认值不同的设置值。set ruler:显示右下角状态栏。set showmode:显示左下角状态栏
如果在 vim 中输入上面的设置,这些设置只会在当前 vim 中有效,重启 vim 就无效了。
永久设置环境参数:将以上设置添加到 /etc/vimrc 或 ~/.vimrc 文件中。如果添加到 /etc/vimrc 中,所有用户都会拥有这些设置;如果添加到 ~/.vimrc 中,仅该家目录的拥有者拥有这些设置。
