Manchmal muss ich griechische Wörter schreiben, aber wenn ich die griechische Tastatur benutze, <C-p>
wird das Drücken beispielsweise als <C-π>
und nicht als der Befehl verstanden, den ich beabsichtige. Dies kann mit behoben werden :map <C-p> <C-π>
. Kann ich dies für alle Briefe tun, ohne eine Liste aller zu erstellen?
PS. Eine Liste von allen zu erstellen, führt nicht zu einem perfekten Ergebnis. ZB q
ist ;
auf der Gr. Tastatur, aber wir wollen nicht abbilden; zu q. Aus irgendeinem Grund funktioniert ΖΖ (Zeta Zeta) auch nicht nach :map Ζ Z
. Und ein Befehl, den ich definiert habe \lw
, funktioniert nicht als \λς
.
key-bindings
keyboard-layout
Toothrot
quelle
quelle
langmap
Option (siehe das Dokument, das ein Beispiel für das griechische Layout enthält). Diese Option wurde speziell für den Umgang mit nicht lateinischen Tastaturen wie Griechisch oder Kyrillisch entwickelt. Hier können Sie Symbolpaare definieren, die im Einfügemodus normal interpretiert, aber in anderen Modi ersetzt werden. Vielleicht hilft dies Ihnen.:echo has('langmap')
wenn Sie eine1
haben, wenn Sie eine0
nicht haben.brew install vim --override-system-vi
und:echo has &c
kehre jetzt zu 1 zurück. ZZ funktioniert. Das Problem mit\lv
& c bleibt bestehen.:echo has &c
Teil nicht, ich verstehe nicht, wie er sich darauf bezieht,langmap
auch wenn Sie vim kompiliertlangmap
haben und die Zuordnungen:set langmap=ΑA,ΒB,ΨC [...]
in Ihrem vimrc angeben müssen.Antworten:
Ich würde empfehlen
keymap
, was dein Problem lösen kann. Legen Sie diese in Ihr vimrcStandardmäßig deaktivieren Sie Griechisch. Sie können die Option aktivieren (Griechisch) und deaktivieren (Englisch), indem
<ctrl>+^
Sie<ctrl>+6
im Einfügemodus und im Ersetzungsmodus (funktioniert nicht in ) (Sie können sie auch verwenden , wenn sie auf die Taste und nicht auf das Symbol abgebildet ist) Normaler Modus). Zum automatischen Deaktivieren beim Verlassen des Einfügemodus können Sie verwendenMehr dazu
:h iminsert
:h keymap
:h imsearch
:h i_CTRL-^
BEARBEITEN zum zweiten Kommentar:
Sie können dies versuchen, um Griechisch automatisch einzuschalten, wenn Sie in den Einfügemodus (und Ersetzungsmodus) wechseln, und um es automatisch auszuschalten, wenn Sie den Modus verlassen (dann benötigen Sie die oben erwähnte Zuordnung nicht).
quelle
:map >a
, und ob es welche gibt , entfernen Sie die Zuordnung von:unmap >a
. Als Nicht-Grieche und Nicht-MacOs-User bin ich schon am Ende. Entschuldigung und viel Glück!Wie ich in den Kommentaren sagte, sind Zuordnungen in nicht dafür ausgelegt, das zu tun, was Sie tun möchten. Eine interessante Option für diesen Anwendungsfall ist
langmap
.Mit dieser Option können Sie das Verhalten oder die Tastatur im Einfügemodus belassen und das Verhalten in den anderen Modi ändern.
Um es zu verwenden, mit dem Vim kompiliert werden muss
+langmap
, können Sie überprüfen, ob diese Option aktiviert istecho has('langmap')
: Wenn der Befehl zurückgibt, ist1
die Option aktiviert, andernfalls müssen Sie ein Setup mit dieser Option durchführen (um zu wissen, wie das geht, muss sie aktiviert sein) ist eine andere Frage).Wenn diese Option aktiviert ist,
set langmap += à@
können Sie bei Verwendung von Zeichenpaaren beispielsweiseà
im Einfügemodus ein in den Puffer einfügen, und Sie geben ein einà
, bei Eingabeà
im normalen Modus wird jedoch tatsächlich ein ausgelöst@
(dieses Beispiel kann bei Azerty hilfreich sein) Tastaturen, um die Arbeit mit Makros zu erleichtern).Zur Nutzung langmap in der griechischen können Sie das Beispiel in bestimmten folgen dem
:h 'langmap'
Hinzufügen dieser Zeile invimrc
(Kopieren Sie diese Zeile von hier kann nicht eine gute Idee sein , da ich bin wirklich nicht sicher , ob die Codierung, die Zeile direkt aus der Hilfedatei zerren ist wahrscheinlich sicherer) :Nach dem, was ich in Ihren Kommentaren verstehe, bleibt es ein Problem, wenn Sie versuchen, vordefinierte Befehle zu verwenden: Wenn Sie einen Befehl eingeben, wird das Verhalten des Einfügemodus anstelle des von der Langmap definierten Verhaltens ausgelöst. Leider bin ich mir nicht sicher, ob ich dafür eine gute Lösung habe. Eine Idee könnte darin bestehen, Befehle wie folgt neu zu definieren:
Auf diese Weise
λς
wird Vim ausgeführtlw
, wenn Sie den Befehl eingeben. Diese Methode weist jedoch einige Nachteile auf:Vielleicht könnte ein Plugin, das @Alexander Myshov in seiner Antwort auf diese Frage vorgeschlagen hat, nützlich sein (da ich keines davon ausprobiert habe, weiß ich nicht, ob sie das Problem lösen, aber es scheint, als ob sie es tun).
quelle
Ich schreibe regelmäßig in Englisch und Schwedisch. Schwedisch ist ein kleineres Problem als Griechisch, da es das englische Alphabet nur um wenige Zeichen erweitert, aber ich denke, dass meine Lösung auf Griechisch übertragbar ist.
Ich habe früher mit dem Tastaturschalter meines Betriebssystems gewechselt. Das Problem dabei ist, wie das OP feststellte, dass es eine ganze Reihe von Befehlen unterbricht, da im normalen Modus jede Taste mit der nicht-englischen Tastatur ein anderes Signal an Vim sendet. In dem schwedischen Tastaturlayout darüber hinaus eine ganze Reihe von nicht-alphabetischen Zeichen bewegt Art und Weise für die neuen Charaktere zu machen
å
,ä
undö
. Wird zum Beispiel}
mit Alt-Shift-9 (passend zur öffnenden Klammer auf der englischen Tastatur) und Backslash mit Alt-Shift-7 eingegeben. Die Umstellung auf ein vanille schwedisches Tastaturlayout für den Einfügemodus verursacht daher eine ganze Reihe von Kopfschmerzen.Meine Lösung bestand darin, die relevanten Tasten nur im Einfügemodus neu zuzuordnen und diese Zuordnungen in eine Funktion zu verpacken, damit ich problemlos hin und her wechseln kann. Der folgende Code ist, wie ich das in meinem getan habe
.vimrc
. Dadurch werden nur die Zeichen hinzugefügt, die ich benötige, und alles andere bleibt übrig. Um die Zeichen , die von ihnen maskiert (;
,:
,[
,{
,"
, und'
), schlug ich einfach die Taste zweimal. Zum Glück müssen nur dumme Leute sogar zwei eingebenä
s in einer Reihe. (Wenn dieser Doppelschlag nicht geeignet ist, können Sie sie Strg oder ähnlichem zuordnen. Das Grundprinzip ist, dass maskierte Zeichen an ihrer Stelle auf der Tastatur bleiben, aber nur ein Tastendruck entfernt wird. Ich finde das viel einfacher Das heißt, wenn ich<Leader>s
Schwedisch eingeben möchte, drücke ich , um zu diesen Zuordnungen zu wechseln und die schwedische Rechtschreibprüfung anzuwenden. Um zurück zu schalten, tue ich<Leader>e
.Für Griechisch bedeutet dies, dass Sie Zuordnungen für das gesamte Alphabet vornehmen müssen. Dies ist eigentlich weniger mühsam, als es sich anhört, wenn Sie das Prinzip einmal festgelegt haben. Der schwierige Teil wäre dann, alle diese Änderungen aufzuheben, wenn Sie auf Englisch wechseln. Vielleicht kann sich jemand einen raffinierten Weg einfallen lassen, um das zu tun.
Ich plane eine Einfügefunktion wie die folgende für Arabisch, die andere Sprache, die ich oft eintippe. Vielleicht komme ich hierher zurück, um über den Vorgang zu berichten.
quelle
Ich schreibe auch in zwei Sprachen: Russisch und Englisch. Und jetzt benutze ich dieses Plugin https://github.com/lyokha/vim-xkbswitch . Dieses Plugin ist vom nativen Tastaturlayout-Umschalter abhängig. Für Mac OS X können Sie meinen https://github.com/myshov/xkbswitch-macosx verwenden .
quelle