Come rimappare gg in g?


8

Non ne uso nessuno g combinationstranne che gg, in modalità normale. Come posso farlo in modo che gsia sufficiente premere una volta?

nnoremap g gglo fa attendere circa 3 secondi per una continuazione del comando. Anche la non mappatura ganticipata non funziona, perché non riesco a mappare ggse deseleziono g. Devo annullare la mappatura di ogni singola combinazione che non lo è gg?


7
Solo perché non usi nessuna gmappatura ora, non significa che non ne userai in futuro. Ce ne sono alcuni piuttosto utili lì dentro. ad esempio gE, g_, gt, gT, g,, g;, gu, gU, gn, e la mia persona preferita gf. Vedere :h gper un elenco di tutti i mapping g.
Peter Rincker,

Oh sì, la fidanzata è fantastica. Ma non ne ho bisogno così spesso in questo momento. Forse lo sposterò in un tasto di scelta rapida separato quando ne avrò bisogno. (I nostri nomi sono così esilaranti similmente, mi chiedo se ho guardato i tuoi quando stavo scegliendo il mio).
Peret Finctor,

E voglio che vim e meno si comportino allo stesso modo, se possibile. Meno usa un singolo g.
Peret Finctor,

3
Probabilmente ne uso gvcirca ogni 90 secondi circa
the_velour_fog

1
Ci sono anche alcuni plugin i cui mapping predefiniti iniziano con g, come gcnei commenti . Si dovrebbe anche considerare che si correre fuori le chiavi , se si continua a usare Vim per lungo tempo, e che ci vuole del tempo / sforzo per allenare la tua memoria muscolare dopo ci si abitua ad un dato mappatura.
mMontu,

Risposte:


22

Supponendo che tu abbia una versione più recente di Vim (7.3.1261+) che puoi usare <nowait>

nnoremap <nowait> g gg

Tuttavia, non posso sottolineare l'utilità di alcune delle gmappature. Ecco un breve elenco di gmappature utili :

  • gE - fine della parola all'indietro
  • g_ - all'ultimo carattere non vuoto di una linea
  • gt& gT- tab navigazione
  • g,& g;- avanti e indietro attraverso l'elenco delle modifiche
  • gu& gU- cambio di caso
  • gn - seleziona visivamente il modello corrente
  • gv - seleziona nuovamente la selezione visiva precedente
  • gi - avvia la modalità di inserimento nella stessa posizione La modalità di inserimento è stata interrotta l'ultima volta
  • gf - vai al file sotto il cursore (Il mio preferito)

Vedere :h gper un elenco di tutti i gmapping.

Personalmente imparerei solo a usare ggin quanto è una buona abitudine e meno non è noto per essere un buon emulatore Vi / Vim.

Per ulteriori informazioni, consultare:

:h g
:h :map-nowait

9
giè anche abbastanza fantastico (entra nella modalità di inserimento dove l'avevi precedentemente lasciato). Lo uso sempre quando sto scrivendo una riga di codice e devo andare a controllare qualcos'altro nel file.
Maniglia

1
Sì. Questo è come le persone che mappano wverso :w<CR>e qverso :qall<CR>perché è "più veloce". Ti stai solo privando dei vantaggi di Vim.
wchargin,

@WChargin oh, quindi non sono il primo. Sai di più su questo tipo di rimappa, puoi reindirizzarmi a quelle persone?
Peret Finctor,

2
@PeretFinctor Non sono sicuro che tu stia scherzando: il mio punto è che questo tipo di rimappa è una pessima idea. Le persone che lo fanno stanno solo cercando di usare vim come editor run-of-the-mill; w, qe goffrono tutte funzionalità estremamente estese che dovresti utilizzare frequentemente durante la modifica, ma che stai eliminando per radere le frazioni di secondo quando salvi. Non ti conosco, ma risparmio molto meno frequentemente di quanto non vada avanti di una parola!
wchargin,

1
@PeretFinctor: Perché non usi w / W e b / B per word-forward e word-backward, nel modo in cui Vim fornisce out-of-the-box? - Vedi lo schema qui? Cerchi di lottare con Vim. Muoviti con esso, usa le cose che fornisce così come sono fornite. E sarà più facile in questo modo, e più vantaggioso per il vostro flusso di lavoro nel lungo periodo.
DevSolar il

7

Solo per entrare, se vuoi davvero una sola chiave - puoi ancora usarne ... un'altra (cioè una chiave che non ti serve tanto)! In questo modo puoi lasciare gsolo il prefisso utile .

Ad esempio, puoi "sovraccaricare" 0per alternare tra funzionalità 0e ^, quando premuto ripetutamente, e libero ^invece per il tuo utilizzo (dal momento che è un carattere intuitivo di risalita ).

Sono sicuro che questo non è perfetto, ma ecco una possibile prova del concetto quick-n-dirty:

function! ToStartOrNonBlankToggle(mode)
    if (a:mode == 'x')
        normal! gv
    endif
    let sp = col('.')
    normal! ^
    let ep = col('.')
    if (sp == ep)
        normal! 0
    endif
endfunction

nnoremap <silent> 0 :<c-u>call ToStartOrNonBlankToggle('n')<cr>
onoremap <silent> 0 :<c-u>call ToStartOrNonBlankToggle('o')<cr>
xnoremap <silent> 0 :<c-u>call ToStartOrNonBlankToggle('x')<cr>
noremap <silent> ^ gg

Quanto sopra consente ancora di utilizzare 0 come movimento, e anche dalla modalità visiva. Su una linea rientrata, y0ora verrebbe copiato dalla posizione del cursore sul primo carattere non vuoto. Se invece vuoi copiare nella colonna iniziale, dovrai andare visivamente:v00y

Ora puoi anche usare 13^per andare alla linea 13.


1
Questa è davvero una buona idea, grazie!
Peret Finctor,
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.