Ajustar a outra extremidade de uma seleção visual

14

Eu acho que isso permitiria que o recurso de seleção visual do vim superasse a eficiência do mouse, fornecendo a capacidade de "alternar" o terminal atual da seleção:

Ilustrado (O |deve representar o cursor (o Vim opera no lado esquerdo do caractere em que está) e [text]representa o texto selecionado, apenas finja que eles ocupam largura zero. O plano de fundo do espaço entre [ ]cinza e o caractere imediatamente seguindo o |é verde):

Começar com

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

Pressione v2j; observe que o mcaractere está incluído na seleção (agora é destacado pelo cursor):

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 

É nesse ponto que eu posso decidir que quero começar a selecionar em um local diferente. por exemplo, incluindo o "Some"na primeira linha.

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 texto usando métodos tradicionais, o uso de salto de palavra por meio de Ctrlpágina / página / para cima / baixo ajuda um pouco, mas não importa o que, eu tenho que confirmar para um dos meus pontos finais da seleção antes de iniciar a seleção .

Portanto, no Vim, eu adoraria a capacidade de pegar 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 

Depois, basta pressionar ^ou <Home>(ambos fazem o mesmo neste caso em que não há espaço em branco à esquerda) para transformá-lo em

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

Digamos que mude de idéia novamente , quero ajustar o outro lado!

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

Hit e:

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

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

Então, o que é esse mistério obrigató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 esses (quando no modo visual) sempre moveriam a outra extremidade da seleção. Portanto, nessa operação de seleção do modo visual, se as teclas de movimento para o outro extremo da seleção estivessem definidas como "yuio" (provavelmente não é uma boa escolha, pois precisamos do tipo, ymas fique de olho comigo), poderíamos ter digitado

v2j10l5ye

ao invés de

v2j10lX^Xe

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

As respostas perfeitas que estou procurando:

  • Ei, olhe para cima :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 ecológico no que diz respeito ao Vimscript e, sinceramente, gostaria de ficar longe de tentar aprender outro idioma, por isso espero não ser obrigado a construí-lo como um plugin.

Steven Lu
fonte
OK. Agora eu não sei o que está acontecendo aqui (a pergunta foi misteriosamente movida por ninjas de SO para SU), mas eu originalmente postei isso no SO e eu realmente preferiria que ficasse lá. Com todo o respeito aos não programadores, somente os programadores poderiam se importar tanto com a edição de texto. Obviamente, todos os usuários do vim poderiam se beneficiar ao aprender como isso poderia funcionar, apenas acho que receberia mais atenção e uma melhor chance de ser respondido por lá onde estão os desenvolvedores de plugins.
Steven Lu
Você às vezes lê o :help? :help visual-modetem todas as informações que você precisa sobre o modo visual, inclusive o.
Romainl
Às vezes eu leio, mas provavelmente poderia levar o mesmo tempo escrevendo meus pensamentos. É uma tarefa mais definida do que adivinhar qual é a string de ajuda.
Steven Lu
Aprender é melhor do que adivinhar. A resposta de Heptite ensinou duas coisas: você pode nomeá-las?
Romainl 25/05
Sim, quero dizer que há muitas coisas a serem aprendidas, mas eu já esqueci o Ocapital O, mas vou lembrar o. A segunda coisa a que você está se referindo é provavelmente usar :helpmais. E tenho usado mais do que quando comecei.
Steven Lu

Respostas:

48

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

:help v_o

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

Heptite
fonte
2
Caramba, sim !!! Isso é ainda melhor do que eu esperava, está vinculado a uma única chave , então Xacima é realmenteo
Steven Lu
1
Permitam-me também salientar que o clique com o botão direito do mouse (se você tiver seu terminal configurado para passar para o Vim) inteligentemente permitirá ajustar a extremidade mais próxima da seleção visual atual para onde está o cursor. Isso o torna um método muito menos indutor de dor para ajustar a área de seleção porque não descarta a localização da extremidade oposta da seleção.
Steven Lu
@StevenLu: Não é jogado fora de qualquer maneira. Você pode tocar onovamente e voltar.
Heptite
@StevenLu Essa provavelmente deve ser a resposta aceita, já que ela não apenas resolveu o seu problema, possui uma tonelada de votos positivos, também aconteceu exatamente o que eu precisava no primeiro resultado do Google e é, na verdade, a única resposta enviada por qualquer pessoa ...
Kingdon
Sim, acho que nunca o aceitei porque foi publicado tão rapidamente que ainda não estava autorizado a fazê-lo na época e, felizmente, uso esse recurso do Vim há quase cinco anos, sem precisar me lembrar o que o A chave é, pois é super fácil de lembrar.
Steven Lu