首页>教程>Linux 命令手册> 交互式文件编辑 >Linux vi vim 命令 - 功能强大的终端文本编辑器

Linux vi vim 命令 - 功能强大的终端文本编辑器

vim 命令(英文全称为 Vi IMproved)是 Linux / Unix 系统中功能强大的纯命令行文本编辑器,它完全兼容 vi 命令的所有命令,并且在 vi 的基础上,新增多级撤销、语法高亮、多窗口、可视化选择等实用功能,可以编辑各类纯文本文件,尤其非常的适合编辑程序代码、系统配置文件等。

[!TIP]

在 Linux 系统中一般默认安装了 vim 命令,且 vi 命令是对 vim 命令的链接。

vi 命令命名的由来:

  • ed 命令的名称由 Editor 中的前两个字符而来。
  • ex 命令是 ed 的功能扩展版,即 Extended 的前两个字符
  • vi 命令是 ex 命令的可视化编辑模式,即 visual 的前两个字符

vim 命令功能说明

vim 命令的特有功能是「多模式编辑机制」,这是其区别于 nanoemacs 等文本编辑器的本质所在,相对于 vi,新增了很多的功能,具体如下:

1)多模式编辑:vim 命令包含三种模式,可以在不同的模式之间进行切换:

  • 命令模式:默认启动的模式,主要的功能是用于执行光标移动、复制、删除等操作
  • 插入模式:用于输入文本,按 ia 键进入,Esc 键退出并进入命令模式
  • 底行模式:用于执行保存、退出、查找、替换等命令

2)增强功能一些功能:

  • 增多级撤销:可撤销多次操作
  • 语法高亮功能:自动识别代码、配置文件语法,用不同颜色标注代码中不同的内容
  • 多窗口与缓冲区:可同时编辑多个文件,切换便捷
  • 可视化选择:可通过鼠标或快捷键选择文本块,方便复制、删除

3)提供了多种运行模式:可以运行 ex view gvim 等模式

多模式详解

vim 命令包含三种模式:

  • 命令模式:默认启动的模式,主要的功能是用于执行光标移动、复制、删除等操作
  • 插入模式:用于输入文本,
  • 底行模式:用于执行保存、退出、查找、替换等命令

注意在命令模式和插入模式下都能删除内容,但是有所不同:

  • 命令模式下:需要使用特定的命令
  • 输入模式下:使用 BackspaceDelete

切换模式

用户可以在不同的模式之间进行切换:

  • 命令模式iaoO 命令进入 输入模式
  • 输入模式Esc 返回 命令模式
  • 命令模式: 进入 底行模式
  • 底行模式 删除 : 进入 命令模式

相似命令对比

与 vim 功能相似的命令主要有 nanoemacs,三个命令的功能简要介绍如下:

  • vim: 纯命令行文本编辑,支持多模式、多窗口、语法高亮,支持多种编辑模式,功能丰富,但是学习起来有一定的难度
  • nano: 纯命令行文本编辑,在编辑界面的下方有命令提示,使用简单
  • emacs: 文本编辑器,支持图形界面和命令行,可以安装扩展插件,学习起来也有一定的难度

vim 命令语法结构

vim 命令的语法简洁,支持多种选项组合在一起使用,同时也提供了多种命令方式,同时可以启动多个文件,具体语法形式如下:

1)通用的语法形式:

vim [options] [file ..]
vim [options] -
vim [options] -t tag
vim [options] -q [errorfile]

语法各部分的详细说明:

  • [options]: 可选的内容,用于指定编辑模式、光标位置、文件格式等,选项可单独使用,也可组合在一起使用
  • [file ..]: 可选的内容,指定需要编辑的一个或多个文件名,如果不指定文件名,编辑器后会打开一个空缓冲区,需要手动新建或打开文件;如果指定了多个文件名,可通过 :next 命令切换文件;如果文件名以 - 开头,为了避免被解析为选项需要在前面加上 --
  • -: 指定从标准输入(stdin)读取要编辑的文件
  • -t tag: 使用标签 tag 定位文件和光标位置
  • -q [errorfile]: 启动快速修复模式,读取错误文件 errorfile,并显示第一个错误

2)其他命令启动方式

ex  // 启动 Ex 模式
view  // 启动只读模式
gvim gview evim eview  // 启动 GUI 模式
rvim rview rgvim rgview  // 启动简易模式

以上的命令也可以使用 vim 命令启动:

  • ex: 等价于 vim -e,启动 Ex 模式
  • view: 等价于 vim -R,启动只读模式
  • gvim: 等价于 vim -g,启动 GUI 模式
  • evim: 等价于 vim -y,启动简易模式
  • rvim: 等价于 vim -Z,启动限制模式

软件包解释说明

  • vim-tiny: 最小化的 Vim 安装包,功能精简,但是提供的命令的名称可能为 vi
  • vim: 完整的 Vim 软件包,功能比 vim-tiny 丰富,在系统中需要单独安装,安装后的使用命令是 vim,但是不支持图形界面。
  • vim-nox: 功能完整的 Vim,支持 Lua, Perl, Python, Ruby 等脚本语言
  • vim-gtk3: 使用 GTK3 库开发的图形界面的 vim,即 gvim。
  • vim-motif: 使用 Motif 库开发的图形界面的 vim,即 gvim,如果要使用图形界面,推荐使用 vim-gtk3

[!NOTE]

在 Linux 系统中一般默认安装的是 vim-tiny,默认使用的命令是 vi,要想要使用 vimgvim 命令需要额外安装对应的软件包,不同的发行版中的软件包的名称可能略有不同。

命令详解

如下讲解的命令只能在命令模式下使用,就是在命令模式下输入这些字符。

移动光标

如下分类给出相关的移动光标命令。

基本移动

基础移动光标命令是最常用的移动光标命令:

  • h:向左移动一个字符
  • j:向下移动一个字符(也就是向下移动一行)
  • k:向上移动一个字符(也就是向上移动一行)
  • l:向右移动一个字符
  • 0:移动到行首
  • $:移动到行尾
  • ^:移动到行首的第一个非空白字符处
  • 0:移动到行首

注:同时可以使用方向键移动光标

按单词移动

如下的命令以单词为单位,移动光标:

  • w, W:向前移动一个单词,文本中的前是指 "行尾的方向,或者下"
  • b, B:向后移动一个单词,文本中的前是指 "行首的方向,或者上"
  • e, E:移动到单词末尾

屏幕内移动

如下的命令在屏幕范围内,移动光标,不会滚动屏幕:

  • H:移动到屏幕顶部,也就是当前显示区域内的第一行
  • M:移动到屏幕中间
  • L:移动到屏幕底部,也就是当前显示区域内的最后一行

文件内移动

如下的命令文件的范围内,快速的把光标移动到特定的位置:

  • G:移动到文件最后一行的行首
  • 行号G:移动到指定 行号 的行首
  • :行号:跳转到第 行号

文本操作

删除文本

使用如下命令在命令模式下删除文本:

  • x:删除当前光标处的字符。
  • X:删除当前光标的前一个字符。
  • dd:删除整行。
  • dw:删除当前光标处的单词。
  • d$:删除到行尾
  • d0:删除到行首
  • :行号d:删除指定 行号 行的内容,如 5d 删除第5行的内容
  • :行号,行号2d:删除指定 行号1行号2 范围内所有行的内容,如 :5,10d 删除第5到第10行的内容
  • :.,$d:从当前行(.)删除到文件末尾($)

如下的命令使用搜索功能,删除文本:

  • :g/pattern/d:删除所有匹配到的内容所在的整行
  • :v/pattern/d:删除所有没有匹配到搜索内容的整行

复制和粘贴

  • yy:复制当前行
  • yw:复制当前的单词
  • y$:复制到行尾。
  • p:将复制或删除的内容粘贴到光标后方。
  • P(大写形式):将复制或删除的内容粘贴到光标后方。

修改命令

如下的修改命令也会进入输入模式,需要按 Esc 返回命令模式:

  • cc:修改整行,即:删除整行的内容后,进入编辑模式,在改行插入内容,可换行继续插入内容
  • cw:从光标处修改单词,不会直接删除单词的内容,而是覆盖原来的字符,但是到结尾后可以继续插入字符,也可换行
  • c$:从光标处修改该行后面的内容,不会直接删除内容,而是覆盖原来的字符,但是到结尾后可以继续插入字符,也可换行
  • R:从光标处在该行内替换内容,与 c$ 非常的相似

如下的修改命令也会进入输入模式,但会自动返回命令模式:

  • r:替换当前光标处的单个字符,替换完成后,自动返回命令模式

撤销和重做

  • u:撤销上一次操作
  • U(大写形式):恢复当前行的原始状态,即:撤销对本行的所有操作
  • .:重复上一次操作

保存和退出

  • :w:保存文件
  • :wq:保存并退出
  • :x:保存并退出(仅当有修改时)
  • :q:退出
  • :q!:强制退出,编辑后,不需保存内容时使用

搜索和替换

在搜索和替换内容时支持使用基本的正则表达式。

正则表达式

在 vi 中可以使用的正则表达式字符有:

  • ^:匹配行首
  • $:匹配行尾
  • .:匹配任意单个字符
  • *:对前面的内容进行 0 次或多次匹配
  • []:匹配中括号内的任意一个字符即可,如 [abc] 表示匹配 a 或 b 或 c
  • \<:匹配单词的开头
  • \>:匹配单词的结尾
  • \(...\):把括号内的匹配到的内容作为一个分组
  • \序号:引号(获取)指定需要的分组匹配到的内容,如 \2 引用第二个分组匹配到的内容

搜索

  • /text:/text:向前(文本中的行尾方向或向下)搜索指定的文本内容,text 替换为你需要搜索的具体的值,会定位到第一次匹配到的内容
  • ?text:?text:向后(文本中的行首方向或向上)搜索指定的文本内容,text 替换为你需要搜索的具体的值,会定位到第一次匹配到的内容
  • n:重复上一次搜索(按上一次搜索的方向进行),每次只匹配一次
  • N:重复上一次搜索(按上一次搜索的反方向进行),每次只匹配一次

替换

使用如下命令替换内容:

  • :s/old/new/:将当前行的第一个 old 替换为 new
  • :s/old/new/g:将当前行的所有 old 替换为 new
  • :1,10s/old/new/g:在第1到10行内将所有 old 替换为 new
  • :%s/old/new/g:在整个文件内将所有 old 替换为 new
  • :%s/old/new/gc:在整个文件内将所有 old 替换为 new,并在每次替换前确认(c)

配置选项

vi 的配置可以在配置文件中配置;还可以在编辑文件时,使用 :set 选项 的方式临时设置。

永久设置

vi 的配置可以在配置文件中配置,每次启动 vi 时,都会加载该配置,方便使用。

在配置文件 ~/.nexrc~/.exrc 添加的常用的配置:

" 显示设置
set number         " 显示行号
set verbose        " 显示详细的错误信息
set showmode       " 显示当前模式

" 缩进设置
set autoindent     " 设置自动缩进
set shiftwidth=4   " 设置缩进为4个空格
set tabstop=4      " 设置制表符显示宽度为4个字符"
set expandtab      " 将Tab键输入转换为空格

" 搜索设置
set ignorecase     " 搜索时忽略大小写

临时设置

使用 :set 选项 的方式临时设置,该设置只对当前的会话有效,关闭文件后,下一次打开文件需要重新设置。

常用的设置选项有:

" 显示设置
:set number         " 显示行号
:set verbose        " 显示详细的错误信息
:set showmode       " 显示当前模式

" 缩进设置
:set autoindent     " 设置自动缩进
:set shiftwidth=4   " 设置缩进为4个空格
:set tabstop=4      " 设置制表符显示宽度为4个字符"
:set expandtab      " 将Tab键输入转换为空格

" 搜索设置
:set ignorecase     " 搜索时忽略大小写

查看设置

在编辑文件时可以使用如下的命令查看配置选项:

:set:显示所有已更改的选项

:set all:显示所有选项

:set option?:显示特定选项的值

环境变量

vi 的配置受以下环境变量的影响:

  • COLUMNS:屏幕列数
  • LINES:屏幕行数
  • TERM:终端类型
  • EXINIT:ex初始化命令
  • HOME:用户主目录
  • SHELL:使用的shell

vim 命令示例

如下示例给出如何使用 vimvi 命令,但是最重要的还是要掌握上面给出的操作命令。

[!NOTE]

在 Linux 系统中安装 vim 后,可能使用的命令有时会有所不同,如果没有 vim 命令,请运行 vi 命令。

默认启动编辑器

不适用任何选项,也不指定任何文件运行命令:

vi

在启动 vim 编辑器后,默认进入命令模式,会打开一个空缓冲区,可以输入内容,但是保存时需要 :w 文件名 来保存文件。

编辑指定文件(基础编辑场景)

指定文件的名称来编辑指定的文件:

vim test.txt

# 或者
vi test.txt

如果文件不存在,保存后会创建该文件。

以只读模式打开文件

使用 -R 选项以只读模式打开文件:

vim -R test.txt

# 或者
view test.txt

指定光标位置启动

使用 +[num] 指定启动后光标定位的行数:

vim +10 test.txt

该示例打开文件后,把光标定位到第 10 行。

启动时执行指定命令

使用 -c 选项复制命令字符串,在启动时执行相应的命令:

vim -c "set number" test.txt

# 或者
vim "+set number" test.txt

该示例在启动时执行 set number 命令,即显示行号。

标签跳转定位

使用 -t 选项赋值字符串,进入文件后定位到指定的字符串:

vim -t main

该示例会把光标定位到 main 字符串的位置。

恢复崩溃的编辑会话

使用 -r 选项,恢复上一次崩溃的编辑内容:

vim -r test.txt

[!NOTE]

vim 会生成一个 .test.txt.swp 临时文件爱你,使用 -r 选项会读取该文件,恢复内容。

使用 diff 模式对比文件

使用 -d 选项指定两个文件,可以对比两个文件的差异:

vim -d test1.txt test2.txt

1)可以使用的操作命令(输入相应的按键):

  • 定位下一处差异:]c
  • 定位上一处差异:[c
  • 把当前差异推送到另一个文件: dp (diff put)
  • 把另一个文件的差异拉到当前文件: do (diff obtain)
  • 手动刷新差异高亮: :diffupdate

2)分屏操作可以使用的命令:

  • 来回切换光标所在的窗口:Ctrl + w 再按 w
  • 左右分屏时跳到右边文件: Ctrl + w 再按 l
  • 左右分屏时跳到左边文件: Ctrl + w 再按 h
  • 上下分屏时跳到下边文件: Ctrl + w 再按 j
  • 上下分屏时跳到上边文件: Ctrl + w 再按 k

[!TIP]

等同于使用 vimdiff test1.txt test2.txt 命令

vim 命令选项详解

vim 命令有很多的选项,而且有些可能适用于不同的 vim 版本或者不同的系统,如下给出 vim 命令所有选项的详细解释说明:

选项值的类型适用范围功能说明
+[num]整数vim / vi启动后,把光标定位在第 num 行;当省略 num 时把光标定位在最后一行,该选项只对第一个打开的文件有效
+/{pat}字符串vim / vi启动后,会把光标定位在第一次匹配到的 pat 搜索模式的行,pat可以是正则表达式,可以使用:help search-pattern` 查看帮助信息
+{command}Ex 命令字符串vim / vi启动后,执行指定的 Ex 命令,如 +set number+"w! test.txt",最多可使用10个命令,当命令内包含空格时需要使用双引号包裹起来,与使用 -c 选项的功能相同
-c {command}Ex 命令字符串vim / vi启动后,执行指定的 Ex 命令,如 +set number+"w! test.txt",与 +{command} 选项的功能相同
-A-vim如果 vim 编译时支持从右到左的阿拉伯语和阿拉伯语的键盘映射,则会启动阿拉伯语模式;否则会报错并退出
-b-vim启用二进制模式,支持编辑二进制可执行文件
-C-vim设置 compatible 选项,即使存在 .vimrc 文件也启用兼容模式,使 vim 行为与 vi 接近
-d-vim启用 diff模式,可以对比2-8个文件的差异,等价于使用 vimdiff 命令,对比时会自动高亮显示差异内容,支持使用快捷键进行跳转
-d {device}路径字符串Amiga系统的 vim打开指定设备作为终端,只有在 Amiga 系统上才能使用
-D-vim启用调试模式,当执行脚本中的第一个命令时进入调试模式
-e-vim / vi启动 Ex 命令模式,等价于执行 ex 命令;在该模式下可以使用 :vi 命令切换到正常的模式
-E-vim启动增强 Ex 模式,相当于调用了 exim 命令
-f-vim启动前台模式,如果使用的是 GUI 版本则不脱离启动的shell;如果是在 Amiga 系统中运行则不重启新窗口,主要用于程序调用 vim,等待编辑完成后继续执行程序
-F-vim如果 vim 编译时支持 FKMAP,启动波斯语模式,如设置 fkmaprightleft 等选项;否则会报错并退出,波斯语支持已在补丁8.1.0932中被移除,该选项基本上已经废弃
-g-vim启用 GUI 图形界面模式,如果当前的 vim 不支持 GUI,会报错并退出
-H-vim如果安装的 vim 支持 RIGHTLEFT,启动从右到左的希伯来语模式,如设置 hkmaprightleft 等选项,否则会报错并退出
-i {viminfo}文件路径字符串或 NONEvim读取或写入 viminfo 指定的文件,而不是使用默认的 ~/.viminfo 文件,如果指定的值为 NONE,则不使用 viminfo 文件,不保存编辑历史等信息
-l-vim启用 Lisp 模式,设置 lispshowmatch 选项,用于编辑 Lisp 语言代码,自动适配 Lisp 的语法的缩进和匹配
-L-vim-r 选项的功能相同,用于恢复崩溃的编辑会话
-m-vim禁用文件修改功能
-M-vim禁止所有修改,会取消 modifiablewrite 选项
-n-vim / vi不使用交换文件,崩溃后无法恢复编辑内容
-N-vim禁用兼容模式,重置 compatible 选项
-nb-vim使它成为 NetBeans 的编辑器服务器,用于关联 NetBeans IDE 编辑的文件
-o[N]整数vim打开 N 个堆叠窗口,每个窗口编辑一个文件;省略 N 时则为每个文件打开一个窗口,可使用 Ctrl+W 快捷键切换窗口,提升多文件编辑效率
-O[N]整数vim打开 N 个并排窗口,每个窗口编辑一个文件;省略 N 时,为每个文件打开一个窗口
-p[N]整数vim打开 N 个标签页,每个标签页编辑一个文件;省略 N 时为每个文件打开一个标签页,可使用 :tabnext:tabprev 命令切换标签页
-P {parent-title}字符串Win32 GUI 的 vim指定父应用的标题,使 vim 在父应用的 MDI 窗口中运行,实现不完善,只适用于部分 Win32 GUI 应用
-r-vim / vi列出所有的可恢复的交换文件,显示恢复相关的信息
-r {file}文件路径字符串vim / vi使用对应的交换文件 .swp,恢复指定文件的编辑会话,如 -r test.txt
-R-vim / vi启用只读模式,设置 readonly 选项,不能保存文件
-s-vim启用静默模式,不输出多余提示信息,当以 Ex 模式启动或 -e-s 选项之前时,才能启动静默模式
-s {scriptin}脚本文件路径字符串vim读取脚本文件,将文件中的字符视为手动输入的命令,如 -s edit.script
-S {file}脚本文件路径字符串vim读取第一个文件后,执行指定的脚本文件;省略 file 时,执行 Session.vim 脚本文件,与使用 -c "source {file}" 选项的功能相同,只有当 -S 为最后一个选项时,才能省略 file
-T {terminal}终端名称字符串vim / vi指定终端类型,如 -T xterm,指定的终端名称需要时 vim 支持的类型,可以是内置的支持的类型或定义在 termcap/terminfo 文件中的类型
-u {vimrc}配置文件路径字符串或 NONEvim使用指定的 vimrc 文件初始化 vim,如果指定为 NONE,跳过所有的初始化,启动纯净版的 vim,如 -u ~/.myvimrc
-U {gvimrc}GUI 配置文件路径字符串vim使用指定的 gvimrc 文件初始化 GUI,如果指定为 NONE,跳过所有的 GUI 界面的初始化
-v-vim启动 vi 模式,相当于执行 vi 命令,只有 运行 "ex" 时 才有用
-V[N]整数vim启用详细输出模式,输出初始化、文件读取等相关信息;N 为详细级别,默认10
-V[N]{filename}filename 为日志文件字符串vim启用详细输出模式,并将详细的输出信息输出到指定日志文件中;N 为详细级别
-w{number}整数vimwindow 选项设置为指定的数值,用来控制窗口大小
-w {scriptout}脚本文件路径字符串vim把输入的所有字符记录到脚本文件中,直到退出vim
-W {scriptout}脚本文件路径字符串vim-w 选项功能相同,但会覆盖已存在的脚本文件
-x-vim如果安装的 vim 支持加密功能,保存文件时启用加密功能,提示输入加密密钥
-X-vim启动时,不连接 X 服务器,能够缩短终端启动时间,但是无法使用窗口标题和剪贴板功能,
-y-vim启动简易模式,相当于执行 evimeview 命令
-Z-vim启用限制模式,禁止启动 shell 命令,相当于执行 rvimrview 命令
---vim / vi标记选项结束,后续参数均视为文件名,当要编辑以 -`` 开头的文件时需要使用
--clean-vim不使用任何的个人配置,启动纯净版的 vim
--cmd {command}Ex 命令字符串vim在执行 vimrc 文件前,先执行指定 Ex 命令,最多可使用10个cmd 命令,与 -c 选项的区别是执行的时机不同
--echo-wid-GTK GUI 版本的 vim在标准输出中显示窗口 ID,只适用于 GTK GUI 版本vim
--gui-dialog-file {name}日志文件路径字符串GUI 版本的 vim在 GUI 模式下,将对话框的标题和消息写入指定的日志文件中,不使用对话框显示信息
-h, -?, --help-vim / vi显示简短的帮助信息并退出
--literal-vim把文件名中的所有的字符作为普通字符,而不是把某些字符作为通配符
--log {filename}日志文件路径字符串vim如果安装的 vim 支持 evalchannel 功能,启动日志功能并写
--nofork-GUI 版本的 vim启用前台模式,不脱离启动的 shell 来运行,与 -f 选项的功能相同
--noplugin-vim不加载任何的插件,当使用 -u NONE 选项时,会默认启用该色设置
--not-a-term-vim告知 vim 用户知道输入/输出未连接到终端,可以避免警告和 2 秒的延迟
--remote-vim连接到 vim 服务器,在服务器上编辑后续指定的文件,如果未找到服务器,会提示用户并在当前的 vim 中编辑文件
--remote-expr {expr}表达式字符串vim连接到 vim 服务器,在服务器中执行表达式并输出结果,如 --remote-expr "expand('%')"
--remote-send {keys}按键指令字符串vim连接到 vim 服务器,向服务器发送指定的按键指令,如 --remote-send ":wq\<CR>"
--remote-silent-vim--remote 选项的功能相同,但在未找到服务器时不会提示任何的信息
--remote-wait-vim--remote 选项的功能相同,但是直到文件编辑完成再退出 vim
--remote-wait-silent-vim--remote-wait 选项的功能相同,但在未找到服务器时不会提示任何的信息
--serverlist-vim列出所有可以找到的 vim 服务器的名称
--servername {name}服务器名称字符串vim指定 vim 服务器的名称,如果与 --remote 配合在一起使用,则连接到指定名称的服务器
--socketid {id}整数GTK GUI 版本的 vim使用 GtkPlug 机制,让 gvim 在另一个窗口中运行,只适用于 GTK GUI 版本 vim,如 --socketid 12345
--startuptime {file}日志文件路径字符串vim启动过程中,将计时信息写入到指定的日志文件
--ttyfail-vim如果标准输入或标准输出不是 tty 终端,则立即退出
--version-vim / vi输出版本信息并退出
--windowid {id}整数Win32 GUI 版本的 vim让 gvim 尝试使用指定的窗口 ID 作为父窗口,并在该窗口内运行,只适用于 Win32 GUI 版本的 vim,当前的实现还不完善

相关配置文件解释说明

vim 命令的运行的时候会依赖很多的系统配置文件、语法文件、文档文件等,以下会给出相关文件的说明:

文件路径功能说明
/usr/local/share/vim/vim??/doc/\*.txtvim 的官方文档文件,包含所有命令、选项、功能的详细说明,vim?? 是 vim 的版本号数字的连写
/usr/local/share/vim/vim??/doc/tags文档标签文件,可以在 vim 的帮助文档中实现快速跳转定位
/usr/local/share/vim/vim??/syntax/syntax.vim系统级语法初始化文件,用于开启和配置 vim 的语法高亮功能
/usr/local/share/vim/vim??/syntax/\*.vim各类语言的语法文件,用于识别不同编程语言的语法并高亮显示,每个文件对应一种语言,如 python.vim
/usr/local/share/vim/vimrc系统级 vim 的初始化配置文件
~/.vimrc当前用户的 vim 初始化配置文件
~/.viminfo当前用户的 vim 历史记录文件
~/.vim/当前用户的 vim 插件和自定义配置目录
/usr/local/share/vim/vim??/colors/系统级的 vim 的配色方案目录
/usr/local/share/vim/vim??/plugin/系统级的 vim 的插件目录
/tmp/.swpvim 的临时交换文件
/usr/bin/vimvim 的可执行文件的路径,多数 Linux 发行版中,vi 命令是对该文件的软链接

结语

vim 命令作为类 Unix 系统中一款功能非常强大的纯命令行文本编辑器,它是 vi 命令的功能增强版本,完全的兼容 vi 命令,同时还新增多级撤销、语法高亮、多窗口、标签页等功能,是在程序开发或系统维护中经常使用到的工具,推荐掌握其基本的使用方法,在你看完本文的内容后就基本掌握了其用法。

本文全面的覆盖了 vim 命令的知识点,给出了其语法结构说明、多模式和操作命令详解、使用示例,最后又给出 vim 命令的全部选项的解释说明,内容非常的全面详细,可以使用本教程一步一步的学习。