Eu preciso (visual) selecionar um intervalo de linhas na linha de comando.
Por exemplo, o comando a seguir :?^\s*for?+,/^\s*end/- p
imprime todas as linhas contidas entre a for
e end
(maneira exclusiva). Em vez de executar a operação de impressão, gostaria de mudar para o modo visual com as linhas destacadas. Eu procurei no manual, mas não consegui encontrar um ex-comando.
command-line
visual-mode
nicmus
fonte
fonte
Respostas:
Os limites de uma seleção de modo visual são definidos pelas marcas
<
e>
.Assim, o seguinte comando entrará no modo visual com as linhas 5 a 10 (inclusive) selecionadas:
:5mark <
define o início da seleção para a linha 5,:10mark >
define o final da seleção para a linha 10,gv
entra no modo visual com a área definida acima selecionada,V
faz a seleção na linha.Você pode passar qualquer intervalo do Vim para o
:mark
comando: o seguinte entrará no modo visual usando as expressões regularesfoo
ebar
para definir os limites da área de seleção:O comando a seguir é uma versão mais simples das opções acima, mas depende da posição do cursor:
Para mais explicações, consulte:
:help mark-motions
:help :mark
:help ranges
:help gv
:help v_V
:help :execute
:help search()
help expr-.
fonte
?^\s*for?+ mark < | /^\s*end/- mark > | norm gv
+
e-
in @ do nicmus comentário está ajustando os intervalos, a fim de fazer a seleção não incluem as linhas que correspondem as expressões regulares. (Veja:help range
).
operador de concatenação realmente me impressionou, então aqui está um exemplo se alguém sentir o mesmo::execute "l" . "s"
produzirá a mesma saída que:ls
.