Vim编辑器从入门到精通:模式、快捷键、配置、插件

SSH 到一台服务器上改配置,手头没有 VS Code,能用的编辑器基本就 Nano 和 Vim。Nano 上手快,但改大型项目源码时效率差 Vim 一大截。这一篇把 Vim 的模式、常用快捷键、基础配置和插件入门讲清楚,目标是看完就能独立改文件,不再一进去就出不来。

一、Vim 的核心:五种模式

很多人怕 Vim,是因为打开文件后敲键盘全是乱跳,根本输不了字。问题不在 Vim,在没搞懂模式。Vim 里同一把按键在不同模式下做的事完全不同。

模式 进入方式 干什么用
普通模式(Normal) 打开文件默认就在,按 Esc 随时回来 移动光标、复制删除、切换模式
插入模式(Insert) 普通模式下按 i / a / o 正常打字编辑
可视模式(Visual) 普通模式下按 v / V / Ctrl+v 选中文本块
命令行模式(Command-line) 普通模式下按 : / / / ? 保存、退出、替换、搜索
替换模式(Replace) 普通模式下按 R 覆盖式输入

刚打开文件时你在普通模式。 这是第一句话,也是最重要的一句话。在普通模式下按键盘的字母不是输入字符,是发命令。想打字先按 i,想回到普通模式按 Esc。

普通模式下进入插入模式

按键 作用
i 在光标前插入
a 在光标后插入
o 在下方新开一行插入
O 在上方新开一行插入
I 跳到行首插入
A 跳到行尾插入

i 够用一辈子。o 在改代码时特别顺手,不用手移到行尾再按回车。

二、移动光标:hjkl 和更快的跳转

基础移动

按键 作用
h j k l 左、下、上、右(代替方向键)
w 下一个单词开头
b 上一个单词开头
e 当前单词结尾
0 跳到行首
$ 跳到行尾
^ 跳到行首第一个非空白字符
gg 跳到文件第一行
G 跳到文件最后一行
数字 + G 跳到第数字行,如 12G 跳到第 12 行
Ctrl+d / Ctrl+u 向下/向上翻半屏
Ctrl+f / Ctrl+b 向下/向上翻一整屏

hjkl 这四个键在主键盘区,手不用挪到方向键,熟练后效率高很多。不强迫自己,用方向键也能干活。

三、编辑操作:删、复制、粘贴、撤销

删除与修改

按键 作用
x 删除光标下一个字符
dd 删除整行
dw 删除到下一个单词开头
d$ 或 D 删除到行尾
d0 删除到行首
cc 或 S 删除整行并进入插入模式
cw 删除当前单词并进入插入模式
u 撤销
Ctrl+r 重做(撤销的撤销)

Vim 的删除其实就是剪切------删掉的内容进了寄存器,按 p 就能粘出来。这也是 dd 之后 p 能复制整行的原理。

复制与粘贴

按键 作用
yy 复制整行
yw 复制一个单词
y$ 复制到行尾
p 在光标后粘贴
P 在光标前粘贴
数字 yy 复制数字行,如 5yy 复制 5 行

数字前缀在 Vim 里到处都能用:3dd 删 3 行,10j 往下跳 10 行,2w 跳两个单词。

四、搜索与替换

搜索

按键 作用
/关键词 向下搜索
?关键词 向上搜索
n 跳到下一个匹配
N 跳到上一个匹配
* 搜索光标下的单词

替换

命令行模式下输入:

复制代码
:%s/old/new/g

把整个文件里的 old 替换成 new。% 表示全文,s 是 substitute,g 表示一行里所有匹配都换(不加 g 只换每行第一个)。

想替换前确认一下,加 c:

复制代码
:%s/old/new/gc

每处替换都会问你一次 y/n/a/q/l。

五、保存与退出

按键 作用
:w 保存
:q 退出
:wq 保存并退出
:q! 强制退出不保存
:x 保存并退出(和 :wq 等价)
ZZ 保存并退出(普通模式快捷键)
ZQ 不保存直接退出

新手最容易卡在这里:改完文件发现按什么都退不出来。记住 Esc 先回到普通模式,再 :q! 强行退出,永远不会丢系统。

六、可视模式:选块操作

按键 作用
v 字符可视模式,按字符选
V 行可视模式,按整行选
Ctrl+v 块可视模式,选矩形块

块可视模式(Ctrl+v)是 Vim 处理多行编辑的利器。比如想给连续几行前面都加 # 注释:

  1. Ctrl+v 进入块模式
  2. 用 j/k 选中要注释的行
  3. 按 I 进入行首插入
  4. 输入 #
  5. 按 Esc

所有选中的行都会加上 #。批量改代码缩进、加前缀,用块模式比手敲快得多。

七、.vimrc:一份能用的基础配置

Vim 默认配置很朴素。把下面这段存成 ~/.vimrc,打开文件时 Vim 会自动加载:

复制代码
" 显示行号
set number
" 相对行号,配合数字+j/k 快速跳行
set relativenumber

" 缩进设置
set tabstop=4
set shiftwidth=4
set expandtab
set autoindent
set smartindent

" 搜索
set hlsearch
set incsearch
set ignorecase
set smartcase

" 界面
set cursorline
set scrolloff=5
set wildmenu
set showcmd

" 关闭备份和交换文件提示
set nobackup
set noswapfile

" 语法高亮
syntax on

" 文件类型检测,加载对应插件
filetype plugin indent on

每一行的作用都写在注释里。几个关键点:

  • expandtab 把 Tab 键转成空格,避免不同编辑器打开缩进乱掉。
  • incsearch 边输入边高亮匹配项,不用按回车就知道搜到哪了。
  • smartcase 搜索时全小写忽略大小写,只要有一个大写就区分大小写,日常最顺手。
  • noswapfile 关掉每次打开文件都生成 .swp 临时文件,个人用够了;团队协作环境建议留着。

改完 .vimrc 后在 Vim 里跑 :source ~/.vimrc 立即生效,不用重开。

八、插件入门(点到为止)

Vim 原生已经能干很多事,但写大型项目时还想有自动补全、文件树、语法检查,就要靠插件。现在主流的插件管理器是 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'   " 底部状态栏
call plug#end()

打开 Vim 跑 :PlugInstall 就会自动下载安装。NERDTree 用 :NERDTreeToggle 呼出文件树,vim-airline 直接在底部显示当前模式、文件名、行列号。

新手不建议一上来装一堆插件,先把原生快捷键练熟。插件是加分项,不是必需品。

九、知识扩展:为什么 Vim 要搞这么多模式

普通编辑器里,"打字"和"移动光标"用的是同一套按键,Vim 偏要分开,听着反人类。设计逻辑其实很简单:编辑文本的人,大部分时间不是在打字,而是在移动光标、看代码、删改。Vim 把高频操作(移动、删除、复制)放在普通模式,让手不用离开主键区;把低频操作(真正输入文字)切到插入模式。用熟之后,从一个函数跳到另一个函数、删掉几行、复制粘贴,全程手指不挪键盘中间区域,这就是 Vim 党说的"指尖效率"。

代价是学习曲线陡。记住一句话就够跨过去:Esc 永远是回普通模式,普通模式是你的大本营。 进了插入模式不害怕,按 Esc 回来就行。多改几次配置文件,肌肉记忆两周就建立了。

相关推荐
m0_646429971 小时前
Docker 完整核心知识点总结(超通俗易懂版)
运维·docker·容器
wdfk_prog1 小时前
LWIP教程 09:从 `tcp_slowtmr()` 到 Fast Retransmit——TCP 超时重传与重复 ACK
服务器·网络·数据库·网络协议·tcp/ip
‎ദ്ദിᵔ.˛.ᵔ₎1 小时前
linux 进程信号 (上)
linux·服务器
亚川楼宇自控系统数据中心厂家2 小时前
IBMS 集成管理系统:如何打通楼宇自控实现建筑一体化管控
运维
15Moonlight2 小时前
Linux网络(02):Socket 编程 UDP
linux·网络·udp
迪康Defender2 小时前
终端安全审批体系设计:如何平衡安全管控与业务连续性
运维·服务器·安全·运维开发·学习方法·业界资讯·远程工作
wuminyu2 小时前
ForkJoinPool窃取线程在扫描其他WorkQueue时的随机采样算法与Phase线程挂起唤醒机制解析
java·linux·c语言·jvm·c++
liulilittle3 小时前
Linux 下 select 测试函数
linux·服务器·网络·数据库·c++·select·c