Ajusta a outra extremidade de uma seleção visual

10

Acho que isso permitiria que o recurso de seleção visual do vim superasse a eficiência até mesmo do mouse, fornecendo uma capacidade de "alternar" o terminal atual da seleção:

Ilustrado (O | deve representar o cursor (Vim tem que operar no lado esquerdo do caractere em que está) e [text] representa o texto selecionado, apenas finja que eles ocupam largura zero. espaço entre [ ] parece cinza e o caractere imediatamente após o | é verde):

Comece com

Some |text here
Some second line of text
Some more text in the third line 

Pressione v2j ; Observe que o caractere m está incluído na seleção (ele é destacado pelo cursor agora):

Some [text here
Some second line of text
Some |m]ore text in the third line 

Pressione 10l :

Some [text here
Some second line of text
Some more text |i]n the third line 

É neste momento que posso decidir que queria começar a selecionar a partir de uma localização diferente. por exemplo, incluindo o "Some" na primeira linha.

Eu não tenho escolha em um editor / IDE típico. Eu provavelmente teria que mover minha mão para o mouse, geralmente é muito doloroso selecionar o texto usando métodos tradicionais, o uso de word hopping via Ctrl e page-up / down ajuda um pouco, mas não importa o quê, Preciso me comprometer com um dos meus pontos de terminação da seleção antes de iniciar a seleção .

Então, no Vim, eu adoraria a capacidade de levar meu estado atual e trazê-lo para isso, atingindo uma ligação misteriosa:

Some [|text here
Some second line of text
Some more text i]n the third line 

Então, posso acessar apenas ^ ou <Home> (ambos fazem o mesmo, neste caso, onde não há espaços em branco iniciais) para transformá-lo em

[|Some text here
Some second line of text
Some more text i]n the third line 

Digamos que mude de ideia novamente , quero ajustar a outra extremidade!

[Some text here
Some second line of text
Some more text |i]n the third line 

Acertar e :

[Some text here
Some second line of text
Some more text i|n] the third line 

Lindo! Eu posso fazer o que quiser com esta seleção agora.

Então, o que é esse mistério?

Além disso, ainda mais potencialmente eficiente seria um conjunto de ligações alternativas para alguns dos comandos de movimento mais usados para outra linha de teclas, e estas (quando no modo visual) sempre movem a outra extremidade da seleção. Então, nessa operação de seleção de modo visual, se as teclas de movimento para a outra extremidade da seleção foram definidas como "yuio" (provavelmente não é uma boa escolha, já que precisamos de y mas apenas suportem) nós poderíamos ter digitado

v2j10l5ye

em vez de

v2j10lX^Xe

Ei, você sabe o que, isso não é tanto uma melhoria. Apenas me dê esse recurso do X. :)

As respostas perfeitas que estou procurando:

  • Ei, pesquise :help some_awesome_vim_feature_that_just_does_this
  • Ei, olhe para https://github.com/awesome_user/vim_plugin_that_does_this
  • Ei, olhe para :help vimscript_functions_that_allow_mutation_of_visual_selections

Sou muito novo nesse fascínio pelo Vim, por isso sou muito verde quando se trata de Vimscript e, sinceramente, gostaria de evitar aprender outra linguagem, por isso espero Eu não vou ser forçado a construir isso como um plugin.

    
por Steven Lu 25.05.2013 / 04:42

1 resposta

41

Não tenho certeza se estou realmente entendendo o que você quer, mas talvez seja isso:

:help v_o

Basicamente, enquanto o texto é visualmente destacado, você pode pressionar o e ele irá pular para o outro "fim" da região visual sem modificá-lo.

    
por 25.05.2013 / 05:58

Tags