Text im Einfügemodus durchlaufen

320

Gibt es im Einfügemodus in Vim eine Möglichkeit, den Text zu durchlaufen und einige Zeichen vorwärts und rückwärts zu bewegen, außer mit den Pfeiltasten?

Wenn ich drücke h, j, kund lwährend im Insert - Modus werden die tatsächlichen Zeichen auf dem Bildschirm gedruckt , anstatt durch den Text zu bewegen.

Die Art und Weise, wie ich es im Moment mache, ist, auf Ctrl+ [( Esc) zurückzugreifen und dann den Text zu durchlaufen; aber das ist natürlich nicht produktiv.

Andreas Grech
quelle
Nebenbei bemerkt: Es ist auch hilfreich, wenn Sie Escape einer näheren Tastenkombination (dh imap jk <Esc>) zuordnen, damit Sie Ihren Schwung nicht unterbrechen und über Ihre Tastatur greifen müssen, um die Taste zu drücken.
Tsujin
3
Ich mag es ( <ESC>) zugeordnet kjstatt jk; mein Freund Dijkstra ist schuld!
Dr. Beco
7
Ich habe jkund kj, also drücke ich es einfach wie einen großen Knopf mit zwei Fingern und es spielt keine Rolle, in welcher Reihenfolge ich wieder normal bin.
Edu Ruiz

Antworten:

646

Sie scheinen vim zu missbrauchen, aber das liegt wahrscheinlich daran, dass Sie nicht sehr vertraut damit sind.

Der richtige Weg ist zu drücken Esc, dorthin zu gehen, wo Sie eine kleine Korrektur vornehmen möchten, sie zu reparieren, zurück zu gehen und weiter zu bearbeiten. Es ist effektiv, weil Vim viel mehr Bewegungen als der übliche Charakter vorwärts / rückwärts / auf / ab hat. Nachdem Sie mehr davon gelernt haben, wird dies produktiver.

Hier sind einige Anwendungsfälle:

  • Sie haben versehentlich "versehentlich" eingegeben. Kein Problem, die Sequenz EscFfrdAkorrigiert den Fehler und bringt Sie dorthin zurück, wo Sie ihn bearbeitet haben. Die FfBewegung bewegt Ihren Cursor rückwärts zum ersten angetroffenen "f" -Zeichen. Vergleichen Sie das mit Ctrl+ DeldEnd, das in einem Casual-Editor praktisch dasselbe tut, aber mehr Tastenanschläge benötigt und Sie dazu bringt, Ihre Hand aus dem alphanumerischen Bereich der Tastatur zu bewegen.
  • Sie haben versehentlich "Sie haben versehentlich getippt" eingegeben, möchten dies jedoch auf "Sie haben absichtlich getippt" korrigieren. Dann Esc2bcwwird das Wort gelöscht, das Sie korrigieren möchten, und Sie werden in den Einfügemodus versetzt, sodass Sie es sofort erneut eingeben können. Um zur Bearbeitung zurückzukehren, drücken Sie einfach Astatt End, damit Sie Ihre Hand nicht bewegen müssen, um die EndTaste zu erreichen .
  • Sie haben versehentlich "Maus" anstelle von "Mäuse" eingegeben. Kein Problem - das gute alte Ctrl+ wlöscht das vorherige Wort, ohne den Einfügemodus zu verlassen. Und es ist viel schneller, ein kleines Wort zu löschen, als Fehler darin zu beheben. Ich bin so daran gewöhnt, dass ich die Browserseite geschlossen habe, als ich diese Nachricht getippt habe ...!
  • Die Anzahl der Wiederholungen wird weitgehend nicht ausreichend genutzt. Bevor Sie eine Bewegung ausführen, können Sie eine Zahl eingeben. und die Bewegung wird so oft wiederholt. Zum Beispiel 15hwerden Sie den Cursor 15 Zeichen zurückbringen und 4j werden Sie den Cursor 4 Zeilen nach unten bewegen. Wenn Sie sie verwenden, werden Sie sich bald daran gewöhnen. Wenn Sie zehn Zeichen von Ihrem Cursor entfernt einen Fehler gemacht haben, werden Sie feststellen, dass das zehnmalige Drücken der Taste viel langsamer ist als der iterative Ansatz zum Bewegen des Cursors. Sie können also stattdessen schnell die Tasten eingeben 12h(um zu erraten, wie viele Zeichen Sie zurück benötigen, um den Cursor zu bewegen) und sofort zweimal vorwärts gehen ll, um den Fehler schnell zu korrigieren.

Wenn Sie jedoch weiterhin kleine Textdurchläufe durchführen möchten, ohne den Einfügemodus zu verlassen, befolgen Sie die Anweisungen von rson und verwenden Sie Ctrl+ O. Mit dem ersten Beispiel, das ich oben erwähnt habe, werden Sie mit Ctrl+ OFfzu einem vorherigen "f" -Zeichen verschoben und im Einfügemodus belassen.

P Shved
quelle
33
+1 Hervorragende Antwort und vielen Dank für all die Beispiele, die Sie gegeben haben!
Andreas Grech
78
Es ist auch erwähnenswert, dass Sie Ctrl+oeinen einzelnen Befehl im normalen Modus ausgeben können. Dies kann Sie manchmal dahin bringen, wo Sie sein möchten, insbesondere in Kombination mit den Bewegungsbefehlen t / T und f / F.
Randy Morris
6
"Sie scheinen vim zu missbrauchen, aber das ist wahrscheinlich, dass Sie damit nicht sehr vertraut sind." ist ein bisschen herablassend. Nein?
David Rivers
17
Dies ist ein großartiger Einblick in die richtige Verwendung von Vim. Das Drücken von "Esc" ist jedoch ein Problem, und ich denke, es ist erwähnenswert, dass Sie dieser Funktion einen zugänglicheren Schlüssel zuordnen können, z. B. "imap jj <esc>".
Symmetrisch
25
Um einen Tippfehler zu beheben, sollten Sie den Einfügemodus nicht verlassen. Vim ist mächtig, weil Sie atomare, wiederholbare Aktionen erstellen. Durch das Einfügen und Korrigieren eines Tippfehlers werden zwei separate Aktionen erstellt. Der richtige Weg, um einen Tippfehler zu beheben, ohne den Einfügemodus zu verlassen. Wenn das bedeutet, dass Sie mit den Pfeiltasten dorthin navigieren, ist das in Ordnung. Vim verfügt über einige Tastenkombinationen, um im Einfügemodus zu navigieren. Überprüfen Sie :h ins-special-keys. ctrl-h: Rücktaste , ctrl-w: Wort löschen , ctrl-u: bis zum Zeilenanfang löschen , alt-b: ein Wort zurückgehen.
everett1992
151

Verwenden Sie im Einfügemodus , um für nur einen Befehl CtrlOin den normalen Modus zu wechseln :

CTRL-O h  move cursor left 
CTRL-O l  move cursor right
CTRL-O j  move cursor down
CTRL-O k  move cursor up

Dies ist wahrscheinlich der einfachste Weg, um das zu tun, was Sie wollen, und leicht zu merken.

Andere sehr nützliche Steuertasten im Einfügemodus:

CTRL-W    delete word to the left of cursor
CTRL-O D  delete everything to the right of cursor
CTRL-U    delete everything to the left of cursor
CTRL-H    backspace/delete
CTRL-J    insert newline (easier than reaching for the return key)
CTRL-T    indent current line
CTRL-D    un-indent current line

Dadurch werden viele verschwenderische Schalter zurück in den normalen Modus eliminiert.

Chris Sattinger
quelle
13
Vielen Dank. Dies sollte als die richtige Antwort angesehen werden. Es ist tatsächlich hilfreich.
Atcold
1
Auf meinem Mac ist es Kleinbuchstaben oder nicht Großbuchstaben O. Unterscheidet sich das von "Standard-Vim"? Ich sehe viele Stellen, an denen sie Großbuchstaben zu sagen scheinen (es sei denn, das ist nur schlampiges Schreiben). Kannst du bestätigen?
Floris
Ok sehr nützlich. Eine interessante Kombination fällt mir jedoch schwer, und dies ist das Entfernen der Linie. Sehr unterschätzte Sache, wenn eine Zeile versehentlich eingefügt wird.
Patrik
5
@Floris Vim unterscheidet bei Strg-Kombinationen nicht zwischen Groß- und Kleinbuchstaben. Deshalb ist es nicht möglich, Strg + Umschalt + etwas zuzuordnen.
Mahmoud Al-Qudsi
92

Einfügemodus

Bewegung

hjkl

Ungeachtet dessen, was Pavel Shved gesagt hat - dass es wahrscheinlich ratsamer ist, sich an den EscAffen-Einfügemodus zu gewöhnen -, ist hier ein Beispielsatz von Zuordnungen für die schnelle Navigation im Einfügemodus:

" provide hjkl movements in Insert mode via the <Alt> modifier key
inoremap <A-h> <C-o>h
inoremap <A-j> <C-o>j
inoremap <A-k> <C-o>k
inoremap <A-l> <C-o>l

Dadurch wird Alt+ him Einfügemodus ein Zeichen nach links, Alt+ nach junten usw. analog zum hjklNormalmodus verschoben.

Sie müssen diesen Code in Ihre vimrc-Datei kopieren, damit er bei jedem Start von vim geladen wird (Sie können ihn öffnen, indem Sie :new $myvimrcim normalen Modus beginnen).


Alle Bewegungen im normalen Modus

Da die AltModifizierertaste standardmäßig nicht (auf etwas Wichtiges) abgebildet ist, können Sie auf die gleiche Weise andere (oder alle) Funktionen vom Normalmodus in den Einfügemodus ziehen. Beispiel:
Mit Alt+ zum Anfang des aktuellen Wortes wechseln b:

inoremap <A-b> <C-o>b
inoremap <A-w> <C-o>w


(Andere Verwendungen Altim Einfügemodus)

Es ist erwähnenswert, dass der AltSchlüssel möglicherweise besser verwendet werden kann als das Replizieren des Verhaltens im normalen Modus: Hier sind beispielsweise Zuordnungen zum Kopieren des Teils aus der aktuellen Spalte bis zum Zeilenende aus einer benachbarten Zeile:

" Insert the rest of the line below the cursor.
" Mnemonic: Elevate characters from below line
inoremap <A-e> 
    \<Esc>
    \jl
        \y$
    \hk
        \p
        \a
" Insert the rest of the line above the cursor.
" Mnemonic:  Y depicts a funnel, through which the above line's characters pour onto the current line.
inoremap <A-y> 
    \<Esc>
    \kl
        \y$
    \hj
        \p
        \a

(Ich habe \ Zeilenfortsetzung und Einrückung verwendet, um die Übersichtlichkeit zu erhöhen. Die Befehle werden so interpretiert, als ob sie in eine einzelne Zeile geschrieben wären.)


Eingebaute Hotkeys zum Bearbeiten

CTRL-H   delete the character  in front of the cursor (same as <Backspace>)
CTRL-W   delete the word       in front of the cursor
CTRL-U   delete all characters in front of the cursor (influenced by the 'backspace' option)

(Es gibt keine nennenswerten integrierten Hotkeys für Bewegungen im Einfügemodus.)

Referenz: :help insert-index


Befehlszeilenmodus

Diese Zuordnung stellt die oberen Alt+ hjkl Bewegungen in der Befehlszeile zur Verfügung:

" provide hjkl movements in Command-line mode via the <Alt> modifier key
cnoremap <A-h> <Left>
cnoremap <A-j> <Down>
cnoremap <A-k> <Up>
cnoremap <A-l> <Right>

Alternativ fügen diese Zuordnungen die Bewegungen auf einmal sowohl zum Einfügemodus als auch zum Befehlszeilenmodus hinzu :

" provide hjkl movements in Insert mode and Command-line mode via the <Alt> modifier key
noremap! <A-h> <Left>
noremap! <A-j> <Down>
noremap! <A-k> <Up>
noremap! <A-l> <Right>


Die Zuordnungsbefehle zum Ziehen von Befehlen im Normalmodus in den Befehlszeilenmodus unterscheiden sich ein wenig von den Zuordnungsbefehlen für den Einfügemodus (da im Befehlszeilenmodus das Einfügemodus Ctrl+ fehlt O):

" Normal mode command(s) go… --v <-- here
cnoremap <expr> <A-h> &cedit. 'h' .'<C-c>'
cnoremap <expr> <A-j> &cedit. 'j' .'<C-c>'
cnoremap <expr> <A-k> &cedit. 'k' .'<C-c>'
cnoremap <expr> <A-l> &cedit. 'l' .'<C-c>'

cnoremap <expr> <A-b> &cedit. 'b' .'<C-c>'
cnoremap <expr> <A-w> &cedit. 'w' .'<C-c>'


Eingebaute Hotkeys zum Bewegen und Bearbeiten

CTRL-B       cursor to beginning of command-line
CTRL-E       cursor to end       of command-line

CTRL-F       opens the command-line window (unless a different key is specified in 'cedit')

CTRL-H       delete the character  in front of the cursor (same as <Backspace>)
CTRL-W       delete the word       in front of the cursor
CTRL-U       delete all characters in front of the cursor

CTRL-P       recall previous command-line from history (that matches pattern in front of the cursor)
CTRL-N       recall next     command-line from history (that matches pattern in front of the cursor)
<Up>         recall previous command-line from history (that matches pattern in front of the cursor)
<Down>       recall next     command-line from history (that matches pattern in front of the cursor)
<S-Up>       recall previous command-line from history
<S-Down>     recall next     command-line from history
<PageUp>     recall previous command-line from history
<PageDown>   recall next     command-line from history

<S-Left>     cursor one word left
<C-Left>     cursor one word left
<S-Right>    cursor one word right
<C-Right>    cursor one word right

<LeftMouse>  cursor at mouse click

Referenz: :help ex-edit-index

Aaron Thoma
quelle
@ YugalJindle: Danke! :) Ich habe jetzt Informationen zum Optimieren des Befehlszeilenmodus hinzugefügt. (Der Ansatz unterscheidet sich ein wenig vom Einfügemodus.)
Aaron Thoma
@ Zen: Was meinst du mit "winkey"? Ich habe in meiner Antwort nicht auf den Windows-Schlüssel verwiesen. Meinst du den AltSchlüssel?
Aaron Thoma
Shift - links / rechts, um ein ganzes Wort zu bewegen !! Woher wusste ich das nicht? Vielen Dank.
Floris
tatsächlich im Terminal-Modus alt sendet automatisch esc vor Ihren Befehlen ........
Fuseteam
26

Wenn Sie ein Vim-Purist sind, überspringen Sie das Lesen dieser Antwort. OTOH, wenn Sie neu in Vim sind und nach ein paar hilfreichen Tipps suchen, die Sie in den vielen hundert Vim-Tutorials und -Blogs nicht finden, lesen Sie weiter ... :-)

Ein paar unorthodoxe (vim) Wege

Es ist 2014, und als jemand, der kürzlich zurückgekehrt ist, vimkann ich einige, möglicherweise konträre Standpunkte und Tipps anbieten.

Verwenden Sie Umschalt + links oder Umschalt + rechts, um Wörter zu durchlaufen

Während Wiederholung in vim ein mächtiges Konzept ist, finde ich es (persönlich) seltsam, dass ich entweder gezwungen bin, zu zählen (Linien, Zeichen, Wörter usw.) oder Vermutungen anzustellen. Mein Gehirn arbeitet normalerweise wie "Ich möchte den Cursor dort " und nicht wie "Ich möchte den Cursor _5_Wörter_zu_der_Links_". Wenn ich den Cursor schnell bewegen und visuell beobachten kann, wo sich die Einfügemarke auf diese Weise befindet, kann ich mich auf das konzentrieren, was ich bearbeite, anstatt zählen zu müssen, wie viele Sprünge ich machen muss, um dorthin zu gelangen, wo ich bearbeiten muss.

Schalten Sie den Mausmodus ein, verwenden Sie das Mausrad und klicken Sie

... um durch große Textkörper zu navigieren.

Die meisten (alle) modernen Computer verfügen über ein Touchpad , das eng in die Tastatur integriert ist (z. B. MacBooks). Industriedesigner haben viele Mannjahre damit verbracht, diese Designs so zu optimieren, dass das alte Problem, die Hand von der Tastatur wegbewegen zu müssen, kein echtes Problem mehr darstellt. Okay, wenn Sie an eine Maus gewöhnt sind und nicht gerne wechseln, aber für alle, die neu in Vim sind (wie diejenigen, die diesen Beitrag über eine Suche finden könnten), sollte dies kein großes Problem sein.

Als Bonus versetzt Sie Click + Drag in den visuellen Modus

Wenn die Maus aktiviert ist, wird durch Klicken und Ziehen in den visuellen Modus gewechselt und ein Bereich zum Ziehen markiert.

Und benutze das Scrollrad

Das Scrollen mit der Maus (Rad) und das Klicken zum Positionieren des Cursors (duh) funktionieren einfach. Weitere Informationen hierzu finden Sie unter http://usevim.com/2012/05/16/mouse/ .

Und so...

Dies sind die moderneren Navigationsmethoden (mit Maus, Scrollrad usw.) in vim, die je nach Präferenz für die Eingabe gleichermaßen effektiv sind.

HTH

Shyam Habarakada
quelle
6
@ MilesRout Ja, ich hatte einen Haftungsausschluss. Aber im Ernst, ich würde denken, dass es einen guten Anteil von Vim-Benutzern gibt, deren Gehirn genauso funktioniert wie meins. Das heißt ... mein Gehirn arbeitet normalerweise wie "Ich möchte den Cursor dort" und nicht wie "Ich möchte den Cursor 5_Wörter_zu_der_Links ". Und die konventionelle Art von Vim funktioniert für diese Leute nicht so gut. Ich liebe vim, weil a) es überall verfügbar ist und b) leistungsstarke Funktionen hat. Ich habe jedoch nicht das Bedürfnis, mich an alle Standardmechanismen anzupassen.
Shyam Habarakada
4
@MilesRout Es gibt eine Menge Religion um diese Art von Dingen in vim, also werde ich nicht mit Ihnen darüber diskutieren. Die Wiederholungszählmethode hilft mir nicht weiter, und die akzeptierte Antwort nennt sie auch etwas, das stark unterbeansprucht wird. Ich kann nur raten, warum das so ist. Die Verwendung von w, b usw. zum Navigieren zu nahe gelegenen Orten ist großartig, aber um weiter zu gehen, funktioniert das Mausrad für mich viel besser. Prost.
Shyam Habarakada
4
+1. Ich verstehe es nicht, wenn ich abstimme. Es gibt einen Haftungsausschluss. Nimm es, wenn es dir gefällt und überspringe es, wenn du es nicht tust.
fangmobile.com
Dies ist eine sehr hilfreiche Antwort
Slava
1
Als jemand, der kürzlich zu VIM gewechselt ist, finde ich die Prämisse dieser Antwort absolut zutreffend. Die Fähigkeit, sofort die Anzahl der Wiederholungen zu bestimmen, die erforderlich sind, um den Cursor an einer bestimmten Stelle zu positionieren, kann etwas sein oder auch nicht Erfahrung. Genau wie bei @ShyamHabarakada funktioniert mein Gehirn gerade nicht so. Unabhängig davon, wie unorthodox dies sein mag, habe ich persönlich fn + hjkl für sehr kleine Bewegungen den Pfeiltasten neu zugeordnet. Bei großen Bewegungen nähere ich mich normalerweise einer Anzahl von Wiederholungen und passe sie dann an. Für mich ist das so schnell wie möglich.
Jacoscaz
14

Viele Leute in der Vim-Community argumentieren, dass Sie nicht im Einfügemodus navigieren sollten, sondern dass dies nicht der Vim-Weg ist. Ich denke, dies ist ein falsches Gefühl, das man beim Übergang von Standard-Editoren zu Vim gelernt hat.

Vim ist am leistungsfähigsten, wenn Sie seine Werkzeuge verwenden, um atomare, wiederholbare Aktionen oder Fundstücke zu erstellen.

Es ist in Ordnung, im Einfügemodus zu navigieren, wenn Sie einen Fehler beheben, den Sie in derselben Einfügesitzung gemacht haben. Sie sollten nicht außerhalb des von Ihnen geänderten Textbereichs navigieren.

Wenn Sie bei der Eingabe von Text einen Fehler machen und den Einfügemodus verlassen, um ihn zu beheben, können Sie die beabsichtigte Aktion .nicht wiederholen. Die Korrektur wird wiederholt.

Vim unterstützt viele Navigationstasten im Einfügemodus. Natürlich gibt es die Pfeiltasten Home und End, aber es gibt auch viele andere Verknüpfungen. Siehe :h ins-special-keys.

everett1992
quelle
4

In GVim können Sie die Maus verwenden. Aber ehrlich gesagt, was ist falsch daran, die Pfeiltasten zu verwenden? Es gibt einen Grund, warum sie auf einer Tastatur sitzen.

Erich Kitzmüller
quelle
9
Dieser Grund richtet sich jedoch nicht an vim-Benutzer. Eine der zentralen Stärken von vim ist, dass Sie alle möglichen Dinge tun können, ohne zeitaufwändig Ihre Hände von der Startreihe der Tastatur zu nehmen. Insbesondere die hjkl-Bewegungen.
Aaron Thoma
1
Ich stimme @ammoQ zu. An der Verwendung der Pfeiltasten ist nichts auszusetzen. Wenn Sie mit den Pfeiltasten mehr Produktivität erzielen, sollten Sie dies tun.
Eunwoo Song
Auszeichnung: Ich benutze hjkl häufiger als die Pfeiltasten, wenn ich vi benutze, aber das Umschalten zwischen den Modi ist für mich zu einer unbewussten Handlung geworden.
Erich Kitzmüller
4

Warum nicht einige Tasten zuordnen, um im Einfügemodus etwas besser navigieren zu können?

imap <C-b> <Left>
imap <C-f> <Right>
imap <C-e> <End>
imap <C-a> <Home>
" <C-a> is used to repeat last entered text. Override it, if its not needed

Wenn Sie umgehen können, dass der Meta-Schlüssel in Ihrem Terminal funktioniert, können Sie den Emacs-Modus noch besser verspotten. Die Navigation im Normalmodus ist viel besser, aber für kürzere Bewegungen hilft es, im Einfügemodus zu bleiben.

Für längere Sprünge bevorzuge ich die folgende Standardübersetzung:

<Meta-b>    maps to     <Esc><C-left>

Dies wechselt in den Normalmodus und geht ein Wort zurück

Alex
quelle
2

Ich glaube Homeund End(und PageUp/ PageDn) funktionieren auch normal im Einfügemodus, aber abgesehen davon glaube ich nicht, dass andere Standardschlüssel für die Textdurchquerung definiert sind.

Bernstein
quelle
Aber gibt es möglicherweise keine Möglichkeit, den Text nur mit den Buchstabentasten zu durchlaufen?
Andreas Grech
5
Sicher gibt es, wenn Sie nicht in der Lage sein wollen, bestimmte Buchstaben
einzugeben
@hobbs Wie wäre es mit Strg + hjkl? Das sollte Sinn machen
user4052054
1

Sorry, aber vim funktioniert nicht so.

Sie sollten in den "normalen" Modus wechseln, navigieren und dann zurückgehen, um erneut einzufügen.

Johan
quelle
1

Sie können Zuordnungen erstellen, die im Einfügemodus funktionieren. Der Weg dazu führt über eine Inoremap. Beachten Sie das 'i' am Anfang des Befehls (noremap ist nützlich, um Kollisionen mit Schlüsselkarten zu vermeiden). Die Folge ist 'n' für den 'normalen' Modus. Sie können vermuten, was vim für "normal" hält;)

Sie möchten jedoch wirklich im normalen Modus im Text navigieren. Vim ist in dieser Art von Dingen super und all diese Leistung ist im normalen Modus verfügbar. Vim bietet bereits einfache Möglichkeiten, um vom normalen Modus in den Einfügemodus zu gelangen (z. B. i, I, a, A, o, O). Der Trick besteht darin, den normalen Modus zu vereinfachen. Der Weg, dies zu tun, besteht darin, die Flucht einem bequemeren Schlüssel zuzuordnen. Sie benötigen jedoch eine, die nicht mit Ihrer normalen Eingabe in Konflikt steht. Ich benutze:

inoremap jj <Esc>

Da jj (das sind 2 j, die schnell nacheinander eingegeben werden) nicht in meinem Wortschatz zu erscheinen scheint. Andere werden neu zuordnen, wo es bequem ist.

Die andere wesentliche Änderung, die ich vornehme, ist das Umschalten der Tasten CAPSLOCK und CONTROL auf meiner Tastatur (unter Verwendung der Tastaturkonfiguration des Host-Computers), da ich CAPSLOCK fast nie verwende und die große, schöne Taste genau dort ist, wo ich sie haben möchte. (Dies ist bei Emacs-Benutzern üblich. Der Nachteil ist, dass Sie sich auf einer "nicht fixierten" Tastatur befinden! Aaarggh!)

Sobald Sie CAPSLOCK neu zugeordnet haben, können Sie die folgenden Neuzuordnungen im Einfügemodus bequem verwenden:

Wenn Sie bedenken, dass einige Schlüssel bereits im Einfügemodus zugeordnet sind (Rückwärts-Kill-Wort ist standardmäßig Cw (Strg-W)), haben Sie möglicherweise bereits die gewünschten Bindungen. Das heißt, ich bevorzuge Ch so in meiner .vimrc, die ich habe ::

inoremap <C-h> <C-w>

ABER du willst wahrscheinlich den gleichen Muskelgedächtniskrampf im normalen Modus, also ordne ich Ch auch als:

nnoremap <C-h> db

(d) elete (b) ackwards erreicht dasselbe mit demselben Tastenakkord. Diese Art der schnellen Bearbeitung ist eine, die ich in der Praxis für Tippfehler nützlich finde. Aber bleiben Sie beim normalen Modus, um sich im Text zu bewegen und alles andere als das vorherige Wort zu töten. Sobald Sie sich angewöhnt haben, den Modus zu ändern (natürlich mithilfe einer Neuzuordnung), ist dies viel effizienter als die Neuzuordnung des Einfügemodus.

pfries
quelle
schöne Neuzuordnung für die Flucht - ich denke, es wird für fast alles funktionieren, außer für transliteriertes Arabisch!
18.
0

Sie können imapjede Taste im Einfügemodus einer der Cursortasten zuordnen. Wie so:

imap h <Left>

Jetzt funktioniert h wie im normalen Modus und bewegt den Cursor. (Die Zuordnung von h auf diese Weise ist offensichtlich eine schlechte Wahl.)

Trotzdem denke ich nicht, dass die Standardmethode zum Bewegen von Text mit VIM "nicht produktiv" ist. Es gibt viele sehr leistungsfähige Möglichkeiten, den Text im normalen Modus zu durchlaufen (z. B. mit w und b oder / und? Oder f und F usw.).

Peter van der Heijden
quelle
1
Ich habe nicht gesagt, dass die Standardmethode zum Durchlaufen von Text in vim nicht produktiv ist. Was ich sagte war, dass es ein bisschen "ärgerlich" war, den Einfügemodus zu verlassen, um ein paar Zeichen zurück zu gehen, und dann zurück zu müssen, um wieder einzufügen; aber vielleicht liegt das auch daran, dass ich mich noch nicht ganz an vim gewöhnt habe :)
Andreas Grech
Dies ist die Lösung, nach der ich gesucht habe. Ich benutze imap <Ch> <Left> (ich weiß, dass es ein Zeichen löscht, aber ich habe eine Rücktaste), was alles ist, was ich brauche, danke.
user4052054
0

Für einige häufig verwendete Bewegungen und Aktionen habe ich die folgenden Zuordnungen definiert. Dies erspart einen Tastenanschlag im Vergleich zur STRG + O-Kombination und da ich sie häufig benötige, zahlen sie sich auf lange Sicht aus.

inoremap <A-$> <C-o>$
inoremap <A-^> <C-o>^
inoremap <A-h> <Left>
inoremap <A-l> <Right>
inoremap <A-O> <C-O>O
inoremap <A-o> <C-o>o
Alexander van Trijffel
quelle