Vim:在可视块模式下快速选择文本的矩形块
我正在寻找一种在视觉块模式下快速选择文本块的方法。我处理这种性质的文件:Vim:在可视块模式下快速选择文本的矩形块,vim,Vim,我正在寻找一种在视觉块模式下快速选择文本块的方法。我处理这种性质的文件: aaaa bbbb cccc aaaa bbbb cccc aaaa bbbb cccc dddd Xeee ffff dddd eeee ffff dddd eeee ffff gggg hhhh iiii gggg hhhh iiii gggg hhhh iiii 我的目标是在视觉块模式中选择中间块。我会: 导航到X所在的拐角处 粘贴 “e”将选择扩展到块的末尾 “jj”或“2j”将选择向下延伸到块的底部。 我正
aaaa bbbb cccc
aaaa bbbb cccc
aaaa bbbb cccc
dddd Xeee ffff
dddd eeee ffff
dddd eeee ffff
gggg hhhh iiii
gggg hhhh iiii
gggg hhhh iiii
我的目标是在视觉块模式中选择中间块。我会:
导航到X所在的拐角处
粘贴
“e”将选择扩展到块的末尾
“jj”或“2j”将选择向下延伸到块的底部。
我正在寻找一个替代4,类似于“e”,将移动到块的最后一行。在这个简单的例子中,“jj”不是很不方便,但有时它们是大的块
有一个类似的问题,但这涉及到跳过预先确定的行数。有没有办法做到这一点,再次模拟“e”,但移动行而不是列?谢谢 从X开始,您可以使用}kee执行此操作:
–启动分块视觉模式
}–请转到本段末尾,该动议被认为提供了这个相当复杂的组合的好处
k–上面的一个用于排除空行
ee–将光标从第一列移动到内部块的末尾。
用v启动可视模式。然后选择带ip的内部段落。使用进入视觉块模式。现在只需根据需要使用es转到块的末尾
从块的右下角开始是一样的,但是使用w代替e。我尝试在光标周围创建一个函数select Visual block,这很有趣
function! ContiguousVBlock()
let [lnum, vcol] = [line('.'), virtcol('.')]
let [top, bottom] = [lnum, lnum]
while matchstr(getline(top-1), '\%'.vcol.'v.') =~# '\S'
let top -= 1
endwhile
while matchstr(getline(bottom+1), '\%'.vcol.'v.') =~# '\S'
let bottom += 1
endwhile
let lines = getline(top, bottom)
let [left, right] = [vcol, vcol]
while len(filter(map(copy(lines), 'matchstr(v:val,"\\%".(left-1)."v.")'),'v:val=~#"\\S"')) == len(lines)
let left -= 1
endwhile
while len(filter(map(copy(lines), 'matchstr(v:val,"\\%".(right+1)."v.")'),'v:val=~#"\\S"')) == len(lines)
let right += 1
endwhile
call setpos('.', [0, top, strlen(matchstr(lines[0], '^.*\%'.left.'v.')), 0])
execute "normal! \<C-V>"
call setpos('.', [0, bottom, strlen(matchstr(lines[-1], '^.*\%'.right.'v.')), 0])
endfunction
nnoremap <Leader>vb :<C-U>call ContiguousVBlock()<CR>
可以用vb试试:它应该选择光标周围任何连续的非空白矩形块。首选垂直轴
也许我以后会改进它,但现在你可以试试,如果你喜欢的话,它能解决你的问题
作为我自己尝试的另一种选择,你可以尝试流行的插件。它让您可以选择一列或多列文字。我认为使用标记不会太不方便…+1 textobj word column确实可以让这类事情变得漂亮simple@PeterRincker真正地我总是觉得推荐textobj word专栏很糟糕,因为它对我来说从来都不起作用。。。这是一个“请你做什么”的插件,它似乎从来都不理解我的意思。我最终摆脱了它。我同意“请按我的意思做”插件位。这可能令人沮丧。在明显的情况下,它工作得很好。我相信这是真的。我个人制作了一个叉子,它利用周围的边界来帮助减少它的渴望。然而,我不确定它是否准备好进入黄金时段。我真的应该把它放到Github上,非常感谢您花时间编写这个漂亮的函数。事实上,textobj word专栏插件非常适合我的需要,具有更大的灵活性。