Posso fare in modo che vim cambi il comportamento del cursore?


11

Uso vim da alcuni anni come redattore secondario ma per vari motivi, mi ritrovo a usarlo sempre di più anche quando il mio editor principale è disponibile. Un problema che mi ha sempre infastidito vime che mi impedisce di usarlo di più, è il modo in cui gestisce il posizionamento del cursore. Il cursore può essere solo su un personaggio, piuttosto che tra i caratteri, come nel caso di qualsiasi editor creato dal 1984.

Per un solo esempio del perché questo è un problema, se voglio eliminare l'ultima parola su una riga, premo $per andare alla fine della riga e quindi dbper cancellare all'indietro. Questo lascia un personaggio da eliminare, perché $non è andato davvero alla fine della riga, è andato all'ultimo carattere della riga ed ha dbeliminato solo ciò che era prima del personaggio attuale. Il problema non è che devo digitare un personaggio in più, è il pensiero extra coinvolto nel fare ciò che dovrebbe essere semplice, che distoglie la mia attenzione da ciò che sto effettivamente cercando di realizzare.

Mi sembra che il posizionamento del cursore dell'idea più moderna sia in ogni modo superiore e mi piacerebbe passare vima usare questo approccio. Sono sicuro che alcuni vimfan hard-core non saranno d'accordo con la mia opinione al riguardo, ma poiché uno degli argomenti standard per vimla superiorità è la sua infinita configurabilità:

  • può consegnare in questo caso?
  • Può vimessere fatto per posizionare il cursore tra i caratteri?

2
Sembra che tu stia cercando la Insertmodalità o manchi il punto di normalmodalità. Farei $dawo $bdweliminerei l'ultima parola su una riga in modalità normale. In Insertmodalità lo farei A<Ctrl-w>.
jw013,

3
Per la cronaca, come qualcuno che è spaventato dall'idea stessa di un mondo infernale "tra personaggi", la sequenza di tasti corretta per eliminare l'ultima parola della riga corrente è$bD
Alan Curry

1
L'uso di un mouse non è l'ideale, ma le inefficienze significative si verificano quando devi fermarti e pensare a come fare quello che vuoi fare. La cosa vera che è preziosa non è un secondo qua e là, ma attenzione . Quando perdi la concentrazione, perdi molto più di qualche secondo.
iconoclasta,

2
Dai commenti fino ad ora sembra che la risposta alla domanda sia "No, questo modello di movimento del cursore è irrevocabilmente incorporato nel design di Vim e non può essere modificato." È corretto?
iconoclasta,

2
@iconoclast Anche questa è la mia conclusione. Per quanto ne so, in vi o vim è impossibile trattare tutti i personaggi su una linea in modo uniforme, c'è sempre un'eccezione per il primo o l'ultimo carattere.
Gilles 'SO- smetti di essere malvagio' il

Risposte:


5

Puoi :set virtualedit+=onemore, il che ti permette di andare oltre l'ultimo personaggio. Sfortunatamente per te, $va ancora all'ultimo personaggio; devi scorrere sopra per superarlo. D'altra parte, puoi usare g$, che normalmente va all'ultimo carattere della linea dello schermo su una linea che si avvolge; in onemoremodalità passa anche oltre l'ultimo carattere di una linea non avvolta (o l'ultima riga dello schermo di una linea avvolta).

:h 'virtualedit' dice che questa opzione può incasinare gli script, ma non so quanto sia grande un rischio nella realtà.

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.