浏览知识库目录

随记

vim用法

Vim 是一个“模式化编辑器”:同一组按键在不同模式下有不同作用。它刚上手比 nano 难,但熟练后编辑代码、配置文件和批量修改文本会非常高效。

1. Vim 的核心:四种模式

模式 用途 如何进入
普通模式 移动、删除、复制、执行命令 启动时默认进入;按 Esc 返回
插入模式 输入文字 iao
可视模式 选择文本 vVCtrl+V
命令行模式 保存、退出、替换、配置 普通模式下按 :

如果不知道自己在哪个模式,先按几次 Esc,通常就能回到普通模式。

2. 打开文件

vim 文件名

例如:

vim notes.txt
vim /etc/hosts
sudo vim /etc/nginx/nginx.conf

打开并跳到第 42 行:

vim +42 notes.txt

打开并搜索某个词:

vim +/keyword notes.txt

3. 输入文字

在普通模式中:

按键 作用
i 在光标前开始输入
a 在光标后开始输入
I 在当前行开头输入
A 在当前行末尾输入
o 在下方新建一行并输入
O 在上方新建一行并输入
R 进入覆盖输入模式
Esc 停止输入,返回普通模式

最基本流程:

vim 文件名
按 i
输入内容
按 Esc
输入 :wq
按 Enter

4. 保存和退出

先按 Esc 回到普通模式,然后输入:

命令 作用
:w 保存
:q 退出
:wq 保存并退出
:x 保存修改并退出
:q! 放弃修改,强制退出
:w 文件名 另存为指定文件
ZZ 保存并退出,不需要输入冒号
ZQ 不保存退出

最重要的“紧急退出”方法:

Esc
:q!
Enter

5. 移动光标

方向键通常可用,但 Vim 用户常用下面这些键:

按键 作用
h
j
k
l
w 跳到下一个单词开头
b 跳到上一个单词开头
e 跳到当前或下一个单词末尾
0 跳到行首
^ 跳到本行第一个非空字符
$ 跳到行尾
gg 跳到文件开头
G 跳到文件末尾
42G 跳到第 42 行
Ctrl+D 向下翻半页
Ctrl+U 向上翻半页
{ / } 跳到上一段或下一段

很多命令可以加数字。例如:

5j    向下移动 5 行
3w    向后移动 3 个单词
10G   跳到第 10 行

6. 删除和修改

这些操作在普通模式下执行:

按键 作用
x 删除光标处字符
dd 删除当前行
D 删除到行尾
dw 删除到下一个单词
diw 删除光标所在的整个单词
cc 删除当前行并进入输入模式
cw 修改当前单词
C 修改到行尾
r字符 替换当前字符
J 将下一行合并到当前行
. 重复上一次修改

例如:

3dd    删除 3 行
d$     删除到行尾
ciw    修改当前整个单词

这体现了 Vim 很重要的“操作符 + 范围”思维:

d + w  = 删除到下一个单词
d + $  = 删除到行尾
c + iw = 修改当前单词
y + y  = 复制当前行

7. 复制和粘贴

按键 作用
yy 复制当前行
3yy 复制当前行及下面两行
yw 复制一个单词
p 粘贴到光标后或下一行
P 粘贴到光标前或上一行
dd 剪切当前行
u 撤销
Ctrl+R 重做

Vim 默认复制到自身的寄存器,不一定是系统剪贴板。支持系统剪贴板的 Vim 可以使用:

"+y    复制到系统剪贴板
"+p    从系统剪贴板粘贴

终端中的 Ctrl+CCtrl+V 通常不是 Vim 的常规复制粘贴键。

8. 选择文本

按键 作用
v 按字符选择
V 按整行选择
Ctrl+V 按矩形块选择
y 复制选择内容
d 删除选择内容
c 删除选择内容并开始输入
Esc 取消选择

例如:

V
用 j 向下选择多行
y
移动到目标位置
p

9. 搜索和替换

搜索:

/hello

Enter 后:

按键 作用
n 下一个匹配项
N 上一个匹配项
?hello 向前搜索
* 搜索光标所在单词
:nohlsearch 清除搜索高亮

替换当前行第一个匹配:

:s/旧内容/新内容/

替换当前行所有匹配:

:s/旧内容/新内容/g

替换整个文件所有匹配:

:%s/旧内容/新内容/g

逐个确认:

:%s/旧内容/新内容/gc

确认时常用:

  • y:替换当前项
  • n:跳过当前项
  • a:替换后续全部
  • q:退出替换

10. 多文件与分屏

打开另一个文件:

:e other.txt

查看已打开的缓冲区:

:ls

切换缓冲区:

:bn
:bp

水平分屏:

:sp other.txt

垂直分屏:

:vsp other.txt

在分屏之间移动:

Ctrl+W,然后按 h/j/k/l

关闭当前窗口:

:q

11. 常用设置

临时显示行号:

:set number

显示相对行号:

:set relativenumber

启用语法高亮:

:syntax on

Unix/Linux 下可以写入 ~/.vimrc,使设置永久生效:

syntax on
set number
set tabstop=4
set shiftwidth=4
set expandtab
set autoindent
set ignorecase
set smartcase

12. Nano 和 Vim 的差异

对比项 Nano Vim
操作方式 打开后直接输入 区分普通、插入、可视等模式
上手难度 很低 较高
快捷键提示 底部直接显示 通常需要记忆
保存退出 Ctrl+OCtrl+X :w:q:wq
编辑效率 适合简单修改 熟练后非常高
搜索替换 基础功能 支持复杂模式和正则表达式
批量编辑 能力有限 很强
多文件与分屏 较弱 内置缓冲区、标签页和分屏
扩展性 较低 可配置,拥有大量插件
适用场景 临时修改配置、写短文本 编程、长期编辑、批量处理
学习成本 几乎没有 需要练习并形成肌肉记忆

简单选择建议:

  • 偶尔在服务器上改两行配置:使用 nano。
  • 经常使用终端、写代码或修改大量文本:值得学习 Vim。
  • 紧急修配置且不熟悉 Vim:nano 更稳妥。
  • Vim 不一定存在,但类 Unix 系统通常会提供 vivi 和 Vim 基础操作相似,不过 Vim 功能更多。

13. 新手最值得先记住的命令

i          开始输入
Esc        返回普通模式
:w         保存
:q         退出
:wq        保存并退出
:q!        不保存退出
dd         删除一行
yy         复制一行
p          粘贴
u          撤销
/关键词     搜索
n          下一个结果

掌握这十几个操作后,已经足够应对大多数基础编辑任务。