vim mit emacs-Befehlen angepasst (nur Einfügemodus)


10

Ich war ein emacsBenutzer und muss zu wechseln vim. Aber ich vermisse einige grundlegende Emacs-Befehle im vimEinfügemodus:

  1. C-A
  2. C-E
  3. C-K
  4. C-Y
  5. C-x C-s
  6. ... und einige andere

Ich weiß, dass ich Escapeeinige der folgenden Tasten drücken und dann drücken und schließlich die Taste drücken kann i:

  1. ^
  2. $
  3. d$
  4. p
  5. :w [Eingeben]
  6. ...

Ich möchte jedoch im vimEinfügemodus bleiben und das Drücken von Escape/ iTasten vermeiden .

Im Netz habe ich Anpassungen für gefunden emacs( vi-mode, vip, viper, vimpulse, vim-mode, evil). Aber noch nicht das Gegenteil gefunden: Anpassen vim, um emacsBefehle zu verwenden ...

Ich interessiere mich nur für die emacsBefehle im vim Einfügemodus . Nur ein paar grundlegende Befehle, wie bashBefehle: C-A, C-E, C-K, C-Y, C-U... (yep C-Ukein Standard ist emacsBefehl , aber ich mag es auch).

Antworten:


7

Ich beantworte diese Frage vier Jahre später, weil die Antwort eine Teillösung ist, die die ursprüngliche Frage nicht vollständig anspricht.

Ich habe genau den gleichen Wunsch wie Olibre und wollte eine Komplettlösung finden. Ich komme aus einer anderen Perspektive darauf - ich bin es gewohnt, Emacs Zeilen in Bash zu bearbeiten - aber das Problem ist das gleiche. Ich möchte das (nur) in den Vim-Einfügemodus übertragen.

Im Folgenden werden alle Schlüsselbindungsanfragen in der ursprünglichen Frage von olibre sowie einige Extras behandelt:

" Mimic Emacs Line Editing in Insert Mode Only
inoremap <C-A> <Home>
inoremap <C-B> <Left>
inoremap <C-E> <End>
inoremap <C-F> <Right>
" â is <Alt-B>
inoremap â <C-Left>
" æ is <Alt-F>
inoremap æ <C-Right>
inoremap <C-K> <Esc>lDa
inoremap <C-U> <Esc>d0xi
inoremap <C-Y> <Esc>Pa
inoremap <C-X><C-S> <Esc>:w<CR>a

Die einzigen Bindungen, die ich an dieser Stelle anscheinend nicht zur Arbeit bringen kann, sind <Alt-B>und <Alt-F>, die ganze Wörter überspringen würden. Immer , wenn ich binden <Esc>, <Alt>oder <Meta>Kombinationen, gVim (v7.4 unter Windows) gibt akzentuierte Zeichen. Bitte zögern Sie nicht, diese Antwort zu bearbeiten, wenn Sie eine Lösung für dieses Problem haben. Ich habe Alt-Kombinationen zum Laufen gebracht, basierend auf dem Vorschlag eines anderen Beitrags , nur die Sonderzeichen zu verwenden. Ich habe sie oben eingefügt.

Bearbeiten

- (Bearbeitung erfolgt nicht durch Original-Antwortplakat) -

Unter Neovim und Windows 10 habe ich Folgendes verwendet. Unter anderen Betriebssystemen müssen Sie möglicherweise "A" in "M" ändern, da "alt" an anderer Stelle möglicherweise "meta" ist. Ich habe nicht genug damit gespielt.

inoremap <A-x> <Esc>:
inoremap <A-f> <Esc>lwi
inoremap <A-b> <Esc>bi
inoremap <A-S-f> <Esc>lWi
inoremap <A-S-b> <Esc>Bi

Nur ein kleiner Vorschlag: Ich denke, <Esc>pawäre besser für<C-Y>
Yamaneko

Sieht so aus, als würde <C-K>es nicht funktionieren, wenn sich der Cursor ganz links befindet - er sollte die gesamte Zeile löschen, aber Esc>lDadas erste Zeichen wird nicht gelöscht.
Ying Xiong

7

Sie können jeden Befehl im Einfügemodus mit dem :imapBefehl einem beliebigen Befehl zuordnen oder die Eingabe mithilfe von speichern :im. Für Ihre erste Zuordnung können Sie Folgendes eingeben (im normalen Modus):

:im <C-A> <esc>^i

Das geht in den normalen Modus (mit Escape), drückt ^für Sie und kehrt in den Einfügemodus zurück. Weitere Informationen finden Sie in der Hilfe:

:help :imap oder kürzer: :h :im

Beachten Sie, dass Sie möglicherweise vorhandene Tastenzuordnungen überschreiben. Fügen Sie die Befehle in Ihre .vimrcKonfigurationsdatei ein, wenn Sie möchten, dass sie für jedes Dokument vorhanden sind.


danke für deine tipps +1 :-) Aber weißt du, ob diese Art der Zuordnung bereits konfiguriert wurde? (zB ohne vorhandene Schlüsselzuordnungen überschreiben). Wo finde ich ein solches Projekt / eine solche Konfiguration? Ich würde es vorziehen, etwas bereits Erledigtes (und Robustes) wiederzuverwenden, als es selbst zu versuchen (und etwas Wichtiges zu verpassen). Cheers
Olibre

Soll ich meine Frage auf superuser.com stellen / verschieben ?
Olibre

Vielen Dank! Mit dem Befehl (Logik) können Sie sehen, ob ein Befehl vorhanden ist :im <c-a>. Wenn "Keine Zuordnung gefunden" angezeigt wird, überschreiben Sie nichts. Ich denke nicht, dass es viel robuster wird als das ...
Joker

Humm ... Ich muss codieren, meine Konfiguration testen, dann meine Fehler beheben und noch einmal ... Aber ich kenne nicht alle vimBefehle ... Bitte wissen Sie, wo ich eine Liste der :imletzten Argumente finden kann? FYI, ich bin auch mit den folgenden verwendeten bashBefehle: M-backspace, M-F, M-B, M-D... Es wäre schön, wenn jemand bereits , dass und teilt seine Arbeit getan hat, ist es nicht? (so etwas wie evil) Daher könnte ich seine :imSchlüsselzuordnung wiederverwenden, ohne es selbst zu tun (fehleranfällig). Verstehst du, was ich meine?
Olibre

Ich verstehe möglicherweise nicht genau, was Sie meinen, aber Sie können alle nicht standardmäßigen Tastenzuordnungen durch Eingabe finden :im. Um einen Kommentar auf höherer Ebene abzugeben: Wenn Sie Vim auf mehreren Plattformen / Computern verwenden möchten, ohne immer Ihre eigenen Plugins, Spezialmodi oder Vimrc-Dateien laden zu müssen, ist es meiner Meinung nach am besten, zu lernen / zu verwenden die Standard-Vim-Befehle so weit wie möglich. Ich habe selbst mehrere Schlüsselzuordnungen vorgenommen, versuche aber immer, die Standard-Vim-Alternative zu finden. Und es kann ziemlich schnell gehen. Eine Sache, die ich getan habe, ist die Zuordnung <esc>zu ;j, wodurch Ihre Nr. 1-Zuordnung so einfach wie ;jIund Nr. 2 wird ;jA.
Joker

6

Keine vollständige Antwort, aber kennen Sie den sogenannten " einfachen Modus " ( vim -y) von Vim ? Es befindet sich standardmäßig immer im Bearbeitungsmodus und macht eine Menge von dem, was Sie wollen, und Sie müssen nichts installieren oder anpassen. Es macht STRG-A, C, V, X, Y usw. Aus der Schlüsselliste :

Key mappings:
    <Down>      moves by screen lines rather than file lines
    <Up>        idem
    Q           does "gq", formatting, instead of Ex mode
    <BS>        in Visual mode: deletes the selection
    CTRL-X      in Visual mode: Cut to clipboard
    <S-Del>     idem
    CTRL-C      in Visual mode: Copy to clipboard
    <C-Insert>  idem
    CTRL-V      Pastes from the clipboard (in any mode)
    <S-Insert>  idem
    CTRL-Q      do what CTRL-V used to do
    CTRL-Z      undo
    CTRL-Y      redo
    <M-Space>   system menu
    CTRL-A      select all
    <C-Tab>     next window, CTRL-W w
    <C-F4>      close window, CTRL-W c

Eine viel leistungsfähigere Version davon ist Cream , die viel mehr Tasten neu zuordnet und die grundlegenden Befehle anderen Editoren ähnelt, mit denen Sie möglicherweise vertraut sind.

Es gibt auch das Plugin Vimacs , das alle gängigen Emacs- Tastenzuordnungen ermöglicht. Es ist einfach zu installieren und kann tun, was Sie wollen (ich habe es noch nie versucht).


Sehr interessant +1 :-) Ich lese / teste alle deine Links ... Ich werde dir später mehr Feedback geben. Vielen Dank. Cheers
olibre

1
Tasten des «einfachen Modus» haben nichts mit Emacs zu tun. Aber «vimacs» scheint eine interessante Sache zu sein. Ich habe es gerade installiert und obwohl es alt ist, funktioniert es immer noch.
Hi-Angel
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.