Linux 文本编辑器 Vim

📅 2026/7/18 19:48:26
Linux 文本编辑器 Vim
在服务器上紧急修改配置文件四周只有命令行界面——这时候你唯一能依赖的就是 Vim。一、Vim 简介VimVi IMproved是 Linux/Unix 系统中最强大的文本编辑器之一由 Bill Joy 1976 年编写的 Vi 编辑器发展而来。特点说明全键盘操作双手不离开主键盘区编辑效率极高模式化设计不同模式各司其职功能清晰无处不在预装在几乎所有 Linux 发行版和 macOS 中轻量高效资源占用极少SSH 远程连接下流畅运行高度可扩展插件生态丰富可打造成 IDE二、Vim 的三种核心模式必须理解模式理解进入方式核心作用底部提示普通模式指挥官模式发号施令启动 Vim 或按Esc移动光标、删除、复制、粘贴、撤销无或显示文件名插入模式打字员模式专注输入按i/a/o等输入和编辑文本内容-- INSERT --命令模式控制台模式执行高级操作普通模式下按:保存、退出、搜索、替换、设置:提示符三、快速入门高频基础操作3.1 启动与退出vimfile.txt# 打开文件不存在则新建vim10 file.txt# 打开并跳转到第 10 行vim/keywordfile# 打开并搜索 keyword操作命令说明保存并退出:wq或:x或ZZ写入并退出强制退出不保存:q!忽略所有修改仅保存不退出:w保存当前文件另存为:w newfile.txt保存到新文件放弃修改重新加载:e!回退到最后一次保存的状态3.2 光标移动普通模式操作按键说明左 / 下 / 上 / 右h/j/k/l替代方向键更高效词首 / 词尾w/e按单词跳跃行首 / 行尾0/$0是数字零文件开头gg快速回到顶部文件末尾G大写 G快速到底部跳转到第 n 行ngg或:n例如10gg跳到第 10 行翻页Ctrlf/Ctrlb向下/向上翻一页翻半页Ctrld/Ctrlu向下/向上翻半页3.3 编辑操作普通模式操作按键说明复制当前行yyyank复制复制 5 行5yy复制当前行开始的 5 行粘贴到下一行p粘贴在光标之后粘贴到上一行P粘贴在光标之前大写 P删除当前行dddelete删除 5 行5dd删除当前行开始的 5 行删除当前字符x相当于 Delete 键删除到行尾D大写 D撤销uundo可多次撤销重做Ctrlrredo撤销的逆操作重复上次操作.效率神器3.4 进入插入模式的多种方式按键效果i在光标前插入I在行首插入大写 ia在光标后追加A在行尾追加o在下一行新建一行并插入O在上一行新建一行并插入s删除当前字符并进入插入模式S删除当前行并进入插入模式四、进阶操作让你的效率翻倍4.1 可视模式批量操作Vim 的可视模式用于选中文本块然后批量操作命令说明v进入字符可视模式按字符选择V进入行可视模式按行选择Ctrlv进入块可视模式矩形选择——批量注释神器实战案例批量注释 Python 代码Ctrlv进入块选择模式用j/k选中多行的首列按I输入#按Esc所有选中行首自动添加了#4.2 搜索与替换操作命令说明向前搜索/keyword按n找下一个N找上一个向后搜索?keyword反向搜索取消高亮:nohno highlight全局替换:%s/old/new/g全文件替换带确认替换:%s/old/new/gc每个替换都询问确认指定行范围替换:10,20s/old/new/g仅替换 10~20 行4.3 窗口与标签页多文件编辑vimfile1.txt file2.txt# 同时打开多个文件操作命令说明水平分屏:sp [file]split垂直分屏:vsp [file]vsplit切换窗口Ctrlwh/j/k/l在窗口间移动关闭当前窗口:q退出当前分屏标签页新建:tabnew [file]新标签页标签页切换gt/gT下一个/上一个标签页查看所有打开文件:ls列出缓冲区切换到指定缓冲区:b nn 为缓冲区编号4.4 文件操作命令说明:e filename打开新文件:w filename另存为:r filename将文件内容插入到光标位置:!command执行 shell 命令如:!ls:r !command将命令输出插入文件五、Vim 配置打造你的专属编辑器Vim 的强大之处在于其高度可定制性。通过配置文件~/.vimrc和插件系统你可以将 Vim 从一款高效的文本编辑器打造成一个完全符合你个人习惯和工作流的专属开发环境。本节将详细介绍如何配置 Vim让它真正为你所用。5.1 配置文件~/.vimrc~/.vimrc是 Vim 的用户配置文件位于你的家目录下。Vim 启动时会自动读取并执行其中的命令。下面是一个功能更全面、注释更详细的配置示例 基础设置 set nocompatible 禁用 Vi 兼容模式启用 Vim 全部特性 set number 显示绝对行号 set relativenumber 显示相对行号结合 j/k 跳转超好用 set tabstop4 Tab 键在文件中显示为 4 个空格宽度 set shiftwidth4 自动缩进和 、 命令的缩进宽度为 4 空格 set expandtab 将输入的 Tab 键自动转换为空格保持文件一致性 set autoindent 新行自动保持与上一行相同的缩进 set smartindent 根据语法自动调整缩进如 C 语言的花括号 set backspaceindent,eol,start 允许退格键删除缩进、行尾和插入前的字符 搜索设置 set ignorecase 搜索时忽略大小写 set smartcase 如果搜索模式包含大写字母则区分大小写 set hlsearch 高亮显示所有匹配的搜索结果 set incsearch 输入搜索模式时实时高亮匹配项 显示与体验 set showmatch 高亮匹配的括号()、[]、{} set cursorline 高亮当前光标所在行便于定位 set ruler 在状态栏显示光标位置行号列号 set showcmd 在屏幕右下角显示正在输入的命令如 3d set laststatus2 总是显示状态栏即使只有一个窗口 syntax on 开启语法高亮 set backgrounddark 适配深色终端配色 colorscheme desert 设置配色方案可替换为 gruvbox、solarized 等 文件与编码 set encodingutf-8 设置 Vim 内部编码为 UTF-8 set fileencodingutf-8 设置文件保存编码为 UTF-8 set fileencodingsucs-bom,utf-8,gbk,cp936,latin1 自动识别文件编码列表 set nobackup 不创建备份文件如 file.txt~ set nowritebackup 编辑时不创建临时备份文件 set noswapfile 不创建交换文件.swp根据个人习惯服务器环境建议保留 其他实用设置 set mousea 启用鼠标支持在终端中也可用鼠标选择、滚动 set scrolloff5 光标距离顶部/底部保持 5 行距离滚动更平滑 set sidescrolloff5 光标距离左右边缘保持 5 列距离 set wildmenu 命令模式下按 Tab 键显示补全菜单 set wildmodelist:longest,full 补全模式先列出匹配项再自动补全 set clipboardunnamedplus 使用系统剪贴板需要 Vim 编译时支持 clipboard配置生效方式创建或编辑~/.vimrc文件。保存文件后在 Vim 中执行:source ~/.vimrc即可立即生效当前会话。重新启动 Vim 也会自动加载新配置。5.2 常用映射让操作更顺手键盘映射Key Mapping是 Vim 配置的核心它能将复杂的操作序列绑定到简单的按键组合上极大提升效率。 模式切换优化 使用 jj 或 jk 快速退出插入模式避免够 Esc 键 inoremap jj Esc inoremap jk Esc 使用 ; 代替 : 进入命令模式减少 Shift 按键 nnoremap ; : 在普通模式下按空格键取消搜索结果高亮 nnoremap silent Space :nohlsearchCR 文件与窗口操作 Ctrls 快速保存注意终端中 Ctrls 会冻结输出需配合 stty -ixon 使用 nnoremap C-s :wCR inoremap C-s Esc:wCRa 快速切换窗口使用 Ctrl h/j/k/l nnoremap C-h C-wh nnoremap C-j C-wj nnoremap C-k C-wk nnoremap C-l C-wl 快速编辑和重载 .vimrc 文件 nnoremap leaderev :vsp $MYVIMRCCR leaderev 编辑 vimrc nnoremap leadersv :source $MYVIMRCCR leadersv 重载 vimrc 代码编辑增强 使用 Tab 键在括号/引号内跳转搭配自动补全插件效果更佳 inoremap expr Tab pumvisible() ? \C-n : \Tab inoremap expr S-Tab pumvisible() ? \C-p : \S-Tab 快速跳转到行首/行尾在插入模式下也有效 inoremap C-a Home inoremap C-e End cnoremap C-a Home cnoremap C-e End 自定义命令 快速删除行尾空格保持代码整洁 nnoremap leaderws :%s/\s\$//gCR 快速格式化 JSON 文件需要外部工具 jq command! FormatJSON %!jq .关于leader键leader是一个用户自定义的前缀键默认为反斜杠\。你可以通过let mapleader ,将其设置为逗号。上述映射中leaderev意味着先按\或你设置的键再按e和v。5.3 进阶配置技巧除了基础设置和映射还有一些进阶配置可以进一步提升体验条件配置根据文件类型或操作系统进行不同的设置。 仅对特定文件类型生效 augroup filetype_specific autocmd! autocmd FileType python setlocal shiftwidth4 tabstop4 expandtab autocmd FileType javascript setlocal shiftwidth2 tabstop2 expandtab autocmd FileType markdown setlocal wrap linebreak nolist Markdown 自动换行 augroup END 根据操作系统配置 if has(win32) set shellcmd.exe endif状态栏增强利用set statusline自定义状态栏信息。set statusline%F%m%r%h%w\ [FORMAT%{ff}]\ [TYPE%Y]\ [POS%l,%v][%p%%]\ %{strftime(\%d/%m/%y\ -\ %H:%M\)}自动命令Autocmd在特定事件发生时自动执行命令例如保存前自动去除行尾空格。augroup trim_trailing_whitespace autocmd! autocmd BufWritePre * :%s/\s\$//e augroup END通过精心配置你的~/.vimrcVim 将不再是一个陌生的工具而是一个完全贴合你思维和手感的创作伙伴。下一节我们将探索如何通过插件系统将 Vim 的能力扩展到 IDE 级别。六、插件系统从编辑器到 IDE6.1 安装 Vim-Plug插件管理器# 下载 plug.vim 到 autoload 目录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 morhetz/gruvbox 状态栏增强 Plug vim-airline/vim-airline 文件树 Plug preservim/nerdtree 代码补全 Plug neoclide/coc.nvim, {branch: release} 代码注释 Plug preservim/nerdcommenter Git 集成 Plug tpope/vim-fugitive call plug#end()安装插件在 Vim 中执行:PlugInstall6.2 推荐插件清单插件用途coc.nvim代码补全、LSP 客户端支持多语言vim-airline底部状态栏美化nerdtree文件目录树nerdcommenter快速注释/取消注释vim-fugitiveGit 操作:Gstatus,:Gdifffzf.vim模糊搜索文件、文本vim-surround快速添加/修改括号、引号七、Vim 实用技巧锦囊7.1 快速修正技巧场景操作不小心按了Ctrls冻结终端按Ctrlq解除冻结想撤销插入模式下的操作返回普通模式按u删除括号内的所有内容di(或di)删除 inside ( )删除引号内的内容di或di修改括号内的内容ci(change inside选中整个文件内容ggVG格式化整个文件ggG自动缩进7.2 Vim 寄存器和宏寄存器复制粘贴的增强版 使用指定寄存器复制和粘贴 复制到 a 寄存器 ayy 从 a 寄存器粘贴 ap 查看所有寄存器 :reg宏录制自动化重复操作 录制宏到 q 寄存器 qq ... 执行操作 ... q 播放宏 q 播放 10 次 10q7.3 从 Vim 内部执行 Shell:!ls -la 列出当前目录文件 :!git status 查看 Git 状态 :sh 进入 shell输入 exit 返回 Vim八、常见问题与解决问题解决方案忘记保存就退出:q!强制退出不会保存退出后后悔了下次打开时可能会生成.file.txt.swp交换文件用vim -r file.txt恢复无法输入中文Vim 原生支持中文输入但建议在插入模式下切换输入法Vim 配色太丑在~/.vimrc添加colorscheme desert或安装gruvbox等主题键盘映射失效检查终端类型确保set termxterm-256color九、总结Vim 核心命令速查表分类核心命令用途模式切换i/Esc/:插入 ↔ 普通 ↔ 命令光标移动h/j/k/l/gg/G/0/$全键盘导航编辑dd/yy/p/P/u/.删除、复制、粘贴、撤销、重复搜索替换/keyword/:%s/old/new/g查找和批量替换文件操作:w/:q/:wq/:q!保存、退出分屏:sp/:vsp/Ctrlw多窗口编辑可视模式v/V/Ctrlv批量选中操作Vim 不是学会的是用会的编辑文件时不用鼠标遇到不会的操作就去查。