如何使用文本对象选择大括号间的行(不含大括号所在行)
如何在Vim中选择大括号之间的行(不含大括号行)
针对你提到的Sass场景,我来给你几个实用的操作方法:
多行排版代码的核心操作
假设你的代码是标准的多行缩进写法:
#main { h2 { font-weight: normal; border-bottom: 1px solid #ccc; } }
当光标在font-weight那一行时,直接输入vi{会选中h2大括号内部的所有内容(包括缩进空格和换行)。如果想只选中中间的代码行,排除大括号所在行,只需要两步:
- 输入
vi{选中内部区域 - 按
o切换到选中块的起始端(此时光标会跳到h2 {下面的缩进位置),再按j向下移动一行——这样选中范围就精准定位到你要的两行代码了
单行紧凑代码的处理
如果你的代码是写成一行的紧凑形式:
#main { h2 { font-weight: normal; border-bottom: 1px solid #ccc; } }
输入vi{会选中括号内的内容(包括前后空格),想要去掉空格只保留代码语句的话:
- 输入
vi{选中内部 - 按
l向右移动光标,跳过开头的空格 - 按
o切换到选中块的另一端,按h向左移动跳过结尾的空格,就能得到纯代码内容了
自定义映射提高效率
如果你经常需要这个操作,可以在你的.vimrc里加一行自定义映射:
nnoremap <leader>vi{ vi{<o>j
之后只要输入<leader>vi{(默认<leader>是反斜杠\),就能一键选中大括号之间的代码行,不用手动调整范围。
内容的提问来源于stack exchange,提问作者Ben Davis
相关产品推荐
相关产品推荐

