概念

Operator

  • d 删除
  • c 修改
  • y 复制
  • gc 注释,gu大小写

Motion :控制鼠标移动,选取文本对象

  • G,$,0,w,b,}等
  • [n]j,[n]gg,
  • iw,i(,it

learder key

避免一些特殊功能命令与基础命令冲突。

surroud模式

ys,cs,ds

sneak模式

s/S 两个字符快速motion

dzPe:z表示使用sneak模式,删除遇到后面第一个字符“Pe”之前的内容

2yszPe”:底层执行的是ys2zPe”,遇到后面第二个字符“Pe”之前的内容,加上双引号。

实用操作

  1. 转到定义:gd,gh 查看函数说明
  2. 前进后退,Ctrl+i,Ctrl+o
  3. 重命名 f2

窗口切换

Ctrl+数字,切换视图【+0打开侧边栏】

Ctrl+Tab,切换当前视图的文件

Alt+数字,切换当前视图的文件

vim 插入

  • I 在行首插入
  • A 在行尾插入
  • O 在行前插入(另起一行)
  • o 在行后插入(另起一行)

vim搜索(需配置f/F,s/S)

需要在配置文件中开启使用 sneak:

单行内搜索

  • t+单个字符+回车 正向移动到下一个字符所在之处的前一个字符上
  • T +单个字符+回车反向移动到上一个字符所在之处的后一个字符上
  • f +单个字符+回车正向移动到下一个字符所在之处
  • F +单个字符+回车反向移动到上一个字符所在之处

快速移动时用 f,结合修饰符(c、d)时用t

基于全局进行跳转(基于两个字符进行跳转)

  • s + 两个字符 全局查找(和f查找类似,向下查找)
  • S + 两个字符 全局查找(向上查找)

把s/S的功能添加到f/F(需添加配置)

  • f 替换 s
  • F 替换 S

这样F ,f可以同时搜索一个字符和两个字符

  • ; 重复上次的字符查找命令(跳转到下一个字符的位置)
  • , 反转方向查找上次的字符查找命令(跳转到上一个字符的位置)

给 s/S添加新的功能(需添加配置)

  • s 删除当前字符
  • C 删除从当前光标到行尾的字符
  • S 删除本行字符并进入 Insert 模式

vim 全局搜索(和VS Code中的搜索功能类似)

  • / 向后查找
  • ? 向前查找
  • n/N 调到下一个/上一个要查找的词的位置
  • / + 上下左右 查看搜索历史
  • 输入单词的前几个字符进行搜索就可以
  • / + # 向上查找(精确匹配)
  • / + * 向下查找(精确匹配)

基本操作公式:

数字+操作+区域

模式

operator【d,y,c,ys,cs】+motion【iw,t,s】

重命名

前进、后退。Ctrl+i,Ctrl+o

inside模式

ci+括号

ciw

surround模式

csi+符号+符号,将旧的包含符号替换为新的

ysiw+符号

vim 文本对象

文本是结构化的,可以快速选择

vim 文本对象用法

  • 操作符(operator) + (内部i / 外部a) + 文本对象
  • 可视化模式 + (内部i / 外部a)+ 文本对象

vim 文本对象

  • w 一个单词
  • (或) 一对()
  • b 一对()
  • [或] 一对[]
  • {或} 一对{}
  • B 一对块{}
  • <或> 一对<>
  • t XML 标签
  • ' 一对’
  • " 一对”
  • ```一对`
  • s 一个句子(以.,!或?结尾的语句)
  • p 一个段落

vim 文本对象实践示例

  • v + i + b 选中括号里面的内容
  • v + i + ( 选中括号里面的内容(包含括号)
  • d + i + b 删除括号里面的内容
  • v + i + w 选中当前单词

vim-textobj-arguments

  • i + a 不包含分隔符
  • a + a 包含分隔符

实践技巧

  • d + a + a 删除一个参数
  • c + i + a 修改一个参数

vim-textobj-entire

  • d + a + e 删除当前文本所有内容
  • d + i + e 删除当前文本所有内容,但是不包含前面和后面的空格

作者:溪阳
链接:https://juejin.cn/post/7134701599833882655
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。