跳到主要内容

Vi实用技巧

· 阅读需 3 分钟
XingHunm
Tech Enthusiast

vi(或 vim)是类 Unix 系统中非常常用的文本编辑器,凭借其高效的键盘操作和强大的功能,成为许多开发者和运维人员的首选。掌握 vi 的常用技巧,可以大幅提升编辑和处理文件的效率。

1. 基本模式和操作

vi 有三种主要模式:

  • 命令模式 (Normal mode):默认模式,可移动光标、删除、复制等。
  • 插入模式 (Insert mode):输入文本。
  • 底线命令模式 (Command-line mode):执行保存、退出、搜索等命令(以 : 开头)。

1.1 切换模式(命令模式下触发)

  • i :光标前插入(进入插入模式)
  • I :行首插入(进入插入模式)
  • a :光标后插入(进入插入模式)
  • A :行尾插入(进入插入模式)
  • o :下方新开一行(进入插入模式)
  • O :上方新开一行(进入插入模式)
  • Esc :回到命令模式

2. 光标移动(命令模式下)

  • h:左移
  • l:右移
  • j:下移
  • k:上移
  • 0 :行首
  • ^ :行首非空字符
  • $ :行尾
  • w :跳到下一个单词开头
  • e :跳到单词结尾
  • b :跳到上一个单词开头
  • gg :文件开头
  • G :文件结尾
  • H / M / L :屏幕顶部 / 中间 / 底部

3. 文本操作(命令模式下)

  • x :删除光标所在字符
  • dd :删除整行
  • D :删除从光标到行尾
  • yyY :复制整行
  • p :粘贴到光标后
  • P :粘贴到光标前
  • u :撤销
  • Ctrl+r :重做
  • >> / << :缩进 / 反缩进

3.1 组合操作(命令模式下)

  • 3dd :删除 3 行
  • d$ :删除到行尾
  • y} :复制到段落末尾

4. 搜索与替换

  • /pattern :向下搜索 pattern(命令模式触发)
  • ?pattern :向上搜索 pattern(命令模式触发)
  • n :重复上次搜索(同方向)(命令模式)
  • N :重复上次搜索(反方向)(命令模式)
  • :%s/old/new/g :全文件替换 oldnew(底线命令模式)
  • :%s/old/new/gc :替换时询问确认(底线命令模式)

5. 文件操作(底线命令模式)

  • :w :保存
  • :q :退出
  • :wqZZ :保存并退出
  • :q! :不保存强制退出
  • :e filename :打开文件
  • :r filename :插入另一个文件内容

6. 高级技巧

  • 多行缩进选择:在命令模式下,V 选择行,然后 >< 缩进
  • 多文件编辑
    • :n / :N :下/上一个文件(底线命令模式)
    • :args *.txt :打开多个文件(底线命令模式)
  • 宏录制(命令模式):
    • q{register} 开始录制,例如 qa
    • 执行操作
    • q 停止录制
    • @a 执行宏
  • 折叠代码(命令模式):
    • zf{motion} :折叠
    • zo / zc :打开/关闭折叠
    • za :切换折叠

7. 提高效率的技巧

  • 使用 . 重复上次命令(命令模式)
  • 使用 Ctrl+o 返回上次跳转位置(命令模式)
  • :set number 显示行号(底线命令模式)
  • :set relativenumber 显示相对行号(底线命令模式)
  • 使用 :set hlsearch 高亮搜索(底线命令模式)
  • 使用 :set incsearch 边输入边搜索(底线命令模式)