Regola l'altra estremità di una selezione visiva


14

Penso che ciò consentirebbe alla funzionalità di selezione visiva di vim di superare l'efficienza anche del mouse fornendo una capacità di "cambiare" il capolinea attuale della selezione:

Illustrato ( |Deve rappresentare il cursore (Vim deve operare sul lato sinistro del carattere su cui si trova) e [text]rappresenta il testo selezionato, fingendo solo che occupino una larghezza pari a zero. Lo sfondo dello spazio tra [ ]appare grigio e il carattere immediatamente seguente |è verde):

Iniziare con

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

Stampa v2j; nota che il mcarattere è incluso nella selezione (ora è evidenziato dal cursore):

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

Premere 10l:

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

È a questo punto che potrei decidere di voler iniziare a selezionare da un'altra posizione. ad esempio, incluso il "Some"sulla prima riga.

Non ho scelta in un tipico editor / IDE. Probabilmente dovrei spostare la mano sul mouse, di solito è troppo doloroso selezionare il testo usando i metodi tradizionali, l'uso della parola hopping tramite Ctrle page-up / down aiuta in qualche modo, ma non importa cosa, devo impegnarmi a uno dei miei punti finali della selezione prima di iniziare la selezione .

Quindi in Vim mi piacerebbe molto per la capacità di prendere il mio stato attuale e portarlo a questo colpendo un legame misterioso:

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

Quindi posso semplicemente colpire ^o <Home>(entrambi fanno lo stesso in questo caso dove non c'è spazio bianco iniziale) per trasformarlo

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

Di 'che cambio idea di nuovo , voglio aggiustare l'altra estremità!

[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 

Bellissimo! Posso fare quello che voglio dopo con questa selezione ora.

Allora, qual è questo mistero vincolante?

Inoltre, un potenziale ancora più efficiente sarebbe un insieme di associazioni alternative per alcuni dei comandi di movimento più utilizzati su un'altra riga di tasti, che si sposterebbero sempre (quando in modalità visiva) sull'altra estremità della selezione. Quindi, in quella operazione di selezione della modalità visiva, se i tasti di movimento per l'altra estremità della selezione fossero impostati su "yuio" (probabilmente non è una buona scelta dato che ne abbiamo bisogno yma sopportiamo solo me) avremmo potuto digitare

v2j10l5ye

piuttosto che

v2j10lX^Xe

Ehi sai una cosa, non è nemmeno un grande miglioramento. Dammi solo quella funzione X. :)

Le risposte perfette che sto cercando:

  • Ehi, guarda in alto :help some_awesome_vim_feature_that_just_does_this
  • Ehi, guarda https://github.com/awesome_user/vim_plugin_that_does_this
  • Ehi, guarda :help vimscript_functions_that_allow_mutation_of_visual_selections

Sono abbastanza nuovo di questo fascino con Vim, quindi sono molto verde quando si tratta di Vimscript, e sinceramente mi piacerebbe stare lontano dal tentativo di imparare ancora un'altra lingua, quindi spero di non essere costretto a costruirlo come un plugin.


Va bene. Ora non so cosa stia succedendo qui (la domanda è stata misteriosamente spostata dai ninja da SO a SU), ma originariamente l'ho pubblicata su SO e preferirei che rimanesse lì. Con tutto il rispetto per i non programmatori, solo i programmatori potrebbero mai interessarsi così tanto alla modifica del testo. Ovviamente, tutti gli utenti di VIM potrebbero trarre vantaggio dall'apprendimento di come questo potrebbe funzionare, penso solo che otterrebbe più bulbi oculari e una migliore possibilità di ottenere risposta là dove si trovano gli sviluppatori di plugin.
Steven Lu,

A volte leggi il :help? :help visual-modeha tutte le informazioni di cui potresti aver bisogno sulla modalità visiva, incluso o.
romainl

A volte lo leggo, ma probabilmente avrebbe potuto impiegare più o meno la stessa ora a scrivere i miei pensieri. È un compito più definito che indovinare quale sia la stringa di aiuto.
Steven Lu,

Imparare è meglio che indovinare. La risposta di Heptite ti ha insegnato due cose, puoi nominarle?
romainl

Sì, voglio dire, ci sono molte cose da imparare, ma ho già dimenticato cosa Ofa la O maiuscola, ma ricorderò o. La seconda cosa a cui ti riferisci è probabilmente usare di :helppiù. E l'ho usato più di quando ho iniziato.
Steven Lu,

Risposte:


48

Non sono sicuro di capire davvero quello che vuoi, ma forse è questo:

:help v_o

Fondamentalmente, mentre il testo è visivamente evidenziato, è possibile premere oe salterà all'altra "fine" della regione visiva senza modificarlo.


2
Merda, sì !!! È anche meglio di quanto sperassi, è già associato a una sola chiave , quindi Xsopra è in realtào
Steven Lu

1
Consentitemi anche di sottolineare che il tasto destro del mouse (se il terminale è configurato per passarlo a Vim) consentirà in modo intelligente di regolare l'estremità più vicina della selezione visiva corrente su dove si trova il cursore. Questo lo rende un metodo molto meno doloroso per regolare l'area di selezione perché non getta via la posizione dell'estremità opposta della selezione.
Steven Lu

@StevenLu: Non viene comunque buttato via. Puoi toccare di onuovo e tornare indietro.
Heptite,

@StevenLu Questa probabilmente dovrebbe essere la risposta accettata, dato che non solo ha risolto il tuo problema, ha una tonnellata di voti, è accaduto anche esattamente ciò di cui avevo bisogno sul primo risultato di Google ed è in realtà l'unica risposta inviata da chiunque ...
Kingdon,

Sì, penso di non averlo mai accettato perché è stato pubblicato così in fretta che non mi era ancora permesso farlo in quel momento, e ho usato felicemente questa funzione Vim per quasi cinque anni da allora, non ho mai avuto bisogno di ricordare a me stesso quale la chiave è, poiché è super facile da ricordare.
Steven Lu,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.