系列:Linux 命令基础
- Tmux 入门教程:让 SSH 断线和多任务终端不再中断
- Tree 命令教程:快速查看和导出目录结构
- Linux 搜索命令教程:find、grep、locate、rg 应该怎么选
- Linux 压缩与解压命令教程:tar、zip、gzip、xz、zstd 一次讲清
- Linux 文本处理命令教程:cat、less、head、tail、wc、sort、uniq
- Linux 权限命令教程:chmod、chown、umask
- Linux 进程查看与管理:ps、top、htop、kill、jobs
- Linux 网络排查命令:ss、curl、dig、ping、traceroute
- systemctl 与 journalctl 入门:管理服务和查看日志
- rsync 使用指南:服务器文件同步与备份
- Linux 服务器安全基础:SSH、用户权限、防火墙和 fail2ban
- 线上问题排查流程:日志、端口、进程、磁盘、网络怎么一步步看
- 深入浅出:Linux 树状目录神器 tree 命令的安装与使用指南
- Linux 系统 Vim 编辑器终极指南:从入门到精通
- SSH 隧道实战:本地转发、远程转发和动态转发
- SSH Config 使用指南:别名、跳板机与多服务器管理
背景
Vim 是 Linux 和 macOS 系统上预装的文本编辑器,通过纯键盘操作完成代码编写、配置修改等任务。在服务器环境中,图形界面往往不可用,Vim 就成为必备工具。但它的模式切换和快捷键设计让很多初学者卡在退出编辑这一步。本文从实际使用的角度,整理 Vim 的安装、模式概念、高频操作、可视模式、.vimrc 配置和插件管理方法,帮助快速跨过入门阶段。
这里假设你有一个可用的终端,已通过 SSH 或本地登录 Linux 系统。Vim 通常已预装,如果没有,使用包管理器安装即可。
步骤
1. 检查或安装 Vim
多数发行版会预装 Vim 的精简版(vim-tiny),完整功能需要安装完整版。
# Debian/Ubuntusudo apt update && sudo apt install vim
# CentOS/RHEL/Fedorasudo dnf install vim
# 确认版本及是否支持剪贴板等特性vim --version安装后可通过 vim 命令直接启动。
2. 理解三种基本模式
Vim 的核心设计是模式切换,所有操作都基于当前所在的模式。
普通模式:打开文件后的默认模式,用于导航、删除、复制等。在任何模式下按 Esc 可返回普通模式。
插入模式:用来输入文本。从普通模式进入的常用方式:
i在光标前插入a在光标后插入o在下方新起一行并插入O在上方新起一行并插入
命令模式:在普通模式下按 : 进入,用于保存、退出、搜索、执行配置命令。输入命令后按回车执行,执行完自动回到普通模式。
Vim 官方文档对模式的详细说明见 Vim 用户手册。
3. 打开、保存与退出
终端中执行:
vim filename # 打开已有文件或新建文件编辑完成后,在普通模式下按 : 进入命令模式:
:w # 保存:q # 退出:wq # 保存并退出:q! # 放弃修改并退出:w newname.txt # 另存为如果意外卡在 Vim 里,连续按 Esc 再输入 :q! 强制退出。
4. 光标移动与文本编辑基础
普通模式下的光标移动是效率的基础,熟练后可以脱离方向键。
h 左移一个字符 j 下移一行k 上移一行 l 右移一个字符0 跳到行首 $ 跳到行尾gg 跳到文件开头 G 跳到文件末尾50G 跳到第50行Ctrl+f 向下翻页 Ctrl+b 向上翻页编辑操作需要搭配动作和范围:
x # 删除光标所在字符dd # 删除当前行yy # 复制当前行p # 在光标后粘贴u # 撤销Ctrl+r # 重做5. 批量操作与组合命令
Vim 的命令可以组合数字和范围来批量处理。
3dd # 删除3行(从当前行开始)5yy # 复制5行d$ # 从光标处删到行尾d0 # 从光标处删到行首yiw # 复制光标所在单词ciw # 删除当前单词并进入插入模式ci" # 修改双引号内的内容(光标需在引号内)这类操作需要一些练习,但它们一旦成为肌肉记忆,编辑文本的速度会明显提升。
6. 可视模式:选中、复制、缩进
可视模式允许像用鼠标拖选一样选中文本块,然后执行操作。按 v 进入字符可视模式,按 V 进入行可视模式,按 Ctrl+v 进入块可视模式。选中区域后可以:
y # 复制选中内容d # 删除选中内容> # 向右缩进(一次 shiftwidth)< # 向左缩进例如:选中多行后按 > 统一增加缩进,在调整代码结构时很常用。
7. 搜索与全局替换
普通模式下按 / 进入正向搜索,? 进入反向搜索。
/error # 向下搜索 error?TODO # 向上搜索 TODOn # 跳转到下一个匹配N # 跳转到上一个匹配替换操作在命令模式下进行:
:%s/old/new/g # 全文替换,把 old 换成 new:10,20s/old/new/g # 仅替换第10到20行:%s/old/new/gc # 每次替换前询问确认官方对搜索和替换的详细参数说明可参考 Vim 帮助 :substitute。
8. 窗口与标签页管理
Vim 支持分割窗口和多标签页,便于同时查看多个文件。
:split file2.txt # 水平分屏打开 file2.txt:vsplit file3.txt # 垂直分屏打开 file3.txtCtrl+w + 方向键 # 在分屏窗口间切换Ctrl+w = # 均分窗口大小:tabnew file4.txt # 新建标签页打开文件gt # 下一个标签页gT # 上一个标签页这在对照配置文件或代码时很实用。
9. 配置 .vimrc 文件
Vim 的个性化设置通过主目录下的 .vimrc 文件实现。
vim ~/.vimrc常用配置示例:
" 基础外观set number " 显示行号set relativenumber " 显示相对行号(便于跳转)syntax on " 开启语法高亮
" 缩进设置set tabstop=4 " tab 显示宽度set shiftwidth=4 " 自动缩进宽度set expandtab " 将 tab 转换为空格set autoindent " 继承上一行缩进
" 搜索相关set incsearch " 边输入边高亮匹配set hlsearch " 保留搜索结果高亮set ignorecase " 忽略大小写set smartcase " 有大写字母时区分大小写
" 其他实用项set mouse=a " 允许鼠标点击定位set backupdir=~/.vim/tmp//,~/tmp//,. " 集中存放备份文件set undofile " 持久化撤销记录,关闭文件后仍可撤销详细的配置选项可以在 Vim 内通过 :help options 查看官方说明。
10. 用 vim-plug 管理插件
插件可以扩展 Vim 的功能,比如文件树、状态栏、代码补全。推荐使用 vim-plug 管理插件。
安装 vim-plug:
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim在 .vimrc 中添加插件列表:
call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree' " 文件树Plug 'vim-airline/vim-airline' " 底部状态栏增强Plug 'tpope/vim-commentary' " 快速注释/取消注释(gcc)Plug 'morhetz/gruvbox' " 配色主题
call plug#end()保存文件后,在 Vim 中执行 :PlugInstall 即可安装所有插件。之后重启 Vim 或执行 :source ~/.vimrc 让配置生效。
NERDTree 的用法::NERDTree 打开文件树,在文件树窗口内按 ? 查看帮助。vim-commentary 可以用 gcc 快速注释/取消注释当前行,适合频繁调试代码。
常见问题
1. 卡在 Vim 里退不出来
按 Esc 几次确保回到普通模式,然后输入 :q! 强制退出。如果想保存后再退,输入 :wq。
2. 粘贴外部代码时缩进错乱
这是自动缩进和粘贴内容中的多余空格叠加导致的。粘贴前在普通模式下执行:
:set paste粘贴完后再执行 :set nopaste 恢复常规缩进。或者在 .vimrc 中设置快捷键切换粘贴模式:
set pastetoggle=<F3>3. 打开文件时提示 swap 文件已存在
这是因为上次 Vim 异常退出留下了交换文件(.filename.swp)。提示信息中会给出几个选项,通常按 R 恢复上次的修改,或按 D 删除交换文件(确认旧修改不需要保留)。如果经常遇到,可以在 .vimrc 中指定 swap 文件统一存放:
set directory=~/.vim/swap//,~/tmp//,.4. 保存文件时提示 “E212: Can’t open file for writing”
通常是权限问题。用 ls -l filename 检查文件权限。如果是只读文件,可以用 :w !sudo tee % 以 sudo 权限写入,但更稳妥的做法是退出后用 sudo vim filename 重新编辑。
5. 显示中文等非 ASCII 字符乱码
在 .vimrc 中明确指定编码:
set encoding=utf-8set fileencodings=utf-8,gbk,gb2312,cp936set termencoding=utf-8如果打开已有文件仍乱码,可以用 :e ++enc=gbk 强制以 gbk 编码重新加载。
6. 撤销历史在关闭文件后丢失
默认 Vim 的撤销记录只在编辑会话内有效。要持久化,在 .vimrc 中加入:
set undofileset undodir=~/.vim/undo并确保 ~/.vim/undo 目录存在。之后每个文件都会生成一个 undo 历史文件,下次打开时可以继续使用 u 撤销。
总结
Vim 的上手成本主要花在理解三种模式以及记住常用快捷键上。初期可以把基础操作(移动、删除、复制、粘贴、撤销、保存退出)练到不假思索,再逐步接触可视模式、窗口管理、.vimrc 定制和插件。内置的 vimtutor 命令提供了一个约30分钟的交互式教程,适合初次学习。遇到不清楚的命令或配置,直接在 Vim 里用 :help 关键字 查阅文档,能解决大部分问题。