Kapitel 9. Der VI-Eingabemodus

Erlend Hamberg

Übersetzung: Frederik Schwarzer

VI-Eingabemodus

Ziel des VI-Modus ist nicht, Vim zu ersetzen indem alle Vim-Funktionen unterstützt werden. Das Ziel ist es, die Vim-Art der Textbearbeitung und somit die angelernten Gewohnheiten in Programmen zur Verfügung zu stellen, die den KatePart-Texteditor als ihren internen Editor verwenden.

Der VI-Modus hat zum Ziel, sich in die Programme zu integrieren und, wo sinnvoll, das Verhalten von Vim nachzubilden. Zum Beispiel öffnet :w in KateParts VI-Modus einen Dialog zum Speichern.

Um den VI-Modus für alle neuen Ansichten zu aktivieren, gehen Sie auf EinstellungenKatePart einrichten ...+BearbeitungVI-Eingabemodus. Auf dieser Karteikarte können Sie den VI-Modus einrichten und die Tastenzuordnungen für diesen Modus anlegen und ändern. Der VI-Modus kann auch mit dem Menüpunkt VI-Eingabemodus im Menü Bearbeiten ein- bzw. ausgeschaltet werden. (Der Standardkurzbefehl ist Meta+Strg+V, wobei Meta normalerweise die Windows-Taste ist.)

Anmerkung

Viele Kurzbefehle im VI-Modus beachten die Groß- und Kleinschreibung, im Gegensatz zu den meisten KDE-Kurzbefehlen. Das heißt, dass y und Y verschiedene Kurzbefehle sind. Um den Befehl y (kopieren) einzugeben, überprüfen Sie dass die Feststelltaste nicht aktiviert ist und drücken Y auf der Tastatur. Um den Befehl Y (kopieren bis zum Zeilenende) einzugeben, drücken Sie die Tastenkombination Umschalt+Y.

Die betrifft nicht die Kurzbefehle mit der Strg-Taste, die unabhängig vom Status der Feststelltaste und ohne Drücken der Umschalt-Taste eingegeben werden können. Bei einige Befehle jedoch muss bei einer Tasteneingabe nach der Tastenkombination mit der Strg-Taste die Groß-/Kleinschreibung berücksichtigt werden. Um zum Beispiel den Befehl Strg+W, h (Wechsel zum rechten Fenster der geteilten Ansicht) einzugeben, überprüfen Sie dass die Feststelltaste nicht aktiviert ist, drücken die Tastenkombination Strg+W und dann H.

Inkompatibilitäten mit Vim

Es gibt ein paar Funktionen in KateParts VI-Modus, die mit Vim nicht kompatibel sind (abgesehen von den fehlenden Funktionen). Diese sind hier aufgelistet, einschließlich. der entsprechenden Begründungen.

  • KatePart: U und Strg+R ist Wiederherstellen.

    Vim: Strg+R ist normales Wiederherstellen; U macht alle Änderungen in einer Zeile rückgängig.

    Der Grund dafür, in KateParts VI-Modus U für die Wiederherstellen-Aktion zu verwenden, ist, dass der Kurzbefehl Strg+R voreingestellt von KateParts Ersetzen-Funktion belegt ist (Suchen und ersetzen). Der VI-Modus überschreibt keine KatePart-Kurzbefehle (dies kann in EinstellungenKatePart einrichten ...+BearbeitungVi-Eingabemodus eingestellt werden), weshalb eine Wiederherstellen-Aktion auch über einen normalen Tastendruck verfügbar sein muss. Davon abgesehen lässt sich die Funktionsweise des U-Befehls aus Vim nicht gut auf das interne System zum Rückgängigmachen in KatePart abbilden, weshalb es nicht einfach wäre, dies zu unterstützen.

  • KatePart: der Befehl print öffnet den Dialog Drucken.

    Vim: der Befehl print gibt die Zeilen des angegebenen Bereichs wie sein Vorläufer ed aus.

    Befehle wie :print sind nicht nur im VI-Modus, sondern für alle KatePart-Benutzer verfügbar. Daher öffnet der :print-Befehl den bekannten Dialog zum Drucken, anstatt das Verhalten von Vim nachzubilden.

  • KatePart: Y kopiert bis zum Ende der Zeile.

    Vim: Y kopiert gesamte Zeile, genau wie yy.

    Das Verhalten des Y-Befehls von VI kann als Fehlerhaft angesehen werden. Beim Ändern und Löschen wirken sich cc/ dd auf die gesamte Zeile aus und C/D arbeiten von der aktuellen Cursor-Position bis zum Zeilenende. Beide, yy und Y hingegen kopieren die gesamte Zeile. In KateParts VI-Modus kopiert Y bis zum Zeilenende kopieren. Dieses Verhalten wird in der Vim-Dokumentation als logischer beschrieben.

  • KatePart: O und o öffnen [eine Anzahl] neuer Zeilen und wechseln in den Eingabemodus.

    Vim: O und o öffnen eine neue Zeile und fügen den eingegebenen Text [so oft] ein, sobald der Eingabemodus verlassen wird.

    Diese unterscheiden sich hauptsächlich, weil sich viele Benutzer im Vim-IRC-Kanal (#vim auf Libera Chat) verwirrt über die Funktionsweise geäußert haben.

Wechseln der Modi

  • Im Normalen Modus können Sie Befehle zum Navigieren und Ändern eines Dokuments eingeben. Dieser Modus ist der Standardmodus. Sie können aus allen anderen Modi mit der Esc-Taste in diesen Modus zurückkehren.

  • Im Visuellen Modus können Sie Text in einem Dokument markieren. Die meisten Befehle aus dem Normalen Modus sind auch in diesem Modus gültig. Zum zeichenweise auszuwählen, wechseln in diesen Modus, indem Sie die Taste v drücken; für zeilenweise Auswahl, drücken Sie V.

  • Im Eingabemodus können Sie das Dokument direkt bearbeiten. Sie wechseln in diesen Modus, indem Sie die Taste i oder einen der anderen, oben genannten Befehle drücken.

  • Der Befehlsmodus ruft KateParts Befehlszeile auf. Hier können Sie viele in Vi implementierte Befehle wie auch spezielle Befehle für KatePart aufrufen. Weitere Informationen über diese Befehle finden Sie unter „Die integrierte Befehlszeile im Editor“. Um diesen Modus zu benutzen, drücken Sie die Taste :, geben den Befehl ein und drücken dann die Eingabetaste.

Einbindung in Kate's Funktionen

  • Es wird automatisch in den Visuellen Modus gewechselt, wenn Text mit der Maus ausgewählt ist. Dieser Wechsel findet auch dann statt, wenn Funktion von Kate benutzt werden, die Text auswählen, wie zum Beispiel Alles auswählen aus dem Menü oder mit dem Kurzbefehl Strg+A.

  • Marker in Vi und Lesezeichen in Kate sind integriert. Erstellen Sie einen Marker im Vi-Modus, dann wird auch das zugehörige Lesezeichen für Kate erstellt und im Menü Lesezeichen angezeigt. Umgekehrt wird mit einem Lesezeichen in Kate auch der zugehörige Marker in Vi an Spalte Null der Zeile erzeugt.

Unterstützte Befehle im normalen/visuellen Modus

a

Wechselt zum Eingabemodus und fügt hinter dem Cursor ein

A

Wechselt zum Eingabemodus und fügt hinter der Zeile ein

i

Wechselt zum Eingabemodus und fügt vor dem Cursor ein

Einfg

Wechselt zum Eingabemodus und fügt vor dem Cursor ein

I

Wechselt zum Einfügemodus und fügt vor dem ersten nicht leeren Zeichen auf der Zeile ein

gi

Wechselt zum Einfügemodus und fügt vor der Stelle ein, an der der letzte Einfügemodus verlassen wurde

v

Wechsel in den visuellen Modus; Auswahl von Zeichen

V

Wechsel in den visuellen Modus; Auswahl von Zeilen

Strg+v

Wechselt in den visuellen Modus; Auswahl von Blöcken

gb

Wechselt in den visuellen Modus und aktiviert die letzte Auswahl erneut

o

Fügt unter der aktuellen Zeile eine neue Zeile ein

O

Fügt über der aktuellen Zeile eine neue Zeile ein

J

Zeilen zusammenführen

c

Ändern: gefolgt von einer Richtungstaste; löscht ein Zeichen und wechselt in den Eingabemodus

C

Bis zum Zeilenende ändern: löscht bis zum Zeilenende und wechselt in den Eingabemodus

cc

Zeile ändern: Zeile löschen und in den Eingabemodus wechseln

s

Zeichen ersetzen

S

Zeilen ersetzen

dd

Zeile löschen

d

Gefolgt von einer Richtungstaste, um eine Zeile zu löschen

D

Löschen bis Zeilenende

x

Zeichen rechts vom Cursor löschen

Entf

Zeichen rechts vom Cursor löschen

X

Zeichen links vom Cursor löschen

gu

Gefolgt von einer Richtungstaste, um ein Zeichen in Kleinbuchstaben zu ändern

guu

Ändert die aktuelle Zeile in Kleinschreibung

gU

Gefolgt von einer Richtungstaste, um ein Zeichen in Großbuchstaben zu ändern

gUU

Ändert die aktuelle Zeile in Großschreibung

y

Gefolgt von einer Richtungstaste, um eine Zeile zu kopieren

yy

Zeile kopieren

Y

Zeile kopieren

p

Hinter dem Cursor einfügen

P

Vor dem Cursor einfügen

]p

Hinter dem Cursor mit Einrückung einfügen

[p

Vor dem Cursor mit Einrückung einfügen

r

Gefolgt von einem Zeichen, um das Zeichen hinter dem Cursor zu ersetzen

R

Zu Ersetzungsmodus wechseln

:

Zu Befehlsmodus wechseln

/

Suchen

u

Rückgängig

Strg+R

Wiederherstellen

U

Wiederherstellen

m

Marker setzen (kann später zum Navigieren verwendet werden)

n

Weitersuchen

N

Frühere suchen

>>

Zeile einrücken

<<

Zeileneinrückung rückgängig

>

Zeilen einrücken

<

Einrückung mehrere Zeilen rückgängig

Strg+F

Seite nach unten

Strg+B

Seite nach oben

ga

ASCII-Wert des Zeichens ausgeben

.

Letzte Änderung wiederholen

==

commandAlignLine

=

commandAlignLines

~

Groß-/Kleinschreibung des aktuellen Zeichens ändern

Strg+S

Ansicht waagerecht teilen

Strg+V

Ansicht senkrecht teilen

Strg+W, w

Wechselt zum nächsten Fenster der geteilten Ansicht

Strg+W, h

Strg+W Pfeil links

Wechselt zum linken Fenster der geteilten Ansicht

Strg+W, l

Strg+W Pfeil rechts

Wechselt zum rechten Fenster der geteilten Ansicht

Strg+W, k

Strg+W Pfeil hoch

Wechselt zum oberen Fenster der geteilten Ansicht

Strg+W, j

Strg+W Pfeil runter

Wechselt zum unteren Fenster der geteilten Ansicht

Unterstützte Richtungstasten

Diese können zum Bewegen in einem Dokument im Normalen und im Visuellen Modus oder im Zusammenspiel mit einem der oben genannten Befehle verwendet werden. Es können Nummern angehängt werden, um anzugeben, wie oft die entsprechende Bewegung ausgeführt werden soll.

h

Links

Pfeil links

Links

Rücktaste

Links

j

Nach unten

Pfeil runter

Nach unten

k

Nach oben

Pfeil hoch

Nach oben

l

Rechts

Pfeil rechts

Rechts

Leertaste

Rechts

$

Zum Zeilenende

Ende

Zum Zeilenende

0

Zum ersten Zeichen der Zeile (Spalte 0)

Pos 1

Zum ersten Zeichen der Zeile

^

Erstes Zeichen, das kein Leerzeichen ist, in dieser Zeile

f

Gefolgt von einem Zeichen rechts vom Cursor, zu dem der Cursor bewegt werden soll

F

Gefolgt von einem Zeichen links vom Cursor, zu dem der Cursor bewegt werden soll

t

Gefolgt von einem Zeichen rechts vom Cursor, vor das der Cursor bewegt werden soll

T

Gefolgt von einem Zeichen links vom Cursor, vor das der Cursor bewegt werden soll

gg

Zur ersten Zeile

G

Zur letzten Zeile

w

Nächstes Wort

W

Nächstes Wort getrennt durch Leerzeichen

b

Vorheriges Wort

B

Vorheriges Wort getrennt durch Leerzeichen

e

Wortende

E

Ende des Worts getrennt durch Leerzeichen

ge

Ende des vorheriges Wortes

gE

Ende des vorherigen Worts getrennt durch Leerzeichen

|

Gefolgt von einer Spaltennummer, um in die Spalte zu springen

%

Gefolgt von einem Element, um zu dem Element zu springen

`

Marker

Erstes Zeichen, das kein Leerzeichen ist, in der Zeile, in der sich der Marker befindet

[[

Vorherige öffnende eckige Klammer

]]

Nächste öffnende eckige Klammer

[]

Vorherige schließende eckige Klammer

][

Nächste schließende eckige Klammer

Strg+I

Geht zur nächsten Adresse

Strg+O

Geht zur vorherigen Adresse

H

Geht zur ersten Zeile auf dem Bildschirm

M

Geht zur mittleren Zeile auf dem Bildschirm

L

Geht zur letzten Zeile auf dem Bildschirm

%Prozentsatz

Geht zum angegebenen Prozentsatz des Dokuments

gk

Geht optisch eine Zeile aufwärts (bei dynamischem Zeilenumbruch)

gj

Geht optisch eine Zeile abwärts (bei dynamischem Zeilenumbruch)

Strg+Pfeil links

Verschiebt ein Wort nach links

Strg+Pfeil rechts

Verschiebt ein Wort nach rechts

Unterstützte Textobjekte

Diese können verwendet werden, um bestimmte Bereiche eines Dokuments auszuwählen.

iw

Inneres Wort: Wort inklusive Leerzeichen

aw

Ein Wort: Wort ohne Leerzeichen

i"

Vorherige Anführungszeichen (") bis nächste Anführungszeichen, inklusive der Anführungszeichen

a”

Vorherige Anführungszeichen (") bis nächste Anführungszeichen, ohne die Anführungszeichen

i'

Vorherige einfache Anführungszeichen (") bis nächste einfache Anführungszeichen, inklusive der Anführungszeichen

a'

Vorherige einfache Anführungszeichen (") bis nächste einfache Anführungszeichen, ohne die Anführungszeichen

i(

Vorherige öffnende Klammer [(] bis nächste schließende Klammer [)], inklusive der Klammern

a(

Vorherige öffnende Klammer [(] bis nächste schließende Klammer [)], ohne die Klammern

i[

Vorherige öffnende eckige Klammer ([) bis nächste schließende eckige Klammer (]), inklusive der Klammern

a[

Vorherige öffnende eckige Klammer ([) bis nächste schließende eckige Klammer (]), ohne die Klammern

i{

Vorherige öffnende geschweifte Klammer ({) bis nächste schließende geschweifte Klammer (}), inklusive der Klammern

a{

Vorherige öffnende geschweifte Klammer ({) bis nächste schließende geschweifte Klammer (}), ohne die Klammern

i<

Vorherige öffnende spitze Klammer (<) bis nächste schließende spitze Klammer (>), inklusive der Klammern

a<

Vorherige öffnende spitze Klammer (<) bis nächste schließende spitze Klammer (>), ohne die Klammern

i`

Vorheriges Backtick („rückwärts geneigtes Hochkomma“) (") bis nächstes Backtick, inklusive der Backticks

a`

Vorheriges Backtick („rückwärts geneigtes Hochkomma“) (") bis nächstes Backtick, ohne die Backticks

Unterstützte Befehle im Eingabemodus

Strg+D

Einrückung verringern

Strg+T

Einrücken

Strg+E

Von unten einfügen

Strg+Y

Wort löschen

Strg+W

Wort löschen

Strg+U

Zeile löschen

Strg+J

Neue Zeile

Strg+H

Löscht Zeichen rückwärts

Strg+Pos 1

Geht zum ersten Zeichen im Dokument

Strg+R n

Fügt den Inhalt des Registers n ein

Strg+O, Befehl

Wechselt für einen Befehl zum normalen Modus

Strg+A

Verringert die aktuell gewählte Zahl

Strg+X

Erhöht die aktuell gewählte Zahl

Das Komma-Textobjekt

Dieses Objekt fehlt in Vim. Das Komma-Text-Objekt vereinfacht das Ändern von Parameterlisten in C-ähnlichen Sprachen und anderen durch Komma getrennte Listen. Dies ist der Bereich zwischen zwei Kommas oder einem Komma und einer Klammer. In der Demonstrationszeile sind die Bereiche, die dieses Text-Objekt umfassen kann, hervorgehoben.

Ein Beispiel für ein Komma-Textobjekt

Bereiche des Komma-Text-Objekts. Wenn sich der Cursor z. B. über arg2 befindet, bewirkt das Drücken von ci(inneres Komma ändern), dass double arg2 gelöscht wird und der Cursor im Eingabemodus zwischen die beiden Kommas platziert wird. Das ist ein sehr angenehme Art, Funktionsparameter zu ändern.

Fehlende Funktionen

Wie bereits erwähnt, ist es nicht Ziel des VI-Modus in KatePart, die Funktionen von Vim zu 100 % zu unterstützen.