Skip to content

仲灏小栈

仲灏约 1 分钟

常用操作

cw: 向后删除当前单词 I: 到行首并进入编辑模式 0i ^i ea | wi: 在当前单词后插入

  • C : 删除当前字符到行尾所有内容 cb: 删除单词

  • bi: 在当前单词开始处添加 d + $ : 删除当前到行尾为止 dd: 删除当前行

  • viw | diw | ciw 选择|删除 当钱单词

  • daa 删除⼀个参数

  • cia 修改⼀个参数

  • 删除到某个地方所有的内容

    • 移动的时候⽤ f
    • 结合 c / d 使⽤ t
  • 删除函数

    • % 匹配括号
    • vim-indent-object
      • vii
      • vai
      • vaI dap 基于段落 text-object daI 基于 vim-indent-object

移动

  • 字符: h j k l
  • 基于单词/字串的移动:
    • e|E: 移动到(单词|字串)的结尾
    • b|B: 移动到上一个单词|字串的开头
    • w: 移动到单词的开头
    • ge: 移动到上一个单词的结尾
  • 行首: 0 ^(到第一个不是blank字符的位置)
  • 行位: $ g_(到本行最后一个不是blank字符的位置).
  • { 跳转上⼀个段落
  • } 跳转下⼀个段落

标记

  • 单⽂件 m+⼩写字⺟ mm
  • 多⽂件 m+⼤写字⺟ mM
  • 跳转 ' 跳转到标记的⾏
  • ` 跳转到标记的⾏和列(更精准)
  • gd jump to definition
  • 使⽤ :jumps 查看

插入

  • 行首: I
  • 行尾: A
  • 行前: O
  • 行后: o

操作

  • d: 删除
  • c + 移动命令c 用于删除选定的文本并进入插入模式。例如:
    • cw:删除光标到单词末尾的文本,并进入插入模式。
    • c$:删除光标到行末的文本,并进入插入模式。
    • c2w:删除光标后的两个单词,并进入插入模式。
  • C : 删除当前字符到行尾所有内容
  • y: 复制 操作 ( 并进入insert模式 )
  • x ( s ): 删除当前字符
  • X : 删除光标前的字符
  • dd ( S ) 删除当前光标的字符 ( 并进⼊ insert 模 )
  • 复制当前行: yy
  • 粘贴: p
  • r: 替换当前字符
  • R: 替换多个字符
  • u: undo
  • ctrl + r: redo

vim-surround

  • c s hange existing surround to desired
  • y s dd desired surround around text defined by
  • d s elete existing surround
  • S Surround when in visual modes (surrounds full selection)

掌握悬浮显示&⼤⼩写&注释

  • 悬浮显示 gh hover
  • ⼤⼩写
    • normal gu gU
    • 可视化 u U
    • ⼤⼩写互换 ~
  • 注释
    • gc 单⾏注释
    • gC 多⾏注释 tip: normal 和 可视化模式通⽤

选择模式

  • v: 选择字符
  • V: 选择行
  • c-v: 块
  • o: 切换可视区的光标位置
  • gv 会到上一次选择的区域
  • A | I : 选中多多行后进行的批量编辑

操作

  • 删除: d

  • $ 删除至行尾

  • 0 删除至行首

  • l 删除后一个字符

  • h 删除前一个字符

  • j 删除一行和一个下换行

  • k 删除一行和一个上换行

  • 数字 + d

  • c 跟 d一样 , 只不过操作完成后进入了insert模式

  • 基于单词/字串移动

    • e: 移动到单词的结尾
    • w: 移动到单词的开头
    • b: 移动到上一个单词的结尾
    • ge: 移动到上一个单词的开头k ![[Pasted image 20241215230653.png]]

文本对象

i: 内部 a 外部 operator + (内部/外部)+ ⽂本对象 可视化模式 + (内部/外部)+⽂本对 b | (或) ⼀对() B {或} ⼀对块{} s ⼀个句⼦ p ⼀个段落 t XML标签

  • vim-textobj-arguments
    • ia 不包含分隔符
    • aa 包含分隔符
  • ivim-textobj-entire
    • e 删除当前⽂本所有内容,但是不包含前⾯和后⾯的空格
    • ae 删除当前⽂本所有内容

移动

  • Ctrl-f(forward)向下滚动⼀屏
  • Ctrl-b(backward)向上滚动⼀屏
  • Ctrl-d 向下滚动半屏
  • Ctrl-u 向上滚动半屏
  • Ctrl-e 向下滚动⼀⾏
  • Ctrl-y 想上滚动⼀⾏
  • zz 将当前⾏置于屏幕中央
  • zt(top) 将当前⾏置于屏幕顶部附近
  • zb(bottom) 将当前⾏置于屏幕底部
  • gg 跳到⽂件⾸
  • G 跳到⽂件尾
  • ⾏数+gg 跳到指定⾏
  • ⾏数+G 跳到指定⾏
  • Ctrl + o:这个命令会让你返回到上一个光标位置。
  • Ctrl + i:如果你想前进到下一个光标位置,可以使用这个命令。

搜索

单行

f 正向移动到下⼀个 {char} 所在之处 t 正向移动到下⼀个 {char} 所在之处的前⼀个字符上 F 反向移动到上⼀个 {char} 所在之处 T 反向移动到上⼀个 {char} 所在之处的后⼀个字符上 ; 重复上次的字符查找命令 , 反转⽅向查找上次的字符查找命令

  • 使⽤技巧
    • 移动的时候⽤ f
    • 结合 c / d 使⽤ t

全局

  • / 向后查
  • ? 向前查
  • n/N
  • /# 向上查
  • /* 向下查

电脑配置

长按快速移动

javascript
# 全局开启
>>> defaults write -g ApplePressAndHoldEnabled -bool false
# 全局关闭
>>> defaults write -g ApplePressAndHoldEnabled -bool true
# vscode开启
>>> defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false
>>> defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool true
# firefox开启
>>> defaults write org.mozilla.firefox ApplePressAndHoldEnabled -bool false
# firefox关闭
>**>> defaults write org.mozilla.firefox ApplePressAndHoldEnabled -bool true
json

讨论区

欢迎留下想法与补充