Vai a metà linea in vim


11

So che 0 va all'inizio della riga e $ va alla fine, ma c'è qualcosa per il centro?

Risposte:


10
:call cursor(0, len(getline('.'))/2)

4
Ciò sarebbe abbastanza utile se fosse mappato, ad esempio:: nnoremap gm: call pointer (0, len (getline ('.')) / 2) <cr>
Heptite,

3
virtcol ('$') / 2 è abbastanza.
Luc Hermitte,

@Luc Hermitte: bello, ma non è esattamente il miglior comportamento quando sono coinvolte schede difficili.
effimero

Ecco perché uso virtcol invece di col. :). Ma in effetti dovremmo usare | e non cursore (). A proposito, len () non darà risultati migliori. Inoltre, len darà altri problemi con caratteri multibyte.
Luc Hermitte,

8

La digitazione gmlo farebbe, ma si sposta per linee dello schermo. Per farlo funzionare con le righe di testo, è possibile rimappare questo comando:

map gm :call cursor(0, virtcol('$')/2)<CR>

gm sembra spostare il cursore al centro dello schermo, ma se la mia riga di testo è più corta della lunghezza dello schermo, non mi porta al centro. Ci scusiamo per non aver chiarito.
Teggy il

@teggy: capisco. Ho modificato la mia soluzione per rimappare gm per andare al centro della riga di testo. Come puoi vedere, combina soluzioni di effimero e Luc Hermitte.
JooMing,

Come ha sottolineato l'effimero, ha ancora un problema con i tar tar poiché il cursore () li conta come un carattere ciascuno. Inoltre, non funzionerà nemmeno con caratteri multibyte.
Luc Hermitte,

7

Ecco una soluzione che rispetterà hardtabs e caratteri multibyte.

:exe 'normal '.(virtcol('$')/2).'|'

1

Ecco la migliore soluzione che ho trovato. Saltare esattamente al centro della linea non è molto pratico. Molto probabilmente dovrai ancora spostare il cursore di alcune posizioni dopo esserti spostato al centro. E se potessi passare a un personaggio specifico? Molte persone cercano semplicemente il personaggio, quindi premono "successivo" fino a quando non lo raggiungono. Questo è lento Il plug-in Easy-motion offre una soluzione migliore.

Il mio preferito è <leader><leader>squindi il personaggio a cui vuoi saltare. Easy Motion sostituisce tutte le partite con lettere diverse tra cui scegliere. Vedi il tutorial. È un plugin che cambia la vita ...

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.