Wie ordne ich gg g zu?


8

Ich benutze keine g combinationsaußer ggim normalen Modus. Wie kann ich es so machen, dass ein geinmaliges Drücken ausreicht?

nnoremap g ggLässt es ungefähr 3 Sekunden warten, bis der Befehl fortgesetzt wird. Das Aufheben der Zuordnung im gVoraus funktioniert auch nicht, da ich keine Zuordnung ggvornehmen kann, wenn ich die Zuordnung aufhebe g. Sollte ich jede einzelne Kombination aufheben, die es nicht ist gg?


7
Nur weil Sie jetzt keine gZuordnungen verwenden, heißt das nicht, dass Sie in Zukunft keine mehr verwenden werden. Es gibt einige ziemlich praktische. zB gE, g_, gt, gT, g,, g;, gu, gU, gn, und mein persönlich Favorit gf. Siehe :h gfür eine Liste aller g - Mappings.
Peter Rincker

Oh ja, gf ist großartig. Aber ich brauche es momentan nicht so oft. Vielleicht verschiebe ich es in einen separaten Hotkey, wenn ich es brauche. (Unsere Namen sind so unglaublich ähnlich, ich frage mich, ob ich deine angeschaut habe, als ich meine gewählt habe).
Peret Finctor

Und ich möchte, dass sich vim und weniger, wenn möglich, gleich verhalten. Weniger verwendet eine einzelne g.
Peret Finctor

3
Ich benutze wahrscheinlich gvungefähr alle 90 Sekunden oder so
the_velour_fog

1
Es gibt auch einige Plugins, deren Standardzuordnungen mit g beginnen, z. B. gcim Kommentar . Sie sollten auch bedenken , dass Sie laufen von Schlüsseln aus , wenn Sie für eine lange Zeit mit Vim weiter, und es dauert einige Zeit / Aufwand Ihr Muskelgedächtnis zu trainieren , nachdem Sie zu einer bestimmten Zuordnung zu gewöhnen.
mMontu

Antworten:


22

Angenommen, Sie haben eine neuere Version von Vim (7.3.1261+), die Sie verwenden können <nowait>

nnoremap <nowait> g gg

Obwohl ich die Nützlichkeit einiger gZuordnungen nicht betonen kann . Hier ist eine kurze Liste nützlicher gZuordnungen:

  • gE - rückwärts Ende der Wortbewegung
  • g_ - bis zum letzten nicht leeren Zeichen einer Zeile
  • gt& gT- Tab Navigation
  • g,& g;- hin und her durch die Änderungsliste
  • gu& gU- Fallwechsel
  • gn - aktuelles Muster visuell auswählen
  • gv - Wählen Sie die vorherige visuelle Auswahl erneut aus
  • gi - Starten Sie den Einfügemodus an derselben Position. Der Einfügemodus wurde zuletzt gestoppt
  • gf - gehe zur Datei unter dem Cursor (Mein persönlicher Favorit)

Siehe :h gfür eine Liste aller gZuordnungen.

Persönlich würde ich nur lernen, es zu benutzen, ggda es eine gute Angewohnheit ist und weniger nicht als guter Vi / Vim-Emulator bekannt ist.

Weitere Hilfe finden Sie unter:

:h g
:h :map-nowait

9
giist auch ziemlich fantastisch (gehe in den Einfügemodus, wo du ihn zuvor verlassen hast). Ich benutze es die ganze Zeit, wenn ich gerade eine Codezeile eingebe und etwas an anderer Stelle in der Datei überprüfen muss.
Türknauf

1
Ja. Dies ist wie bei Leuten, die sich wzu :w<CR>und qzu :qall<CR>ordnen , weil es "schneller" ist. Sie rauben sich nur die Vorteile von vim.
wchargin

@WChargin oh, also bin ich nicht der erste. Wissen Sie mehr über diese Art von Remaps? Können Sie mich an diese Personen weiterleiten?
Peret Finctor

2
@PeretFinctor Ich bin mir nicht sicher, ob Sie Witze machen - mein Punkt ist, dass diese Art von Remaps sehr schlechte Ideen sind. Leute, die dies tun, versuchen nur, vim als gewöhnlichen Editor zu verwenden. w,, qund galle bieten äußerst umfangreiche Funktionen, die Sie beim Bearbeiten häufig verwenden sollten, die Sie jedoch unterdrücken, um beim Speichern Bruchteile von Sekunden zu sparen. Ich weiß nichts über dich, aber ich spare viel seltener, als ich ein Wort vorwärts gehe!
wchargin

1
@PeretFinctor: Warum verwenden Sie w / W und b / B nicht für Wortvorwärts und Wortrückwärts, wie Vim es sofort bereitstellt? - Siehst du das Muster hier? Du versuchst mit Vim zu ringen . Bewegen Sie mit ihm, verwenden Sie die Dinge , die es bietet , wie sie vorgesehen sind. Auf diese Weise wird es einfacher und auf lange Sicht vorteilhafter für Ihren Workflow.
DevSolar

7

Nur um sich einzuschalten, wenn Sie wirklich wirklich einen einzelnen Schlüssel wollen - Sie können immer noch ... einen anderen verwenden (dh einen Schlüssel, den Sie nicht so oft brauchen)! Auf diese Weise können Sie das nützliche gPräfix in Ruhe lassen.

Zum Beispiel können Sie "überladen" , um bei wiederholtem Drücken 0zwischen 0und ^Funktionalität umzuschalten, und ^stattdessen für Ihre Verwendung freigeben (da es sich um ein intuitives Aufwärtszeichen handelt ).

Ich bin mir sicher, dass dies nicht perfekt ist, aber hier ist ein möglicher Proof of Concept:

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

Das Obige erlaubt weiterhin die Verwendung von 0 als Bewegung und auch aus dem visuellen Modus. In einer eingerückten Zeile wird y0jetzt von der Cursorposition auf das erste nicht leere Zeichen kopiert. Wenn Sie stattdessen in die Startspalte kopieren möchten, müssen Sie visuell vorgehen:v00y

Sie können jetzt auch 13^zu Zeile 13 gehen.


1
Das ist eigentlich eine wirklich gute Idee, danke!
Peret Finctor
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.