Post

Vim 生存指南:从入门到不自觉爱上命令行编辑

这是一份为初学者准备的 Vim 极简手册,涵盖了从生存退出到高效编辑的核心技能,助你突破学习曲线。

Vim 生存指南:从入门到不自觉爱上命令行编辑

Vim 是一款功能强大、高度可定制的文本编辑器,以其高效的键盘操作著称。虽然它的学习曲线比较陡峭,但一旦掌握,你的编码和编辑速度将会有质的飞跃。


核心概念:模式切换

Vim 与普通编辑器(如 Notepad、VS Code)最大的区别在于模式(Modes)

  1. 正常模式 (Normal Mode):默认模式。用于移动光标、删除文本、复制粘贴。你不能直接输入文字。
  2. 插入模式 (Insert Mode):用于输入文本。就像普通的编辑器一样。
  3. 命令模式 (Command Mode):用于保存、退出、设置环境(以 : 开头)。
  4. 可视模式 (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。

进阶技巧

可视模式 (选择文本)

  1. v 进入可视模式 (Visual)。
  2. 移动光标选择文本。
  3. 操作:y (复制)、d (删除)、> (缩进)。
  4. 块选择:按 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 没有正常退出。

解决方法

当你看到提示界面时:

  1. 如果你确定不需要恢复:按 D (Delete it) 删除交换文件,提示将不再出现。
  2. 如果你需要找回未保存的内容
    • R (Recover) 恢复。
    • 确认内容无误后 :w recovery_file.txt 另存为。
    • 退出并手动删除 .swp 文件。

手动删除法: 如果在 Vim 内无法删除,退出 Vim 后在终端执行: rm .文件名.swp (注意文件名开头的点和结尾的 .swp)


Vim 速查表

功能快捷键助记
插入/追加/新行i / a / oInsert / Append / Open
正常模式EscEscape
保存并退出:wqWrite & Quit
移动 (左下上右)h j k l-
行首/行尾0 / $-
文档首/尾gg / G-
删除行ddDelete
复制行yyYank
粘贴pPaste
撤销/重做u / Ctrl+rUndo / Redo

终极建议

在终端输入 vimtutor 并回车,花费 30 分钟完成这个官方互动教程,这是掌握 Vim 的最快途径。

This post is licensed under CC BY 4.0 by the author.