Vim Kurz Referenz

24.04.2021

Vim Editor Kurzreferenz

Befehlsmodus

KommandoBeschreibung
iInsertmodus, damit kann man editieren
Cursortastennavigieren
h, j, k, lnavigieren, wenn Cursortasten tod sind
Gletzte Zeile Dokument
nGgehe zu Zeile n
ddZeile löschen (in Zwischenablage)
yyZeile in Zwischenablage
nyyn Zeilen in Zwischenablage
pZwischenablage einfügen unterhalb
/MusterSuche nach Muster
nSuche wiederholen
set icUmschalten Suche “ignore case”
set noicUmschalten Suche case sensitiv
:1,$s/from/to/gcErsetze from nach to im ganzen Dokument mit Nachfrage
Strg+GAktuelle Zeilennummer und Dateiname anzeigen
:nNächste Datei bearbeiten
:rewVorherige Datei bearbeiten
:wDatei speichern
:qEditor verlassen
uUndo
.letzte Änderung wiederholen

Editiermodus

KommandoBeschreibung
ESCzurück in Befehlsmodus
Cursortastennavigieren

 

Vim Auführlicher

KommandoBeschreibung
Cursortastennavigieren
h, j, k, l;navigieren, wenn Cursortasten tod sind
1Gerstes Zeile Dokument
Gletzte Zeile Dokument
nGGehe zu Zeile n (Bsp: 20G)
0erstes Zeichen Zeile, wie Pos1
$letztes Zeichen Zeile
wNächstes Wort. Anfang des Wortes. (auch W)
bVorheriges Wort. Anfang des Wortes. (auch B)
eNächstes Wort, Wortende. (auch E)
)Nächster Satz.
(Vorheriger Satz.
}Nächster Absatz.
{Vorheriger Absatz.
ReturnErstes nicht leeres Zeichen nächste Zeile
n|Spalte n aktuelle Zeile
Strg-F/Page-DownSeite vorwärts.
Strg-B/Page-UpSeite rückwärts.
  • - [x]
    bVorheriges Wort. Anfang des Wortes. (auch B)
    eNächstes Wort, Wortende. (auch E)
    )Nächster Satz.
    (Vorheriger Satz.
    }Nächster Absatz.
    {Vorheriger Absatz.
    ReturnErstes nichtleeres Zeichen nächste Zeile
    n|Spalte n aktuelle Zeile
    Strg-F/Page-DownSeite vorwärts.
    Strg-B/Page-UpSeite rückwärts.
    #### Suchen und Ersetzen
    /MusterSuche nach Muster
    ?MusterSuche nach Muster rückwärts
    nletzte Suche wiederholen
    %Passende Klammer suchen
    :s/from/to/Ersetze erstes Auftreten von from in Zeile
    :s/from/to/g(g=global) Ersetze alle from durch to in Zeile
    :x,y s/from/to/von x bis y, siehe auch Hinweise
    :s/from/to/gicg=global, i=ignorecase, c=nachfragen
    :1,$s/from/to/gcErsetze from nach to im ganzen Dokument mit Nachfrage
    #### Markierungen
    mx(x=a..z), Setze Markierung x
    ‘xGehe zu Markierung x, Zeilenanfang
    `xGehe zu Markierung
    #### Löschen und Zwischenablage
    xZeichen löschen
    nxn Zeichen nach rechts löschen
    nXn Zeichen nach links löschen
    ddaktuelle Zeile löschen
    nddn Zeilen löschen
    d/MusterLöschen bis Muster
    dwLöschen Wort
    DRest der aktuellen Zeile löschen
    d^Löschen bis Zeilenanfang
    dGLöschen bis Datei Ende
    “xddZeile löschen und in Puffer x
    pZwischenablage einfügen unterhalb
    PZwischenablage einfügen oberhalb
    “xpInhalt von Puffer x einfügen
    yyZeile in Zwischenablage
    nyyn Zeilen in Zwischenablage
    ywWort in Zwischenablage
    y$Rest der Zeile in Zwischenablage
    “xyyZeile in Zwischenpuffer x kopieren
    #### Moduswechsel
    iEdit vor dem Cursor
    AAnhängen Zeilenende
    oNeue Zeile unter der Aktuellen.
    ONeue Zeile über den Aktuellen
    CÄndere bis Zeilenende
    cwÄndere Wort
    ccÄndere aktuelle Zeile
    s(substitute) Zeichen löschen und in insert Modus
    S(substitute line) Zeile löschen und insert Modus
    #### Speichern und Beenden
    ##### Kommando##### Beschreibung
    :wabspeichern
    :qverlassen
    :q!verlassen, Änderungen verwerfen
    :wqspeichern & verlassen
    :xspeichern wenn nötig und verlassen
    :w DateiDatei unter neuem Namen speichern
    :w!speichern, auch wenn Schreibschutz
    %aktueller Dateiname, z.B. :w %.old
    #### Arbeiten mit mehreren Dateien
    ##### Kommando##### Beschreibung
    :nNächste Datei bearbeiten
    :rewVorherige Datei bearbeiten
    :n DateienNeue Liste von Dateien angeben, die editiert werden sollen
    :args oder :arListe der editierten Dateien anzeigen
    #### Shellinteraktion
    ##### Kommando##### Beschreibung
    :r DateiDatei an Cursorposition einfügen
    :r !BefehlBefehlsausgabe einfügen
    :!Befehl ausführen und zurückkehren
    n1,n2!BefehlZeilen an Befehl senden und durch Ausgabe ersetzen
    n!!BefehlNächste n Zeilen an Befehl und durch Ausgabe ersetzen
    strg-zEditor in Hintergrund, wiederholen mit fg
    #### Sonstiges
    uUndo
    Strg-GDateinamen und Zeilennummer anzeigen
    .letzte Änderung wiederholen
    ~Groß/Kleinschreibung umdrehen
    J(join) Aktuelle Zeile mit folgender vereinen
    >>Zeile nach rechts schieben
    «Zeile nach links schieben
    n« oder n»n Zeilen nach links/rechts schieben
    >‘x oder <‘xZeilen bis Label x nach rechts/links schieben
    >} oder <}bis zum Absatzende nach rechts/links schieben
    %Sprung zwischen Klammerpaar, wenn man auf Klammer steht
    #### Möglichkeiten im Editiermodus
    ##### Kommando##### Beschreibung
    ESCzurück in Befehlsmodus
    Cursortastennavigieren
    #### Ex-Befehle (:Befehle)
    ##### Kommando##### Beschreibung
    :ab Abk StringAbk wird beim tippen immer durch String ersetzt.
    :set allAlle gesetzten Optionen anzeigen
    :set aiautoindent
    :set icignorecase für Suche
    :set sw=nshiftwidth Anzahl Spaces bei » und « Befehlen
    :set ts=ntabstop festlegen
    :syntax onSyntax Highlighting einschalten
    :helpEingebaute Hilfe
    :set mouse=aMausunterstützung einschalten
    ### Konfigurations-Dateien
    - in Konfigurationsdateien werden hauptsächlich set-Befehle eingebunden, um das Verhalten des Editors anzupassen. Es ist jedoch auch noch viel mehr möglich, Vim hat eine mächtige Konfigurationssprache mit bedingten Verzweigungen.
    - ~/.vimrc - hier kann jeder Benutzer persönliche Anpassungen vornehmen.
    - /etc/vimrc - für globale Einstellungen für alle Benuzter
    - Alles hinter doppelten Anführungsstrichen ist Kommentar (gewöhnungsbedürftig)
    ### Aufruf in der Shell
    vi dateiStart mit einer Datei
    vi datei1 datei2 …Start mit mehreren Dateien
    vi +n dateiStart mit einer Datei, Positionierung auf Zeile n
    vim dateiStart von vim, wenn dieser nicht der Standard-Editor ist
    gvim dateiStart des vim auf grafischer Benutzeroberfläche
    ### Hinweise
    - um bei ex-Befehlen (:Befehle) Zeilenbereiche anzugeben, gibt es folgende Möglichkeiten:
    x,yals numerischer Wert bezeichnet die Zeilennummer
    $steht für letzte Zeile
    %steht für alle Zeilen einer Datei
    ‘a,‘bvon Label a bis Label b
    ohne Angabe wird die aktuelle Zeile verwendet
    x, x-nvon x bis x-n, auch x+n ist möglich
    /Muster/vorwärts bis zur nächsten Zeile, die Muster enthält
    ?Muster?rückwärts bis zur Zeile, die Muster enthält
    - mit :set option schaltet man eine Option ein mit :set nooption wieder aus,
    z.B. :set ic oder :set noic
    ### Links
    - http://www.vim.org Vim Homepage
    - http://www.linuxwiki.de/Vim Vim im Linuxwiki
    * * *
    Vi command line
    Learn Linux: use vi command
    ## Vi command overview
    In other post, we showed you some most useful Linux commands. Today, we will show you detail about a very useful command when we working with linux. That is vi command. VI command is on almost every UNIX and Linux system. This tutorial will show you how to
    - Navigate a document using vi command
    - Use basic vi modes
    - Insert, edit, delete, copy and find text by vi command
    ### Prerequisites
    You must have a basic knowledge of linux and a working Linux system or you can go to practice online. Sometimes different versions of a program will bring out differently output, so your output may not always look exactly like the example show here.
    ### Let’s figure out vi command in detail
    #### Start vi:
    vi filenameE.g: vi myfile.txt
    vi filenameE.g: vi myfile.txt
    #### Exit vi:
    Pressing Esc will leave insert mode and return you to command mode where these commands should work. :q! Quit editing the file and skip all changes.
    :q!Quit editing the file and skip all changes.
    :wq!Write the file and quit whether modified or not.It’s generally safer to omit the ! unless you know what you’re doing.
    :wq!Write the file and quit whether modified or not.It’s generally safer to omit the ! unless you know what you’re doing.
    :!Run a shell command. E.g: :! ls After hit Enter the ls result will show and hit enter again to return vi editing.
    :!Run a shell command. E.g: :! ls After hit Enter the ls result will show and hit enter again to return vi editing.
    :! lsAfter hit Enter the ls result will show and hit enter again to return vi editing.
    :e!This will reload the file, discard all changes you have made.
    :e!This will reload the file, discard all changes you have made.
    ZZWrite the file if it has beend modified. Then exit. This is very common way for normal vi exit.
    #### Notes:
    1. When you type (:), the cursor will move to the bottom line of your screen then you can type in the command and parameters. 2. If you omit the (!) from the command. you may receive an error message such as saying changes have not beend saved or the output file cannot be written 3. The (:) commands have longer form are (:quit, :write, :edit). Use it if you want Navigate vi
    These commands help you move around in a file h Move left one character on the current line
    hMove left one character on the current line
    jMove down to the next line
    kMove up to the previous line
    kMove up to the previous line
    lMove right one character on the current line
    wMove to the next word on the current line
    eMove to the next end of word on the current line
    bMove to the previous beginning of the word on the current line
    Ctrl + fScroll forward one page
    Ctrl + bScroll backward one page
    #### Note:
    If you type a number before any of these commands, then the command will be executed that number of times. E.g: 5l will move right 5 characters. Moving to lines
    GMoves to a specific line in your file. E.g: 3G will move to line 3. With no parameter, G will go to the last line of the file
    HMoves relative to the top line on the screen.
    3Hmoves to the line currently to the 3rd line from the top of your screen.
    LIs like H, except that movement is relative to the last line on screen E.g: 3L moves to the line currently to the 2nd line from the bottom of your screen.
    #### Search text and line
    /search_stringUse / to search forward for ocurrence of string in text
    /search_stringUse / to search forward for ocurrence of string in text
    ?search_stringUse ? to search backward for ocurrence of string in text
    nMove to the next occurrence of search string
    NMove to next occurrence of search string in opposite direction
    :.=Returns line number of current line at bottom of screen
    :=Returns the total number of lines at bottom of screen
    Ctrl + gProvides the current line number, along with the total number of lines, in the file at the bottom of the screen
    Each of these commands puts the vi editor into insert mode thus, the key must be pressed to terminate the entry of text and to put the vi editor back into command mode. i Insert text before cursor, until hit
    iInsert text before cursor, until hit
    IInsert text at beginning of current line, until hit
    aAppend text after cursor, until hit
#### Text handle
AAppend text to end of current line, until hit
oOpen and put text in a new line below current line, until hit
OOpen and put text in a new line above current line, until hit

##################################################### 

If you copy from other file in you local PC it will be easy just copy Ctrl + c then in vi edit mode Shift + Insert or just click Right Mouse

If you want to copy text from other file in your server. Please follow this step:

Copy in Command mode

  • Type :tabnew /path/to/the/file/has/text/need/to/copy
  • Move the cursor to the line that needs to be copied and type yy or Y, if you need to copy 2 lines just type 2yy or 2Y
  • If you want to copy all lines from the current line to the end of the file, just move cursor to the first line which needs to be copied and type yG
  • If you only want to copy one word, just move cursor to very first of the word then type yw
  • If you only want to copy from current cursor to the end of the line, just type y$
  • After copied, quit the file with :q

Paste in command mode

  • Move cursor to the start pasting point, type p

I hope this helps. Kind regards.

 


VI - Visual Editor - der Standard UNIX Editor


Der Linux/Unix standard Editor VI

VI (ausgesprochen: wie-ei) ist einer der ältesten Editoren unter UNIX bzw. Linux. Auch wenn es heutzutage per GUI einfachere und intuitiv zu bedienende “Luxus”-Editoren gibt, sind grundlegende Kenntnisse von VI ein großer Vorteil, vor allem dann, wenn man per PUTTY oder SSH nur einen remote Zugriff auf ein Linux/UNIX System hat oder das System einfach von einer Shell aus administrieren möchte.

VI entstand 1976, stammt also aus der Zeit der “Dumb Terminals”, der dummen, seriellen Konsolen. Diese waren langsam und erlaubten gerade mal einfache Cursor-Positionierungen auf dem Bildschirm. Popup-Menüs und Maussteuerung waren darauf ausgeschlossen bzw. unbekannt. VI wurde für diese einfachen Bildschirm-Konsolen geschrieben. Seine Bedienung und sein Komfort orientieren sich daran und sind entsprechend einfach gehalten, aber letztendlich genial. Der wesentliche Vorteil von VI ist, dass er auf fast jedem Linux/UNIX System anzutreffen ist. Dabei ist es nicht mal immer VI sondern oft ist vi nur ein Link auf einen seiner Clones, wie z.B Elvis oder VIM (VI-iMproved). Der Lernaufwand lohnt sich für jeden User, der sich oft bzw. gern auf der Shell bewegt.

In VI gibt es 3 verschiedene Modi

Die Unterscheidung dieser drei Modi ist das “Hauptproblem” für den VI-Neuling. Hat er das einmal begriffen, läßt sich der Rest leichter verstehen/erlernen.

Diese Modi sind:

  1. Editiermodus: Mittels Editiermodus bewegt man sich durch den Text bzw. die Datei und führt Textkorrekturen aus. In diesen Mode geht VI, wenn er gestartet wird.
  2. Eingabemodus: in diesem Mode wird der Text eingegeben bzw. erfasst
  3. der “Last Line” - Kommandozeilen Modus: Zum Speichern, Beenden und komplexere Funktionen z.B. Suchen und Ersetzen

Wechsel zwischen den Modi

Input-Mode — [ESC] —> Edit-Mode – : –> Last-Line-Mode Input-Mode <– i oder a – Edit-Mode <– [RETURN] – Last-Line

Beim Aufruf von vi test.txt wird die Datei test.txt (sofern vorhanden) geöffnet und VI geht in den Edit-Mode. Durch Eingeben von :q[RETURN] wird in den Kommandozeilen-Mode gewechselt VI beendet. Im Edit-Mode werden die eingebenen Zeichen als Steuerzeichen interpretiert. Um Text schreiben zu können, muss man zunächst mittels i oder a in den Input-Mode wechseln. Im Input-Mode werden alle Zeichen als Text erfasst. Durch Dücken der Escape-Taste wird der Input-Mode beendet und man befindet sich wieder im Edit-Modus.

VI ist ein sehr mächtiger Editor mit ca. 200 Funktionen. Viele Tasten sind mehrfach belegt. So unterscheidet VI z.B. zwischen (Klein) o = Einfügen einer Zeile nach der aktuellen Zeile und (Groß) O = Einfügen vor aktueller Zeile. VI stammt eben aus der Zeit, als es kaum Alternativen zum Erstellen von Programm-Code gab. Heute verwendet man dazu meist Editoren auf der GUI wie z.B. Kate oder Geany, die auch syntaktische Prüfungen durchführen können oder die Code-Syntax farblich darstellen. VI ist und bleibt für die Shell der standard Editor.

Auch der Linux Page Reader “less”) verwendet die Syntax der VI-Kommandos. Hier kann man sich mit VI-Kenntnissen leichter bewegen und Textstellen suchen.

VI - die Grundfunktionen

Für das “Gelegenheits-Editieren” z.B. zur Administration von Rechnern kommt man mit nachfolgenden, wenigen VI-Funktionen ganz gut aus.

Funktionen zum Speichern und Beenden von VI sind “Last Line”-Kommandos

Taste

Funktion

:

Doppelpunkt im Edit Fenster startet den Last-Line-Mode

q

Quit

VI verlassen

q!

Quit

VI ohne Speichern verlassen/Verlassen erzwingen

w

Write

Datei speichern

wq

Write & Quit

Zusammenhängen von w und q

/muster

suche

suche nach muster vorwärts

?muster

suche

suche nach muster rückwärts

n

next

wiederhole letzte Suche

VI prüft vor dem Beenden, ob der Text verändert wurde und gibt eine entsprechende Warnung aus. Hat man eine Datei ohne Schreibberechtigung aufgerufen, oder möchte man die Änderungen verwerfen ohne zu speichern, so muss VI mit q! verlassen werden. Anderenfalls läßt sich VI nur nach vorherigem Speichern mit q beenden. Eine Alternative für :wq ist die Eingabe von ZZ.

Bewegen und Löschen im Edit-Modus Bei den meisten Linux Systeme funktioniern die Cursor-Steuertasten einwandfrei. Falls das mal nicht der Fall sein sollte, kann man sich auch anders durch den Text bewegen.

Funktion

Zeichen

Wort

Zeile

Datei

vorwärts

l

w

j

L

rückwärts

h

b

k

H

löschen

x

dw

dd

 

Taste

Funktion

0

NULL

Gehe zum Zeilenanfang

$

Zeilenende

gehe ans Ende der Zeile

H

Home

gehe zum Anfang der Datei

L

Last

gehe zum Ende der Datei

12G

Goto

gehe zu Zeile 12 der Datei (ohne Zahl = letzte Zeile)

Wechsel in den Input Mode:

Taste

Funktion

i

insert

Text vor dem Cursor einfügen

I

Insert

Text am Zeilenanfang einfügen

a

append

Text nach dem Cursor einfügen

A

Append

Text am Zeilenende anhängen

o

open

Leerzeile/Text nach aktueller Zeile einfügen

O

Open

Leerzeile/Text vor aktueller Zeile einfügen

Im Input-Mode werden Zeichen eingefügt (nicht überschrieben). Der Input-Mode wird mit Escape verlassen. Falls die Cursor-Tasten nicht oder schlecht implementiert sind, lösen sie u.U. Escape-Sequenzen aus, die VI veranlassen den Input-Mode zu beenden. Spezielle Funktionen:

Taste

Funktion

.

wiederholt letztes Änderungskommando

u

undo

macht die letzte Änderung rückgängig

x

x-en

Zeichen löschen (aus-X-en von Text)

r_n_

replace

Ersetzt aktuelles Zeichen mit Zeichen n

xp

tauscht aktuelles mit nachfolgendem Zeichen

J

Join

hängt die nächste an die aktuelle Zeile an löscht [Return] der aktuellen Zeile

Fast alle VI Funktionen können durch Voranstellen einer Zahl mehrfach ausgeführt werden. So löscht beispielsweise 12dd zwölf Zeilen ab der aktuellen Zeile.

Mit den oben aufgeführten Funktionen und dem Verständnis der drei Modi von VI lässt sich VI schon recht gut bedienen und produktiv einsetzen.

VI - mehr Funktionen

Wer mehr als nur gelegentlich mal eine Config-Datei editieren möchte, wird zusätzliche Funktionen benötigen: wie. z.B. Cut’n’Paste, suchen + ersetzen und Text überschreiben. Die nachfolgenden Tabellen erheben keinen Anspruch auf Vollständigkeit. Sie sind entsprechend in “Funktionsgruppen” gegliedert. Fast alle VI-Kommandos können durch voranstellen einer Zahl entsprechend häufig ausgeführt werden. So ersetzt beispielsweise 15rx ab dem Cursor 15 Zeichen durch “x” oder 20~ dreht bei den nächsten 20 Buchstaben die Groß- Kleinschreibung um.

Yank und Put

Cut and Paste heißt in der VI-Sprache Yank und Put. Wobei das nicht ganz stimmt, den yank ist ein Copy-Befehl. Durch yy wird die aktuelle Zeile in den allgemeinen Puffer geschrieben. p für Put fügt den Puffer hinter der aktuellen Zeile ein. Das oben schon beschriebene dd Delete funktioniert ähnlich wie Yank, mit dem Unterschied, dass dd die entsprechende Anzahl Zeilen, nach dem Kopieren in den allgemeinen Puffer, löscht. Somit kann man die mit dd gelöschte(n) Zeile(n) an anderer Stelle im Text per p wieder einfügen.

Neben dem allgemeinen Pufffer kennt VI 35 weitere “benannte” Puffer. 26 davon sind über die Buchstaben a…z und 9 über die Ziffern 1…9 zu adressieren. Diese werden über "_x[n]_yy adressiert, wobei x der Buchstabe oder die Ziffer des Puffes ist und die Option n die Anzahl der zu kopierenden Zeilen ist. Ein vorangestelltes doppeltes Anführungszeichen teilt VI also mit, dass man einen benannten Puffer adressieren möchte.

Delete, Yank und Put in der Übersicht:

Taste

Funktion

x

löscht aktuelles Zeichen

X

löscht Zeichen vor Cursor

dw

löscht Wort

dd

löscht Zeile

d$

löscht bis zum Ende der Zeile (alt: D)

d/muster

löscht bis muster

“add

löscht Zeile und speichert sie in Puffer a

yw

kopiert Wort

yy

kopiert Zeile

y$

kopiert bis zum Ende der Zeile

“ayy

kopiert Zeile in Puffer a

p

fügt allg. Puffer hinter aktueller Zeile ein

P

fügt allg. Puffer vor aktueller Zeile ein

“ap

fügt Puffer a hinter aktueller Zeile ein

:r datei

fügt datei zwischen aktueller und nächster Zeile ein

Aus der Tabelle kann man sehr schön erkennen, dass sich Funktionen in VI häufig aus anderen Funktionen zusammensetzen. So ist beispielsweise die Funktion xp zum Tauschen zweier hintereinanderliegender Buchstaben um z.B. aus einem “ie” ein “ei” zu machen, nichts anderes als die Funktion x (Löschen eines Zeichens) gefolgt von p (Einfügen hinter Cursor).

Suchen und Ersetzen

Suchen und Ersetzen wird im VI über “Last-Line” oder Doppelpunkt Kommandos durchgeführt. Das einfache Vor- und Rückwärtssuchen ist weiter oben schon aufgeführt. Delete, Yank und Put in der Übersicht:

Suchen:

Eingabe

Funktion

/muster

sucht muster in Datei vorwärts

/muster/n

sucht n-tes muster in Datei vorwärts

/muster/+n

positioniere Cursor in n-te Zeile hinter muster

/muster/-n

positioniere Cursor in n-te Zeile vor muster

?muster

sucht muster in Datei rückwärts

n

wiederholt letzte Suche

N

wiederholt letzte Suche in umgekehrter Richtung

Suchen und Ersetzen:

Eingabe

Funktion

s/alt/neu

ersetzt 1. Vorkommen in aktueller Zeile von alt durch neu

s/alt/neu/g

ersetzt alle Vorkommen in aktueller Zeile von alt durch neu

1,10s/alt/neu/g

ersetzt alle Vorkommen in Zeilen 1 bis 10 von alt durch neu

1,$s/alt/neu/gc

ersetzt alle Vorkommen in Datei von alt durch neu inkl. Rückfrage. Diese muss mit y oder n beantwortet werden

In einem gut installierten VIM kann man, ähnlich wie bei der Bash, mittels Up- & Down-Cursor-Tasten durch die letzen Kommandos blättern und diese ggf. editieren und wiederholen.

Eingeben/Ändern mit Wechsel in den Input Mode:

Taste

Funktion

a

append

Rechts vom Cursor einfügen

A

Append

Am Zeilenende anhängen

i

insert

Links vom Cursor einfügen

I

Insert

Am zeielanfang einfügen

o

open

öffnet neue, leere Zeile nach aktueller Zeile

O

Open

öffnet neue, leere Zeile vor aktueller Zeile

s

substitue

löscht aktuelles Zeichen und geht in Input-Mode

S

Substitute

löscht aktuelle Zeile und geht in Input-Mode

R

Replace

Überschreiben einschalten

cw

change word

Wort löschen und in den Input Mode wechseln

cc

change

wie S - ganze Zeile ersetzen

c$

Change

ab Cursor den Rest der Zeile ersetzen

C

Change

wie c$ - ab Cursor den Rest der Zeile ersetzen

 

Ersetzungen/Änderungen ohne Wechsel in den Input Mode:

Taste

Funktion

x

aus-X-en

Zeichen unter Cursor löschen

r_x_

replace

Zeichen unter Cursor durch x ersetzen

~

Case change

Wechsel von Groß- in Kleinbuchstaben und umgekehrt

J

Join

Zeilen verbinden

.

letztes Änderungskommando wiederholen

u

undo

letzte Änderung rückgängig machen

:e!

alle Änderungen seit dem letzten Speichern verwerfen

VI - Kommandozeilen Parameter

Beim Aufrufen von VI bzw VIM lassen sich einige Parameter gleich mit übergeben. Dies ist keine komplette Übersicht aller Möglichkeiten. Die Beispeile sollen proimär als Anregungen dienen:

Eingabe

Funktion

vi “+12” test.txt

öffnet die Datei test.txt und positioniert Cursor auf Zeile 12

vi “+12” test.txt “+:4sp”

öffnet die Datei test.txt in zwei Fenstern, wovon das obere 4 Zeilen hoch ist, den Fokus erhält und auf Zeile 12 positioniert wird. Wird :sp ohne Zahl angegeben, so werden zwei gleich große Fenster geöffnet.

vi “+:6sp test.dat” test.txt

Öffnet zwei Fenster, das obere ist 6 Zeilen hoch, hat den Fokus und enthält die Datei test.dat. Das untere enthält die Datei test.txt.

vi “+’\”” test.txt

öffnet test.txt und geht zu der Zeile, in der der Cursor beim letzten Editieren stand. kann man auch als Alias definieren: alias vi="vim \"+'\\\"\""

vi “+syntax on” “+set number” s.c

schaltet beim Öffnen der Datei das Syntax Coloring und die Zeilennummerierung ein

Parameter, die man bei jedem Aufruf von VI verwenden möchte, wie z.B. set number sollte man in die Datei .vimrc im Home Verzeichnis des Users eintragen.

Arbeitet man mit zwei Fenstern gleichzeitig, kann man mit [Strg][w][w] zwischen den beiden Fenstern springen. Beide Fenster kann man durch :qa bzw. :wqa ohne bzw. mit Speichern schließen.

 

VI und LESS

Wenn man sich mit VI auskennt, kann man auch das Linux-Anzeige Programm less deutlich besser nutzen. Die Funktionen zum Suchen und Positionieren innerhalb der Datei sind identisch.

Mehrnoch! Haben Sie gerade eine Datei mit less zum Anschauen geöffnet und sehen, dass Sie diese editieren möchten, reicht die Eingabe von “v” um die Datei mit dem Editor zu öffnen. Hier kann Ihnen Ubuntu einen kleinen Streich spielen. Standardmäßig ist in Ubuntu Nano als Editor definiert und wenn man mit VI bzw. Vim fitt ist, empfindet man dies eher als störend. Um Abhilfe zu schaffen, rufen Sie sudo update-alternatives --config editor auf:

user@pc:~$ sudo update-alternatives –config editor

Es gibt 6 Alternativen, die »editor« bereitstellen.

Auswahl Alternative

      1    /bin/ed
  •    2    /bin/nano
       3    /usr/bin/mcedit-debian
       4    /usr/bin/vim
       5    /usr/bin/vim.basic
       6    /usr/bin/vim.tiny
    

Drücken Sie die Eingabetaste, um die Vorgabe[*] beizubehalten, oder geben Sie die Auswahlnummer ein: 4 Verwende »/usr/bin/vim«, um »editor« bereitzustellen. user@pc:~$

Falls das nicht funktioniert, können Sie den Link auch manuell ändern: Wechseln Sie dazu als Root nach /etc/alternatives und löschen Sie dort die Links “editor” und “editor.1.gz”. Anschließend legen Sie dort neue Links auf Vim an:

ln /usr/bin/vim editor ln /usr/share/man/man1/vim.1.gz editor.1.gz

Ich verwende VIM, weil darin die Tastatur-Adaption der Cursor- und Steuertasten besser definiert ist als im Basis VI.

 

Cursor movement [+/-] Command Mode

  • h – move left
  • j – move down
  • k – move up
  • l – move right
  • w – jump by start of words
  • W – jump by words
  • e – jump to end of words
  • E – jump to end of words
  • b – jump backward by words
  • B – jump backward by words
  • 0 – (zero) start of line
  • ^ – first non-blank character of line
  • $ – end of line
  • G – Go To command (5G goes to line 5)

Notes

  • Prefix a cursor movement command with a number to repeat it. For example, 4j moves down 4 lines.
  • Capital letters skip punctuation.
  • Spaces separate words.

Inserting/Appending [+/-] Insert Mode

  • i – start insert mode at cursor
  • I – insert at the beginning of the line
  • a – append after the cursor
  • A – append at the end of the line
  • o – open (append) blank line below current line (no need to press return)
  • O – open blank line above current line
  • ea – append at end of word
  • Esc – exit insert mode

Cut and Paste [+/-] Command Mode

  • yy – yank (copy) a line
  • 2yy – yank 2 lines
  • yw – yank word
  • y$ – yank to end of line
  • p – put (paste) the clipboard after cursor
  • P – put (paste) before cursor
  • dd – delete (cut) a line
  • dw – delete (cut) the current word
  • x – delete (cut) current character

Search/Replace [+/-] Command Mode

  • /_pattern_ – search for pattern
  • ?_pattern_ – search backward for pattern
  • n – repeat search in same direction
  • N – repeat search in opposite direction
  • :%s/_old_/_new_/g – replace all old with new throughout file
  • :%s/_old_/_new_/gc – replace all old with new throughout file with confirmations

Editing [+/-] Command Mode

  • r – replace a single character (does not use insert mode)
  • J – join line below to the current one
  • cc – change (replace) an entire line
  • cw – change (replace) to the end of word
  • c$ – change (replace) to the end of line
  • s – delete character at cursor and subsitute text
  • S – delete line at cursor and substitute text (same as cc)
  • xp – transpose two letters (delete and paste, technically)
  • u – undo
  • . – repeat last command

Exiting [+/-] Command Mode

  • :w – write (save) the file, but don’t exit
  • :wq – write (save) and quit
  • :q – quit (fails if anything has changed)
  • :q! – quit and throw away changes

Marking Text [+/-] Visual Mode

  • v – start visual mode, mark lines, then do command (such as y-yank)
  • V – start Linewise visual mode
  • o – move to other end of marked area
  • Ctrl+v – start visual block mode
  • O – move to Other corner of block
  • aw – mark a word
  • ab – a () block (with braces)
  • aB – a {} block (with brackets)
  • ib – inner () block
  • iB – inner {} block
  • Esc – exit visual mode

Visual commands [+/-] Visual Mode

  • > – shift right
  • < – shift left
  • y – yank (copy) marked text
  • d – delete marked text
  • ~ – switch case

Working with multiple files [+/-] Command Mode

  • :e _filename_ – Edit a file in a new buffer
  • :bnext (or :bn) – go to next buffer
  • :bprev (of :bp) – go to previous buffer
  • :bd – delete a buffer (close a file)
  • :sp _filename_ – Open a file in a new buffer and split window
  • ctrl+ws – Split windows
  • ctrl+ww – switch between windows
  • ctrl+wq – Quit a window
  • ctrl+wv – Split windows vertically
comments powered by Disqus