Ubuntu根本-vim编辑器

[复制链接]
发表于 2026-10-3 16:14:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

一、前言:Vim 是什么,为什么还要学它

在 Ubuntu 上做运维和开发,编辑配置文件躲不开 Vim——/etc/nginx/nginx.conf、/etc/hosts、systemd unit 文件,都没法用图形编辑器改。

Vim 是从 VI 发展出来的一个文本编辑器,具有代码补全、错误跳转等功能,在程序员中被广泛使用。它最核心的设计理念是"命令的组合":通过各种文本间移动、跳转命令与其他普通的编辑命令灵活组合,可以更高效地完成文本编辑。

换句话说,Vim 不靠"鼠标点菜单",靠的是手指不离开主键区敲一串短命令。上手头两天会很不顺,一旦形成肌肉记忆,编辑速度是普通编辑器比不了的。

二、四种模式:先把它理清楚

Vim 常见的模式有普通模式、插入模式、命令模式和可视模式。

模式怎么进入干什么
普通模式(Normal)Vim 启动时默认进入移动光标、删除、复制、粘贴;按 Esc 总能回到这里
插入模式(Insert)普通模式下按 i / I / o / O / a / A / r / R真正的文本输入编辑
命令模式(Command)普通模式下按 :查找、存盘、替换字符等操作
可视模式(Visual)普通模式下按 v高亮选取文本后的普通模式

一句话记住进出规则:Vim 启动就在普通模式;在其他任何模式下按 Esc 都能回到普通模式。这个"普通模式是中枢"的设计,是 Vim 所有快捷键的前提。

可视模式还有两个子模式

  • 可视行模式:以行为单位选取,按 V(大写)进入。
  • 可视块模式:以块(竖列)为单位选取,按 Ctrl+v 进入。批量改缩进、批量加注释前缀,靠的就是它。

三、安装

在 Ubuntu 系统中可以用以下命令安装 Vim:

  1. 打开终端;
  2. 输入 sudo apt install vim 命令并按下回车键;
  3. 等待安装完成。
sudo apt update
sudo apt install vim

安装完成后,在终端中输入 vim 就能打开 Vim 编辑器。装完第一件事建议确认版本:vim --version | head -1。

一个小提示

Ubuntu 默认预装的是 vi.tiny(精简版,不支持语法高亮)。如果你在 sudo apt install vim 之前敲 vi 打开,会觉得界面很朴素——装完 vim 后直接敲 vim 即可,别用 vi。

四、配置:一份够用的 ~/.vimrc

Vim 的个人配置放在用户主目录的 ~/.vimrc,没有的话直接新建一个:

vim ~/.vimrc

下面这份配置是初学者的高频项,照抄即可:

" 设置显示行号
set nu

" 设置缩进为 4 个空格
set tabstop=4
set shiftwidth=4
set expandtab

" 开启语法高亮
syntax on

" 显示状态栏
set laststatus=2

" 开启自动缩进
set autoindent

" 增强搜索匹配显示
set hlsearch

" 不备份文件
set nobackup

逐项说明:

  • set nu(number):显示行号。看日志日志、改配置时定位行号极其重要。
  • set tabstop=4 + set shiftwidth=4 + set expandtab:一个 Tab 显示 4 格宽、缩进宽度 4、输入 Tab 时展开成空格而不是真 Tab。这一组是写代码的标配,能避免不同机器打开缩进错乱。
  • syntax on:语法高亮,写代码时清晰很多。
  • set laststatus=2:总是显示状态栏(显示当前文件、模式、行列位置)。
  • set autoindent:自动缩进,换行后延续上一行缩进。
  • set hlsearch:搜索结果高亮,找关键词时一眼能看到全部匹配。
  • set nobackup:不生成 filename~ 备份文件,省得目录里堆一堆垃圾。如果这个开关关掉,编辑器异常退出时恢复原文的希望也很小,改配置文件前习惯性 cp 一份更稳。

配置写完后要么重开 Vim,要么在命令模式敲 :source ~/.vimrc 立即生效。

五、基本使用:四种模式的实际操作

Vim 有多种工作模式,下面是必须掌握的操作。

普通模式(打开后默认)

  • 移动光标:方向键,或者主键区的 h(左)、j(下)、k(上)、l(右)。
  • x:删除光标所在的字符。
  • dd:删除整行(前面加数字可删多行,如 3dd)。

插入模式

普通模式下按 i(当前光标位置前插入)、a(光标位置后插入)、o(当前行下一行插入新行并进入插入模式)等键进入;在插入模式下做文本输入、修改等操作;编辑完成后按 Esc 回到普通模式。

这三条的区别值得单独记:i 插在光标前、a 插在光标后(所以多一个字符)、o 直接另起一行。

命令模式(按 : 进入)

  • :w:保存文件。
  • :q:退出 Vim。
  • :wq:保存并退出。
  • :q!:有未保存的更改且不想保存,直接退出(! 是"强制")。
  • :set nu / :set nonu:临时开/关行号。
  • 权限不够时 :w! 强制保存(需要对应文件系统权限)。

顺带说查找:命令模式下输入 /关键词 执行查找,按 n 下一个、N 上一个;替换是 :%s/旧/新/g(% 表示全文,末尾 g 表示每行所有处)。

可视化模式

普通模式下按 v 进入可视化模式,可选择文本进行复制、粘贴、删除等操作。配合前面的 V(按行选)和 Ctrl+v(按块选),就能实现批量操作。

替换模式

普通模式下按 R 进入替换模式,可直接替换光标处起的文本(和插入模式的区别是不产生"插入后退格"的行为)。

实用组合:Ctrl+v 进入块选 → 按 I 或 A → 输入内容 → Esc。这会给选中块的每一行都加上同一段前缀——给整段配置批量加 # 注释,两秒搞定。

六、用 Vim 编辑文本文件:完整流程

  1. 打开终端,输入 vim 文件名 打开指定的文本文件。如果文件不存在,Vim 会创建一个新的空文件——这一点常被误当成"文件已存在",保存时才发现有拼写错误。
  2. 进入 Vim 后默认处于普通模式。
  3. 按 i 进入插入模式(或 a / o),编辑文本。
  4. 编辑完成后按 Esc 回到普通模式。
  5. 在普通模式下做删除、复制、粘贴,例如 dd 删除当前行、yy 复制当前行(nyy 复制 n 行)。
  6. 粘贴用 p(当前行下一行粘贴)/ P(上一行)。
  7. 保存输入 :w;退出 :q;保存并退出 :wq;不保存退出 :q!。

另一个高频场景是改完才发现没权限:普通用户直接 vim /etc/xxx 进得去、:w 报 E212: Can't write file。两个解法::w !sudo tee %(临时提权写回),或者干脆退出后用 sudo vim 重开。后者更省事,但同理要小心 :q! 会丢掉改动。

七、代码编辑的常用操作

缩进和格式化

普通模式下使用 = 命令对选中的代码块进行自动缩进:在可视模式选中一段后按 =。想保持统一风格,回到配置里的 shiftwidth 那三项就好。

代码折叠

Vim 支持代码折叠,方便查看和管理大型代码块:za 切换折叠(开/关),zM 全部关闭、zR 全部打开。看几百行的一个配置文件时特别有用。

语法高亮

不同编程语言会有相应的语法高亮表现,使代码布局更清晰。若装的是精简版 Vim 或文件后缀不被识别,高亮会失效,此时用 :set syntax=php 手动指定语言即可。

快速移动

  • Ctrl+f 向前翻页、Ctrl+b 向后翻页。
  • gg 跳到文件首行、G 跳到文件末行。
  • 0 行首、$ 行尾。
  • :行号 直接跳到指定行(配 :set nu 看行号用)。

查找和替换

命令模式下输入 /要查找的代码片段 执行查找;替换命令 :%s/old/new/gc(c 表示逐个确认)。

八、多窗口编辑

在 Vim 中可以使用以下命令进行多窗口编辑:

:sp 或 :split   水平分割窗口,在当前窗口下方打开一个新窗口,显示相同的缓冲区内容
:vs 或 :vsplit  垂直分割窗口,在当前窗口右侧打开一个新窗口,显示相同的缓冲区内容
:new            打开一个新的窗口,显示一个空的缓冲区

要同时编辑两个文件:

vim file1 file2    # 启动时同时打开两个文件,每个文件占用一个窗口
:sp file2          # 当前窗口中打开文件 file2,并水平分割窗口
:vs file2          # 当前窗口中打开文件 file2,并垂直分割窗口

在多个窗口之间切换:

Ctrl+w + 方向键    按方向键切换到前/下/上/后一个窗口
Ctrl+w h/j/k/l     切换到左/下/上/右边的窗口
Ctrl+w w           依次向后切换到下一个窗口

要调整窗口大小:

Ctrl+w +        增加当前窗口的高度
Ctrl+w -        减少当前窗口的高度
Ctrl+w >        增加当前窗口的宽度
Ctrl+w <        减少当前窗口的宽度

多标签页:另一种组织方式

窗口分割适合"并排对照",标签页适合"按任务分组"::tabnew file 新建标签、gt 切到下一个标签、gT 切上一个、:tabclose 关闭。拉开三个以上窗口对比时,改用标签页清爽得多。

缓冲区:分割窗口的隐藏前提

要重点理解窗口(window)和缓冲区(buffer)是两回事::sp 分出来的是"同一个缓冲区的两个视图",改一处另一处跟着变;而打开多个文件后它们各自是独立的 buffer,用 :ls 查看、:bnext / :b 2 切换。关窗口不等于关文件。

九、初学者最容易卡住的三件事

  1. 进去了出不来:不清楚自己处在哪种模式。对策:先狂按 Esc 回到普通模式,再敲 :q!。记住 Esc 永远有效。
  2. 改完没保存就退出,白忙一场:习惯性用 :wq 或 :x,别用裸 :q。改系统配置前先 cp 原文件 原文件.bak。
  3. 方向键没反应、被吞掉:你正在插入模式,方向键在输入文字。按 Esc 退回普通模式再导航。

小结

Vim 的学习曲线陡,但拐点很明确:

  • 四种模式:普通(中枢,Esc 回得去)、插入(i/a/o)、命令(:)、可视(v / V / Ctrl+v)。
  • 一条主干操作链:vim 文件 → i 编辑 → Esc → dd/yy 删复制 → :w/:wq/:q!。
  • 一份配置:~/.vimrc 里 set nu、tabstop/shiftwidth=4+expandtab、syntax on、set hlsearch、set nobackup。
  • 多窗口::sp / :vs 分割,Ctrl+w 系列切换与调大小;对照用分窗,分组用标签页。

把"移动 → 选择 → 执行"这个三步法练熟,Vim 就从"最难用的编辑器"变成"最快的手工具"。

(本文由 qidao123.com企服评测-应用市场 编辑提示整理:示例基于 Vim 8.x,适用于 Ubuntu 20.04 / 22.04 / 24.04 等使用 apt 的发行版。)

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表