Linux系统Vim编辑器
如果你刚接触 Linux面对黑漆漆的终端和闪烁的光标第一次输入vim filename后可能会手足无措为什么按键盘没反应怎么才能打字甚至不知道该怎么退出别慌你遇到的困惑几乎每个 Linux 开发者都经历过。VimVi IMproved虽然学习曲线陡峭但一旦掌握了它的逻辑这种双手不离开键盘、行云流水般的编辑体验绝对会让你直呼“真香”。今天我们就用最短的时间带你从零驯服这款被称为“编辑器之神”的强大工具vim与viVim与Vi它们是什么关系在开始之前我们先厘清一个概念。Vi (Visual Interface) 是 Unix 系统上历史悠久的经典文本编辑器而 Vim (Vi IMproved) 则是 Vi 的全面增强版它在兼容 Vi 的基础上增加了语法高亮、多级撤销、插件支持等现代化特性。在现代 Linux 系统中执行vi命令通常实际上启动的就是vim。因此本教程将以功能更强大的 Vim 为例进行讲解但所学内容在 Vi 上基本通用Vim的三种模式学习vim可以使用官方的教程在shell下输入命令就能查看vim教程vimtutorVim 与其他编辑器最大的不同在于它的多模式设计。它不像记事本那样打开就能直接打字而是将“浏览/操作”和“输入文字”完全分开。理解并熟练切换这三种模式是掌握 Vim 的第一步也是最关键的一步。命令模式这是 Vim 启动后的默认模式。在此模式下你敲击键盘的大部分按键都被视为命令如移动光标、复制、删除而不是输入文本。这是你进行导航和高效操作的“指挥中心”。输入模式这才是你真正输入和编辑文本的模式行为类似于普通的记事本。屏幕左下角通常会显示-- INSERT --或-- 插入 --字样。底线命令行模式以开始通常用于文件的保存、退出。在此模式下你可以执行保存、退出、全局搜索、批量替换等操作。新手口诀打开 Vim 是命令模式按i进入编辑按Esc回命令按:进底线命令模式保存退出用:wq。命令模式如果需要通过vi/vim编辑器编辑文件请通过如下命令vi 文件路径 vim 文件路径vim兼容全部的vi功能后续全部使用vim命令如果文件路径表示的文件不存在那么此命令会用于编辑新文件如果文件路径表示的文件存在那么此命令用于编辑已有文件命令模式快捷键经过刚刚的快速体验想必同学们对于3种模式的切换有了一定的了解现在我们来看一下在命令模式下的一些常见快捷键模式命令描述命令模式i在当前光标位置进入输入模式命令模式a在当前光标位置之后进入输入模式命令模式I在当前行的开头进入输入模式命令模式A在当前行的结尾进入输入模式命令模式o在当前光标下一行进入输入模式命令模式O在当前光标上一行进入输入模式输入模式esc任何情况下输入[Esc]都能回到命令模式命令模式键盘上、键盘k向上移动光标命令模式键盘下、键盘j向下移动光标命令模式键盘左、键盘h向左移动光标命令模式键盘右、键盘l向右移动光标命令模式0移动光标到当前行的开头命令模式$移动光标到当前行的结尾命令模式pageupPgUp向上翻页命令模式pagedownPgDn向下翻页命令模式/进入搜索模式命令模式n向下继续搜索命令模式N向上继续搜索命令模式dd删除光标所在行的内容命令模式nddn是数字表示删除当前光标向下n行命令模式yy复制当前行命令模式nyyn是数字复制当前行和下面的n行命令模式p粘贴复制的内容命令模式u撤销修改命令模式ctrlr反向撤销修改命令模式gg跳到首行命令模式G跳到行尾命令模式dG从当前行开始向下全部删除命令模式dgg从当前行开始向上全部删除命令模式d$从当前光标开始删除到本行结尾命令模式d0从当前光标开始删除到本行开头底线命令模式编辑模式没有什么特殊的进入编辑模式后任何快捷键都没有作用就是正常输入文本而已唯一大家需要记住的就是通过esc可以退回到命令模式中即可。然后输入命令用于文件的保存、退出模式命令描述底线命令模式:wq保存并退出底线命令模式:q仅退出底线命令模式:q!强制退出底线命令模式:w仅保存底线命令模式:set nu显示行号底线命令模式:set paste设置粘贴模式从打开到退出的完整流程让我们通过一个完整的编辑流程来熟悉最基本的操作。假设我们要新建或编辑一个叫test.txt的文件启动 Vim在终端中输入vim test.txt。如果文件不存在Vim 会新建它如果存在则打开已有文件。此时你处于普通模式。进入编辑状态按下键盘上的i键左下角出现-- INSERT --说明进入了插入模式。现在你可以像在记事本里一样自由输入文字了。保存与退出编辑完成后先按一下Esc键确保回到普通模式。接着输入冒号:进入命令行模式此时光标会跳到屏幕最底端。输入以下命令之一并按回车:wq保存文件并退出Write and Quit。:q!强制退出放弃所有未保存的修改。ZZ在普通模式下直接按两次大写 Z效果等同于:wq。高效移动与编辑在命令模式下使用方向键移动光标效率很低。Vim 提供了一套经典的移动方式让你的手指无需离开主键盘区即可飞速穿梭基本移动h左、j下、k上、l右。快速跳转gg跳转到文件首行、G跳转到文件尾行、5G直接跳转到第 5 行。常用编辑yy复制当前行、dd删除/剪切当前行、p粘贴刚才复制或剪切的内容、u撤销上一步操作。比如你想复制第 3 行的内容粘贴到第 5 行下面只需要在普通模式下依次按下3G跳到第3行 -yy复制 -5G跳到第5行 -p粘贴。让 Vim 更好用原生的 Vim 界面比较简陋没有行号、没有语法高亮。为了让你在入门阶段获得更好的体验我们可以简单配置一下。在终端执行vim ~/.vimrc按i进入插入模式复制以下内容并保存退出# 开启语法高亮看代码更清晰 syntax on # 显示行号方便定位 set number # 在状态栏显示光标当前位置 set ruler # 搜索时忽略大小写 set ignorecase set smartcase # 启用鼠标支持对新手非常友好允许用鼠标点击定位光标 set mousea # 缩进设置Tab键宽度为4个空格 set tabstop4 set shiftwidth4 set expandtab~/.vimrc是 Vim 的用户级配置文件系统默认不会自动为普通用户创建它。找不到~/.vimrc这个文件隐藏属性在 Linux 中以.点开头的文件和目录都是隐藏的。即使该文件存在你直接使用普通的ls命令也看不到它必须使用ls -a才能显示出来。按需创建.vimrc是为了让 Vim 记住你的个人偏好比如开启行号、语法高亮等而存在的。如果你之前没有手动配置过 Vim这个文件自然就不会被生成。既然系统没有自带我们只需要自己动手创建一个即可。你可以直接在终端执行以下命令将常用的基础配置一键写入你的.vimrc文件中cat ~/.vimrc EOF 开启语法高亮代码看起来更清晰 syntax on 显示行号方便定位代码 set number 在状态栏显示光标当前位置 set ruler 搜索时忽略大小写但如果输入了大写字母则区分大小写 set ignorecase set smartcase 启用鼠标支持对新手非常友好可以用鼠标点击定位光标 set mousea 缩进设置将 Tab 键设置为 4 个空格 set tabstop4 set shiftwidth4 set expandtab EOF即使你在.vimrc里写了syntax on在以下几种常见情况下代码依然可能看起来是白茫茫一片。如果你是在终端里直接输入vim打开一个空白界面然后再粘贴或编写 C 代码Vim 此时并不知道你正在写 C它只会把你当成普通文本处理。解决方法在 Vim 中手动告诉它“嘿这是 C 代码”按下冒号:进入底行模式输入set filetypecpp并回车。你会发现高亮瞬间就出来了最佳习惯以后尽量通过带文件名的命令打开 Vim例如vim demo.cpp。只要文件名带有.cpp后缀Vim 就会自动开启 C 语法高亮。