%
匹配括号,适用于[]{}() 等
使用前提:当前光标必须在括号上,比如当前光标在 (,按 %光标就会定位到 ),也就是说会在当前光标的括号基础上匹配它的结束括号
vim-indent-object
基于缩进
ii
当光标在函数体内或对象内,选中的是函数内内容或对象内的内容
示例1:
function a() {
const b = 1
if (b > 1) {
console.log(111)
}
}
光标在 a 函数内,使用 vii 选中函数体内部
注意如果光标在 if语句内部使用 vii 选中的就是 if 语句内部的代码
示例2:
{
path: '/',
name: 'layout',
component: Layout,
children: [
{
path: 'shop',
component: ShopAplication
}
]
},
在光标在大括号内选中大括号内的代码,光标在children 内部的大括号时,选中的是 内部大括号里的代码
ai
选中它的上一层缩进下代码,不包括上一缩进的结束符
示例:
function a() {
const b = 1
if (b > 1) {
console.log(111)
}
}
选中的是
function a() {
const b = 1
if (b > 1) {
console.log(111)
}
aI
选中它的上一层缩进包括它本身缩进的所有代码
示例:
function a() {
const b = 1
if (b > 1) {
console.log(111)
}
}
选中的是
function a() {
const b = 1
if (b > 1) {
console.log(111)
}
}
缺陷
- 基于缩进,所以光标必须在函数体或者对象内部
- 如果光标在最外层,那会把所有同级别的都删掉
比如:
function a() {
console.log(1)
}
function b() {
console.log(2)
}
光标在 function a() { 或者 function b() { 上,就会把这两个函数都选中
删除一个函数的方式
-
dap
基于段落,如果函数里有空行,就不起作用 -
dai
将 ai 映射成 aI
- settings.json
"vim.operatorPendingModeKeyBindings": [
{
"before": ["a", "i"],
"after": ["a", "I"]
}
],
"vim.visualModeKeyBindings": [
{
"before": ["a", "i"],
"after": ["a", "I"]
}
],
缺陷:上面说过只能把光标放在函数体内部才可以
- V$%d
光标必须在函数最外层上,先用 V 选中这一行,然后把光标移动到这一行的结尾也就是 {,使用 %匹配另一侧的},最后用 d 删掉
改键:
- settings.json
"vim.normalModeKeyBindings“: [
{
"before": ["<Leader>", "d", "f"],
"after": ["V", "$", "%", "d"]
},
]
问题:
如果函数里的参数过多换行了,那我们使用一次 V%才可以全选中
比如:
function b(
name,
age,
height
) {
console.log(123)
}
使用一次 V$% 匹配到
function b(
name,
age,
height
)
网友评论