
Gosto do J
comando para juntar muitas linhas, mas não gosto de ter que contar quantas linhas quero juntar. Prefiro fazer uma moção. Isso pode ser falsificado com V{motion}J
; existe uma maneira que não envolva entrar no modo visual (dando assim uma derrota no *
registro)?
Responder1
Acho que não existe um operador de junção padrão. Mas você pode usar este código, deum antigo tópico do vim sobre o mesmo assunto:
nnoremap J :set operatorfunc=Joinoperator<CR>g@
nnoremap gJ :set operatorfunc=GJoinoperator<CR>g@
onoremap J j
func! Joinoperator(submode)
'[,']join
endfunc
func! GJoinoperator(submode)
'[,']join!
endfunc
Observe que usando este trecho não será possível usar J
para unir um par de linhas - será necessário usar Jj
(ou JJ
devido ao omap J j
).
Responder2
Você pode fazer algo como:
:.,/pattern/join
Essencialmente, você está dizendo ao Vim para juntar um intervalo de linhas, .
sendo a linha atual em que o cursor está e a última linha sendo a primeira correspondência de pattern
.