跳转至

Vim 笔记

光标移动

单词移动

  • w 下一个单词的开头
  • b 本单词或上一个单词的开头
  • e 本单词或下一个单词的结尾
  • ge 上一个单词的结尾

左右移动

  • h 左移一个字符
  • l 右移一个字符
  • 0 到本行的第一个字符
  • ^ 到本行的第一个非空白字符
  • $ 到行尾
  • f/F{char} 向右/左移动到本行的 {char} 字符
  • t/T{char} 向右/左移动到本行的 {char} 字符前。光标位于 {char} 的左/右侧
  • ; 重复最后的 f/t/F/T 命令
  • , 反向重复最后的 f/t/F/T 命令

上下移动

  • Enter/j/gj/+ 向下移动
  • k/gk/- 向上移动

文本对象移动

  • ( / ) 向后/前移动一个句子,句子定义为以. ! ?结尾,后跟行尾或空格/制表符
  • { / } 向后/前移动一个段落,段落在每个空行后开始
  • [[ / ]] 向后/前移动一个章节,章节在第一列的换页符(^L)后开始

文本对象选择

Ctrl-V 可视模式下,可以使用以下命令选择文本对象:

  • a/iw 选择单词的周围/内部
  • a/is 选择句子的周围/内部
  • a/ip 选择段落的周围/内部
  • a/it 选择标签的周围/内部
  • a/ib or ( / ) 选择被 ( ) 括起来的块的周围/内部
  • a/iB or { / } 选择被 { } 括起来的块的周围/内部
  • a/i [/]/'/"/` 选择被对应符号括起来的块的周围/内部

跳转

  • * 跳转到光标下单词的下一个出现位置
  • # 跳转到光标下单词的上一个出现位置
  • /{string} 跳转到 {string} 的下一个出现位置
  • ?{string} 跳转到 {string} 的上一个出现位置
  • n 按相同方向重复最后的搜索
  • N 按相反方向重复最后的搜索
  • :line 跳转到指定行号
  • gg/G 跳转到第一/最后一行,在第一个非空白字符上
  • {count}% 跳转到文件 {count} 百分比位置,在该行的第一个非空白字符上
  • % 跳转到匹配的括号或引号上
  • ``/'' 跳转到最后一次跳转前的位置
  • H 屏幕顶部
  • M 屏幕中间
  • L 屏幕底部

常见操作符

  • 每个移动命令都可以在操作符命令之后使用,这样操作符就会作用在移动命令覆盖的文本上
  • 如果移动命令包含计数,而操作符之前也有计数,两个计数会相乘。例如 2d3w 删除六个单词
  • 两个重复的操作符会作用于当前行。例如 g~~/guu/gUU 会改变行中所有字符的大小写,dd 会删除当前行
  • d 删除
  • c 修改
  • y 复制到寄存器
  • g~ 切换大小写
  • gu/U 转换为小写/大写
  • zf 定义折叠
  • p 粘贴
  • x 删除字符,等同于 dl
  • o/O 在下方/上方插入行
  • s/S 替换字符/行,等同于 cl/cc
  • C 修改到行尾
  • u 撤销
  • U 恢复行到初始状态
  • Ctrl + R 重做

其他命令

文件

  • :e {相对路径} 打开或创建文件
  • :q 关闭窗口
  • :w 保存
  • :wq 保存并退出
  • :q! 强制退出且不保存
  • :wq! 强制退出并保存

折叠

  • zo 打开折叠
  • zc 关闭折叠
  • za 打开/关闭折叠
  • zR 打开所有折叠
  • zM 关闭所有折叠
  • zf 定义折叠
  • zd 删除折叠

替换

  • :{scope}s/{from}/{to}/{tag}
  • {scope}:默认为当前行
    • % 文件中的所有行
    • 10,20 从第十行到第二十行
    • 1,$ 从第一行到最后一行
    • .,$ 从当前行到最后一行
    • 'a,'b 从标记a的行到标记b的行
  • {tag}:默认替换第一个匹配的字符串
    • g 在范围内全局替换
    • c 每次替换时提示确认
    • i/I 不区分/区分大小写

标记

  • m{a-z/A-Z} 在光标位置设置标记
  • a-z 文件内标记
  • A-Z 全局标记
  • `{a-z/A-Z} 跳转到标记位置
  • '{a-z/A-Z} 跳转到标记所在行的第一个非空白字符

多窗口

  • :sp 水平分割窗口
  • :vsp 垂直分割窗口

  • q{a-z} 记录宏到寄存器
  • q 停止记录
  • {count}@{a-z} 重播宏 {count} 次

导航

  • gt/T 向前/后切换标签页
  • {num}gt 切换到第 {num} 个标签页
  • {num}gT 向后切换 {num} 个标签页
  • Ctrl + 0 聚焦到侧边栏,按 L 打开选中的文件
  • Ctrl + {num} 聚焦到第 {num} 个组