Sposta il cursore alla fine del file in vim


409

Quando voglio che il cursore raggiunga la fine del file (ovvero la fine dell'ultima riga) in Vim, devo digitare sei sequenze di tasti:

<ESC>G$a- che si traduce in ESC+ Shiftg+ Shift4+ asul layout della mia tastiera.

Come posso farlo in modo più efficiente?

Dal momento che lavoro regolarmente su molte macchine diverse, non posso sempre cambiare .vimrc, quindi cerco risposte senza dover modificare o creare quel file.


8
Voglio solo sottolineare, i comandi che stai mostrando dovrebbero essere rappresentati come segue <esc>G$a:, mostri lo spostamento rendendo la lettera maiuscola. E mostri un $+ invece di maiusc + 4, dal momento che non importa la tastiera la funzione di questo tasto ( $) non cambierà, ma se fai shift + 4 il significato può cambiare. :)
greduan,

3
@Eduan Sono generalmente d'accordo, ma in questo caso sono importanti anche i tasti premuti. Ho aggiunto entrambi :-)
timss

@Eduan Per la questione dell'efficienza, i comandi effettivi non contano. I tasti premono. E poiché ci sono enormi differenze nel layout della tastiera tra le lingue, non so dove $sia la tastiera americana e potrebbe anche darsi che per gli americani inserire il comando $sia solo un tasto. Volevo mostrare esplicitamente che per me (con una tastiera tedesca) sono due battute.

1
@what IC. Posso capirlo. Volevo solo segnalarlo, quindi in futuro lo sai. :)
greduan,

Risposte:


410

Non è necessario andare esplicitamente alla fine della riga prima di farlo a, utilizzare A;
Aggiungi testo alla fine della riga [count] volte

<ESC>GA


3
Se vuoi rimanere in modalità normale, prova G)(o <ESC>G)se sei in modalità inserimento e vuoi terminare in modalità normale sull'ultimo carattere). Stesso numero di tasti, ma per finire in modalità normale anziché in modalità inserimento. Lo trovo utile di tanto in tanto quando voglio eseguire un comando normale sull'ultima parola invece di un comando in modalità inserimento o modifica.
Alejandro,

1
@Alejandro Sebbene utile, )sposta le [count]frasi in avanti e quindi non andrà alla fine della riga se, ad esempio, è l'ultima riga This is a test. Foo bar.. Funzionerà per un sacco di codice, che spesso non è considerato frasi e quindi andrà comunque alla fine.
timss

Se hai intenzione di scrivere la riga successiva, <ESC> G oeseguirà il ritorno a capo e ti metterà in modalità di inserimento sulla riga successiva (alla fine del file), salvando un altro paio di tasti.
broc.seib

1
Inoltre, se non si desidera passare alla modalità di inserimento, utilizzare G$.
BladeMight,

499

Questo è più veloce. Usa questo

:$

16
Questo non si sposta sull'ultima colonna solo sull'ultima riga
Rajeshwar,

6
Se vuoi solo andare rapidamente alla fine del file e le scorciatoie da tastiera sono incasinate, questo è il comando giusto. Grazie!
joemar.ct

9
: $ + End lo farebbe in quel caso.
karthik,

1
Ciò richiede <ENTER> alla fine e deve ancora arrivare alla fine della linea, il che non lo rende più veloce.
Alejandro,

1
: $ fa il trucco! andando alla fine del file come la domanda posta! grazie
Sijan Shrestha,

130

Premi Esce poi premi: Shift+G


3
Questo va all'inizio dell'ultima riga, non alla fine del file.
Jordan, in esecuzione il

5
questo va fino alla fine del file per me , ed è anche un bel semplice collegamento di tasti
Jacob Garby

G mantiene il numero di colonna uguale (se possibile) e si sposta sull'ultima riga. Jacob era probabilmente alla fine della linea, e Jordan in testa quando eseguiva il comando.
run_the_race,

39

Per cominciare, non è necessario il ritorno. G$andrà bene. E sei fuorviante contando <Esc>e anella lunghezza di un normale comando in modalità.

Tuttavia, puoi usare Ctrl+ Endse vuoi.


8
èCtrl-END
zmo

Non ho End-Key sulla mia tastiera (se questo è quello che vuoi dire).

In realtà, la risposta da spettacoli TIMSS che ho fatto bene a contare <ESC>e a, perché lui o lei conosceva un modo per sostituire Shift+$, acon A.

1
@quanto la maggior parte della tastiera del laptop al giorno d'oggi ha home / end messo su / giù / sinistra / destra insieme a Fn se non hanno tasti home / end dedicati
phuclv

22

Ho pensato che la domanda fosse "Sposta il cursore alla fine del file in vim"?

End-of-file: Esc+ G
Begin-of-file Esc+ g(o ggse si è già nell'area di comando)


21

Il modo migliore per andare all'ultima riga del file è con G. Ciò sposterà il cursore sull'ultima riga del file.

Il modo migliore per andare all'ultima colonna della riga è con $. Questo sposterà il cursore sull'ultima colonna della riga corrente.

Quindi, facendo G$così, arrivi alla fine del file e all'ultima riga.

E se vuoi entrare nella modalità di inserimento alla fine del file, devi solo farlo GA. In questo modo vai all'ultima riga del file e accedi alla modalità di inserimento aggiungendo all'ultima colonna. :)



11

Se hai intenzione di scrivere la riga successiva, ESCGoeseguirà il ritorno a capo e ti metterà in modalità di inserimento sulla riga successiva (alla fine del file), salvando un altro paio di tasti.


6
  • Ctrl + Home = Salta all'inizio del file
  • Ctrl + End = Vai alla fine del file

3

Questo è più veloce:

<ESC>GA

5
Perché pubblicare una risposta duplicata, soprattutto quando non spiega A?
timss

3

È possibile mapparlo su una chiave, ad esempio F3, in .vimrc

inoremap <F3> <Esc>GA

2
Per quanto possibile, questa è generalmente una cattiva idea. Invece mira alla memoria muscolare e all'uso GAo G$.
Timss

Sto ancora vincendo con 1 colpo chiave :) Su una nota più seria, se hai davvero bisogno di qualcosa di veloce in vim, imparare a .vimrc è utile.
Tim

Sarebbe anche utile avere un esempio completo della mappa invece di dire all'OP di andare a cercarlo. Dal momento che se non riesci a trovarlo come dovrebbe essere l'OP?
FDinoff,

1
Non stai "vincendo" nulla dal momento che dovresti allontanarti dalla tua famiglia. Inoltre, non puoi usarlo su qualcun altro config o addirittura vi, se ti capita di usarlo. Non stai davvero risparmiando tempo. Se non altro, utilizzare C-endcome indicato da Hobbs.
timss

Sono d'accordo con i commenti qui, ma ho ripulito la mappatura per te
D. Ben Knoble il

0

Ho cercato il modo per spostare il cursore alla fine di una riga e quindi modificarlo su un terminale mac, ecco come ha funzionato per me. Esci dalla tua modalità di modifica, digita g_ (che è 'g', quindi evidenzia senza i due punti in primo piano), quindi premi semplicemente il tasto 'a' in modo da poter "aggiungere" il codice ai tuoi script


Stavi forse cercando A?
D. Ben Knoble,

Ho provato A ma non ha funzionato del tutto
Xinyi Xiang

è strano, Aè sostanzialmente equivalente a$a
D. Ben Knoble

0

Un'altra alternativa:

:call cursor('.',strwidth(getline('.')))

Questo può essere utile se stai scrivendo una funzione. Un'altra situazione sarebbe quando ho bisogno di aprire un modello specifico e saltare alla fine della prima riga, posso fare:

vi +"call cursor('.',strwidth(getline(1)))"  notetaking_template.txt

Quanto sopra potrebbe anche essere fatto con

vi +"execute ':normal! $'" notetaking_template.txt

Guarda anche:

vim - Ottieni la lunghezza della linea corrente


0

Se vuoi incollare del contenuto degli appunti alla fine del tipo di file:

:$ put +

$ ............ last line
put .......... paste 
+ ............ clipboard
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.