我很好奇,为什么我必须使用 visual block 选择插入到多行而不是 visual line ?
导致这种差异的幕后差异是什么?
谢谢!
答案 0 :(得分:2)
您可以将其理解为“行模式”和“列模式”。您想在多行的同一列上添加内容,请使用“ ctrl-v”(列模式)。
答案 1 :(得分:2)
逐块选择是更通用的选择,即它允许在任意位置插入多行。当然,您可以将按行(甚至按字符)选择视为这种情况的退化情况,但是它的通用性较低(按行只允许在第1列或行尾插入),因此默认情况下不提供;即I
和A
仅在逐块可视模式下可用。但是,将它们添加到其他选择模式也很简单:
" {Visual}I, {Visual}A Make I/A available in characterwise visual and linewise
" visual mode.
" Source: kana, http://whileimautomaton.net/
function! s:ForceBlockwiseVisualExpr()
if mode() ==# 'v'
return "\<Esc>g`<\<C-v>g`>"
elseif mode() ==# 'V'
return "\<Esc>g`<^\<C-v>g`>$"
else
return ''
endif
endfunction
xnoremap <expr> <silent> I <SID>ForceBlockwiseVisualExpr() . 'I'
xnoremap <expr> <silent> A <SID>ForceBlockwiseVisualExpr() . 'A'