Wie ordne ich den ALT-Schlüssel in .vimrc zu?

9

Um Leerzeilen hinzufügen zu können, ohne in den Einfügemodus zu wechseln, versuche ich, ALT-ound ALT-Ozu o<ESC>und zuzuordneno<ESC>

Ich habe folgendes in meinem versucht .vimrc

map <M-o> o<ESC>
map <M-O> O<ESC>

und

map <ALT-o> o<ESC>
map <ALT-O> O<ESC>

und (wie unten vorgeschlagen)

map <A-o> o<ESC>
map <A-O> O<ESC>

aber keine funktioniert. Es gibt nur das übliche Verhalten, als ob ALT-oes nicht definiert worden wäre.

.vimrcIch ändere die Datei zum ersten Mal und kann nicht finden, wo in der Dokumentation angegeben ist, wie die verschiedenen Schlüssel festgelegt werden. Ich kann jedoch überprüfen, ob meine .vimrcDatei gelesen wird, indem ich Folgendes einbeziehe :

map <Enter> ihello<ESC>

Was erfolgreich <Enter>dem Einfügen hellound Zurückkehren in den Befehlsmodus zugeordnet wird.

Ich benutze vim mit cygwin.

Eric Wilson
quelle
Es hört sich so an, als würde Ihr Terminal die Alt-Sequenzen überhaupt nicht weitergeben. Funktionieren andere bekannte Sequenzen? Was ist mit Strg? Welches Terminal verwenden Sie?
Caleb
Ich verwende vim auf cygwin, habe aber andere Skripte als Bearbeitungsdetails verwendet.
Eric Wilson
Strg funktioniert irgendwie. Es scheint mich nicht zwischen <C-o>und unterscheiden zu lassen <C-O>.
Eric Wilson
Giles Antwort ist genau richtig. Sie sollten definitiv zu einem leistungsfähigeren Terminal wechseln. Diese Probleme sollten verschwinden und Sie erhalten Ihre Schlüssel zurück!
Caleb

Antworten:

10

Um zu sehen, was Ihr Terminal sendet, wenn Sie eine Taste drücken, wechseln Sie in den Einfügemodus, drücken Sie Ctrl+Vund dann die Taste. Die meisten Tasten mit den meisten Terminals senden eine Escape-Sequenz, bei der nur das erste Zeichen ein Steuerzeichen ist. Ctrl+VFügt das nächste Zeichen buchstäblich ein, sodass Sie die gesamte Escape-Sequenz auf diese Weise einfügen können.

Verschiedene Terminals senden für einige Tastenkombinationen unterschiedliche Escape-Sequenzen. Viele Terminals senden ^Ofür beide Ctrl+Ound dasselbe Zeichen ( ) Ctrl+Shift+O. In diesem Fall kann Vim nicht zwischen ihnen unterscheiden.

Sie erwähnen, dass Sie Cygwin verwenden. In welchem ​​Terminal Sie Vim ausführen, sind die relevantesten Informationen. Wenn Sie die native Windows-Konsole verwenden, besorgen Sie sich ein besseres Terminal. Ich empfehle MinTTY zum Ausführen von Cygwin-Textmodusanwendungen in einem Terminal unter Windows außerhalb von X, aber auch Cygwins Windows-native RXVT und PuTTYcyg sind gut. (Auch Console2 zum Ausführen von Windows-Konsolenanwendungen, aber das ist hier völlig unangebracht ).

Gilles 'SO - hör auf böse zu sein'
quelle
2

Wenn Shows Control+Vfolgen (Terminal eingeben ), können Sie dies mit diesem kleinen Skript von vim.wikia.com beheben :ALT-x^[x

for i in range(97,122)
  let c = nr2char(i)
  exec "map \e".c." <M-".c.">"
  exec "map! \e".c." <M-".c.">"
endfor

Fügen Sie zu .vimrc für alle Alt-Key-Zuordnungen hinzu.

Laktak
quelle
1

Dies funktioniert für mich auf Ubuntu 16.04 xfce Terminal (und Alacritty Rost Terminal)

Setzen Sie den Ultisnip-Snippet-Trigger auf Meta-/(genau wie beim Emacs-Snippet).

let g:UltiSnipsExpandTrigger="^[/"

Hier ^[/tippe ich jetzt vim ein

Im Einfügemodus Ctrl-V Alt-/

( Metaist die AltTaste auf meiner PC-Tastatur)

user178047
quelle
-1

Die Taste M (eta) ist die Windows-Taste. Es ist einfach <A-o>.

Martin Ueding
quelle
Das funktioniert auch nicht.
Eric Wilson
Dies ist nicht immer der Fall, da unterschiedliche Tastaturlayouts und Sprachumgebungen häufig unterschiedlich sind.
Caleb
@Caleb gibt es dafür eine Dokumentation?
Eric Wilson
Ich habe es versucht map <A-o> o<ESC>und es hat bei mir funktioniert. Wenn Sie es in Ihre gelegt haben .vimrc, haben Sie es neu geladen?
Martin Ueding
Der Fragesteller gab bereits in seiner Frage an, dass er überprüft hat, ob die Datei geladen wurde. Dies ist nicht relativ zum Benutzer, da sie sich unter Windows befinden. Sie können jedoch verschiedene Meta / Win / Alt-Tastenkonfigurationen in den xkb-Geometrie- / Symbol- / Schlüsselcode-Dateien sehen. Sie werden feststellen, dass es auch in den Gnome-Tastaturlayoutoptionen mehrere gängige Möglichkeiten gibt, Alt / Win / Meta neu zuzuordnen. Einer der Gründe dafür ist die Ungleichheit der Basislayouts.
Caleb