vim

vim

Vim 是一个 多模态 编辑 器:它对于插入文字和操纵文字有不同的模式。Vim 是可编程的(可以使用 Vimscript 或者像 Python 一样的其他程序语言),Vim 的接口本身也是一个程序语言:键入操作(以及其助记名) 是命令,这些命令也是可组合的。
normal模式下按i进入insert模式;按r进入replace模式;按v进入visual模式;按<S-V>ji进入visual-line模式;按^V进入visual-block模式,,再按esc返回normal。
按:进入command-line模式,输入q<enter>退出当前选项卡,qa<enter>退出所有。

命令行模式

control+v的三种表示方法:^V Ctrl-V <C-V>

保存

命令行模式下,:help 后输入想查询的内容可看到功能,注意要问带冒号的命令则也要带冒号,例如:help :w。:w表示保存更改。

打开文件和缓存

  • :e {文件名} 打开要编辑的文件
  • :ls 显示打开的缓存

窗口管理

  • 分割窗口
    • :splitCtrl-w s: 水平分割窗口
    • :vsplitCtrl-w v: 垂直分割窗口
  • 关闭窗口
    • :q:close: 关闭当前窗口
    • :qa:qall: 关闭所有窗口
  • 移动光标到其他窗口
    • Ctrl-w w: 在窗口之间循环切换
    • Ctrl-w h/j/k/l: 移动光标到左/下/上/右的窗口

缓冲区管理

  • 查看缓冲区列表
    • :buffers:ls
  • 切换缓冲区
    • :bn:bp: 切换到下一个/上一个缓冲区
    • :b {number}: 切换到指定编号的缓冲区
  • 删除缓冲区
    • :bd {number}: 删除指定编号的缓冲区

选项卡管理

  • 创建新选项卡
    • :tabnewgt
  • 关闭选项卡
    • :tabclose:tabc
  • 切换选项卡
    • gt: 切换到下一个选项卡
    • gT: 切换到上一个选项卡
    • :tabn {number}: 切换到指定编号的选项卡

normal模式下的移动

  • h: 向左移动一个字符
  • j: 向下移动一行。在命令前加上数字,表示重复执行该命令的次数。例如,5j 表示向下移动5行。
  • k: 向上移动一行
  • l: 向右移动一个字符
  • w: 移动到下一个单词的开头
  • b: 移动到上一个单词的开头
  • e: 移动到下一个单词的末尾
  • ^: 移动到行首
  • $: 移动到行尾
  • gg: 移动到文件开头
  • G: 移动到文件末尾
  • Ctrl+u: 向上滚动半屏
  • Ctrl+d: 向下滚动半屏
  • Ctrl+f: 向下滚动一屏
  • Ctrl+b: 向上滚动一屏
  • 跳转: 使用ft可以跳转到当前行中下一个或上一个出现的指定字符。例如,fx 表示跳转到下一个出现的字母x。
  • 行数: :{行数}\<CR> 或者 {行数}G ({行数}为行数)
  • 杂项: % (找到配对,比如括号或者 /* */ 之类的注释对)

f命令

  • 功能: 将光标移动到当前行中下一个出现的指定字符处。
  • 用法: fx,其中x表示你要跳转到的字符。例如,fw表示跳转到下一个单词的开头。

t命令

  • 功能: 将光标移动到当前行中下一个出现的指定字符之前
  • 用法: tx,其中x表示你要跳转到的字符。例如,tw表示跳转到下一个单词的开头之前

扩展用法

  • 重复跳转: 使用分号;可以重复上一次的f或t命令。例如,如果你输入fa,然后输入;,光标会继续跳转到下一个出现的”a”。
  • 反向跳转: 使用逗号,可以反向重复上一次的f或t命令。例如,如果你输入fa,然后输入,,光标会跳转到上一个出现的”a”。
  • 结合数字: 在f或t命令前加上数字,可以指定跳转的次数。例如,2fw表示跳转到下一个单词的开头,然后再跳转到下一个单词的开头。
  • 大写F和T: F和T命令与f和t类似,但它们是向左搜索。例如,Fx会向左搜索第一个出现的x。
  • 屏幕: H (屏幕首行), M (屏幕中间), L (屏幕底部)

insert模式

Vim 的编辑命令也被称为 “动词”, 因为动词可以施动于名词。

o命令

  • 功能: 在当前行的下方插入一个新行,并进入插入模式。
  • 用法: 在正常模式下,将光标移动到想要插入新行的位置,然后输入o

O命令

  • 功能: 在当前行的上方插入一个新行,并进入插入模式。
  • 用法: 在正常模式下,将光标移动到想要插入新行的位置,然后输入O

基本用法

  • 删除字符:
    • x:删除光标下的字符
    • X:删除光标前的字符
  • 删除整行:
    • dd:删除当前行
  • 删除到行尾:
    • d$:删除从光标处到行尾的所有字符
  • 删除到行首:
    • d0:删除从光标处到行首的所有字符
  • s 替换字符(等同于 xi

与移动命令结合

  • dw:删除到下一个单词的开头
  • de:删除到下一个单词的结尾
  • db:删除到上一个单词的开头
  • dd:删除当前行
  • 2dd:删除当前行和下一行
  • daw:删除光标所在单词

撤销操作:

  • u: 撤销上一步操作。连续按多次u可以撤销多个步骤。并且如果从insert模式返回到normal模式以后按u,会撤销在insert模式的所有操作。

重做操作:

  • Ctrl+r: 重做上一步撤销的操作。

其他撤销相关命令:

  • U: 撤销对当前行的所有修改。
  • :undo:显示撤销列表,并允许你选择要撤销到哪个状态。

c命令:修改文本

  • cw: 修改光标后的一个单词
  • ce: 修改光标后的一个单词,直到单词末尾
  • cb: 修改光标前的一个单词
  • cc: 修改整行
  • c$: 修改从光标到行尾的所有字符
  • c0: 修改从光标到行首的所有字符
    c和d唯一的区别就是在删除内容以后将你设置为insert状态

结合数字

  • c2w: 修改接下来的两个单词
  • c3l: 修改接下来的三个字符
  • c.$: 修改到句号。
  • c): 修改到下一个”)”。
  • c{: 修改到下一个”{“。

r命令

rx: 将光标下的字符替换为x。例如,ra 将把光标下的字符替换为”a”。

  • 字符选取:
    • v:进入可视模式,然后使用光标键选择字符。
  • 单词选取:
    • vw:选中光标所在单词。
    • ve:选中光标所在单词到单词末尾。
    • vb:选中光标所在单词到单词开始。
  • 行选取:
    • V:进入行可视模式,选中整行。甚至可以按方块形状进行选择。
    • ggVG:选中整个文件。

复制

选中文本后,使用y命令进行复制。例如:

  • vwyy:选中当前单词并复制。
  • Vyy:选中当前行并复制。

粘贴

复制后的文本可以使用p命令进行粘贴。

  • p:在光标下方粘贴。
  • P:在光标上方粘贴。

大小写命令

#单个字符

  • ~ 命令: 将光标下的字符大小写反转。

单词

  • g~iw 将光标下的单词大小写反转。
    • 例子:将单词”hello”转换为”HELLO”。

  • guu 将当前行所有字母转换为小写。
  • gUU 将当前行所有字母转换为大写。
  • gu0 将光标所在位置到行首的字母转换为小写。
  • gU0 将光标所在位置到行首的字母转换为大写。
  • gu$ 将光标所在位置到行尾的字母转换为小写。
  • gU$ 将光标所在位置到行尾的字母转换为大写。

可视模式

  • gugU 在可视模式下,选中部分文本后,使用gu将其转换为小写,使用gU将其转换为大写。

修饰语

修饰语有 i,表示“内部”或者“在内”,和 a, 表示“周围”。

  • ci( 改变当前括号内的内容
  • ci[ 改变当前方括号内的内容
  • da' 删除一个单引号字符串, 包括周围的单引号

vim
https://blakehansen130.github.io/2024/10/20/vim/
发布于
2024年10月20日
许可协议