Vim 生存指南:从入门到不自觉爱上命令行编辑
这是一份为初学者准备的 Vim 极简手册,涵盖了从生存退出到高效编辑的核心技能,助你突破学习曲线。
Vim 生存指南:从入门到不自觉爱上命令行编辑
Vim 是一款功能强大、高度可定制的文本编辑器,以其高效的键盘操作著称。虽然它的学习曲线比较陡峭,但一旦掌握,你的编码和编辑速度将会有质的飞跃。
核心概念:模式切换
Vim 与普通编辑器(如 Notepad、VS Code)最大的区别在于模式(Modes)。
- 正常模式 (Normal Mode):默认模式。用于移动光标、删除文本、复制粘贴。你不能直接输入文字。
- 插入模式 (Insert Mode):用于输入文本。就像普通的编辑器一样。
- 命令模式 (Command Mode):用于保存、退出、设置环境(以
:开头)。 - 可视模式 (Visual Mode):用于选择文本块。
关键习惯:如果你不知道自己在什么模式,狂按
Esc键,直到回到正常模式。
生存必备:打开、编辑、退出
如果你被困在 Vim 里出不来,请看这里。
1. 打开文件
在终端输入:
1
vim filename.txt
如果文件不存在,Vim 会新建一个缓冲区。
2. 进入输入模式
刚进去是正常模式,按以下键之一进入输入模式:
i(insert):在光标前开始输入(最常用)。a(append):在光标后开始输入。o(open):在当前行下方新建一行并进入输入模式。
此时屏幕左下角会出现 -- INSERT -- 字样。
3. 保存与退出(在正常模式下操作)
按 Esc 确保回到正常模式,然后输入 : (冒号) 进入命令模式:
:w→ 保存 (Write):q→ 退出 (Quit):wq→ 保存并退出:q!→ 强制退出不保存(如果你改乱了想重来,用这个)
高效编辑术
在正常模式 (Normal Mode) 下操作。
1. 基础移动
虽然可以用方向键,但 Vim 的精髓在于双手不离主键盘区:
h:左j:下k:上l:右
2. 快速跳转
w:跳到下一个单词开头 (word)b:跳到上一个单词开头 (back)0:跳到行首$:跳到行尾gg:跳到文件第一行G:跳到文件最后一行数字 + G:跳转到指定行(如10G)
3. 编辑与撤销
x:删除光标所在的字符dd:删除(剪切)整行dw:删除一个单词u:撤销 (Undo) —— 救命用的键Ctrl + r:重做 (Redo)
4. 复制粘贴 (Yank & Paste)
yy:复制整行p:粘贴到光标后P:粘贴到光标前
查找与替换
查找
- /keyword:向下查找 “keyword”。
- ?keyword:向上查找 “keyword”。
n:跳转到下一个匹配项 (Next)。N:跳转到上一个匹配项。
替换
:s/old/new:替换当前行第一个 old 为 new。:s/old/new/g:替换当前行所有的 old 为 new (global)。:%s/old/new/g:替换整个文件中所有的 old 为 new。
进阶技巧
可视模式 (选择文本)
- 按
v进入可视模式 (Visual)。 - 移动光标选择文本。
- 操作:
y(复制)、d(删除)、>(缩进)。 - 块选择:按
Ctrl + v进入块可视模式(处理列数据利器)。
分屏操作
:sp filename:水平分屏 (Split)。:vsp filename:垂直分屏 (Vertical Split)。Ctrl + w+h/j/k/l:在屏幕间切换。
简单配置 (.vimrc)
原生的 Vim 界面比较简陋。在终端执行 vim ~/.vimrc,复制以下常用配置:
1
2
3
4
5
6
7
8
9
10
syntax on " 开启语法高亮
set number " 显示行号
set relativenumber " 显示相对行号(方便跳转)
set cursorline " 高亮当前行
set tabstop=4 " Tab键宽度
set shiftwidth=4 " 自动缩进宽度
set expandtab " 将Tab转为空格
set autoindent " 换行自动缩进
set ignorecase " 搜索忽略大小写
set smartcase " 搜索时包含大写字母则严格匹配
常见问题:Swap File 提示
出现 found a swap file by the name ".xxx.swp" 通常是因为 Vim 没有正常退出。
解决方法
当你看到提示界面时:
- 如果你确定不需要恢复:按
D(Delete it) 删除交换文件,提示将不再出现。 - 如果你需要找回未保存的内容:
- 按
R(Recover) 恢复。 - 确认内容无误后
:w recovery_file.txt另存为。 - 退出并手动删除
.swp文件。
- 按
手动删除法: 如果在 Vim 内无法删除,退出 Vim 后在终端执行:
rm .文件名.swp(注意文件名开头的点和结尾的 .swp)
Vim 速查表
| 功能 | 快捷键 | 助记 |
|---|---|---|
| 插入/追加/新行 | i / a / o | Insert / Append / Open |
| 正常模式 | Esc | Escape |
| 保存并退出 | :wq | Write & Quit |
| 移动 (左下上右) | h j k l | - |
| 行首/行尾 | 0 / $ | - |
| 文档首/尾 | gg / G | - |
| 删除行 | dd | Delete |
| 复制行 | yy | Yank |
| 粘贴 | p | Paste |
| 撤销/重做 | u / Ctrl+r | Undo / Redo |
终极建议
在终端输入 vimtutor 并回车,花费 30 分钟完成这个官方互动教程,这是掌握 Vim 的最快途径。
This post is licensed under CC BY 4.0 by the author.