Unterscheiden sich die cygwin vim-Befehle von normalen vim-Befehlen?

28

Ich kann mit vim in cygwin keine Textdateien bearbeiten.

Ich muss imehrmals drücken , um Text einzufügen. Manchmal funktioniert es und manchmal nicht. Immer wenn ich den Cursor nach oben und unten bewege, muss ich mehrmals drücken.

Woran könnte das liegen? Ist backspaceArbeit in Cygwin?

Randhir Singh
quelle
Laufen Sie in der nativen Windows-Konsole, in einem anderen Terminalemulator, der als native Anwendung ausgeführt wird, in einem Terminalemulator, der unter X ausgeführt wird? Welche Version von Windows? Ist die Verzögerung zwischen Drücken ESCund Drücken von iBedeutung?
Gilles 'SO - hör auf böse zu sein'

Antworten:

34

Cygwin vim wird mit der Standardkonfiguration von vim ausgeliefert, wodurch vim im vi-Kompatibilitätsmodus verbleibt und versucht wird, das ursprüngliche vi so genau wie möglich zu emulieren. Unter anderem funktionieren die Pfeiltasten in diesem Modus nicht und die Rücktaste bewegt den Cursor nur nach links, anstatt ein Zeichen zu löschen.

Das Erstellen eines Leerzeichens ~/.vimrcreicht aus, um den vi-Kompatibilitätsmodus zu deaktivieren:

touch ~/.vimrc

Allerdings isollte es trotzdem funktionieren , in den Einfügemodus zu wechseln. Sie müssen weitere Informationen darüber bereitstellen, wo und wie Sie vim ausführen. Führen Sie tatsächlich das mit Cygwin gelieferte vim oder die native Windows-Version von vim aus?

Aktualisieren

Sie können die folgenden Sätze in ~ / .vimrc hinzufügen, um sie ähnlich wie die Standardeinstellung vim zu machen

set nocompatible
set backspace=indent,eol,start
set backup
set history=50
set ruler
set background=dark
set showcmd
set incsearch
syntax on
set hlsearch

Wenn vim Ihre vimrc-Datei nicht abholt, sucht es möglicherweise stattdessen nach einer .vircDatei. In diesem Fall benennen Sie die Datei um und die Änderungen werden übernommen.

ak2
quelle
Wäre schön gewesen, wenn du gesagt hättest, wie man keine Kompatibilität auslöst.
Gideon
Wissen Sie, wo sich der Standardstandort von cygwin befindet? Ich möchte .virc per GUI anstelle von Cygwin erstellen
Alex
13

Am einfachsten ist es, die vimrc-Beispieldatei von Cygwin VIM zu kopieren

cp /usr/share/vim/vim*/vimrc_example.vim /etc/vimrc

Dadurch wird das Problem für jedes Konto auf Ihrem System behoben. Wenn Sie es aus irgendeinem Grund nur für einen bestimmten Benutzer ändern möchten, tun Sie dies

cp /usr/share/vim/vim*/vimrc_example.vim ~/.vimrc

Siehe Referenz hier

Gaurav
quelle
1
Dies sollte die akzeptierte Antwort sein, da im Beispiel die Syntaxhervorhebung standardmäßig aktiviert ist und wahrscheinlich viele andere Standardeinstellungen verwendet werden.
JohnEye
Hat erst nach einem Neustart des PCs funktioniert. Aber es funktioniert!
3.
Hervorragende Antwort, einfach und gelöst all die verschiedenen Probleme, die ich mit einer neuen Cygwin-Installation sah, und Syntax-Hervorhebung ist ein Bonus, der unerwartet war
Crobicha
Dies ist mit Abstand die beste Antwort !!
Theodore R. Smith
1
Wo befindet sich diese Datei? Ich habe in / usr / share / danach gesucht, aber dann sehe ich kein Verzeichnis namens vim.
Neo33
3

Ich hatte ein Problem mit den Pfeiltasten, als ich vim in Windows 8.1 mit cygwin ausprobierte. Das Problem bestand darin, A / B / C / D zu drucken, während im Einfügemodus mit den Pfeiltasten navigiert wurde. Die Lösung für mich war:

cp vimrc_example.vim ~/.vimrc

Grundsätzlich oben Befehl Kopieren von vimrc_example.vimDateien nach /home/<user name>/.vimrc.

noufal
quelle
Das hat es für mich behoben. Ich hatte das gleiche Problem mit dem Einfügeschlüssel und den Pfeilen, die nicht in vim arbeiteten. Das war auf Windows 10.
Yanick Girouard
2

Sind Sie sicher, dass Sie nicht vi anstelle von vim verwenden?

Rfelsburg
quelle
1

Versuchen Sie diesen Weg:

  • zuerst:

    cp /usr/share/vim/vim73/vimrc_example.vim ~/.vimrc
    
  • Fügen Sie dann diese Zeile zu Ihrer ./.bashrcDatei hinzu:

    alias vi="vim"
    
Binghenzq
quelle
0

Nein, die Befehle sind genau gleich. Es hört sich so an, als hätten Sie ein Eingabeproblem. Entweder ist deine Tastatur durcheinander oder dein Terminal ist am fritz oder so.

Caleb
quelle
0

Abhängig von den Eigenschaften Ihres Terminalprogramms sendet es beim Drücken einer Cursortaste eine Zeichenfolge, die mit der ESC-Taste beginnt. Beispielsweise sendet die Aufwärtspfeiltaste die drei Zeichen ESC [A. Wenn sich vim im Eingabemodus befindet, kann das Drücken einer Cursortaste den Eingabemodus beenden, wenn ESC angezeigt wird, und die nachfolgenden Zeichen können als vim-Befehle interpretiert werden. Da der Eingabemodus beendet wird, müssen Sie erneut i drücken, um mit dem Einfügen von Text fortzufahren. Vielleicht ist es das, was für Sie passiert.

Überprüfen Sie, ob Ihr Terminal über Optionen verfügt, mit denen die Emulation geändert werden kann, z. B. VT-100, VT-220 oder eine Einstellung, die angibt, was gesendet wird, wenn die Rücktaste oder die Entf-Taste gedrückt werden. Wenn Sie diese Einstellungen ändern, erhalten Sie möglicherweise das gewünschte Verhalten. Wenn Sie die native Windows-Befehlskonsole verwenden, erhalten Sie diese Optionen wahrscheinlich nicht.

Möglicherweise müssen Sie die Verwendung der Cursortasten im Eingabemodus vermeiden. Drücken Sie ESC, um den Eingabemodus zu verlassen, und bewegen Sie dann den Cursor und i erneut, um weitere Eingaben zu erhalten. So mussten wir Oldtimer vorgehen, bevor vim schlau genug wurde, um die Cursortasten im Eingabemodus zu interpretieren.

Jongleur
quelle