Vim Kurz Referenz

Vim Editor Kurzreferenz
Befehlsmodus
Kommando |
Beschreibung |
i | Insertmodus, damit kann man editieren |
Cursortasten | navigieren |
h, j, k, l | navigieren, wenn Cursortasten tod sind |
G | letzte Zeile Dokument |
nG | gehe zu Zeile n |
dd | Zeile löschen (in Zwischenablage) |
yy | Zeile in Zwischenablage |
nyy | n Zeilen in Zwischenablage |
p | Zwischenablage einfügen unterhalb |
/Muster | Suche nach Muster |
n | Suche wiederholen |
set ic | Umschalten Suche „ignore case“ |
set noic | Umschalten Suche case sensitiv |
:1,$s/from/to/gc | Ersetze from nach to im ganzen Dokument mit Nachfrage |
Strg+G | Aktuelle Zeilennummer und Dateiname anzeigen |
:n | Nächste Datei bearbeiten |
:rew | Vorherige Datei bearbeiten |
:w | Datei speichern |
:q | Editor verlassen |
u | Undo |
. | letzte Änderung wiederholen |
Editiermodus
Kommando |
Beschreibung |
ESC | zurück in Befehlsmodus |
Cursortasten | navigieren |
Vim Auführlicher
Navigieren
Kommando |
Beschreibung |
Cursortasten | navigieren |
h, j, k, l | navigieren, wenn Cursortasten tod sind |
1G | erstes Zeile Dokument |
G | letzte Zeile Dokument |
nG | Gehe zu Zeile n (Bsp: 20G) |
0 | erstes Zeichen Zeile, wie Pos1 |
$ | letztes Zeichen Zeile |
w | Nächstes Wort. Anfang des Wortes. (auch W) |
b | Vorheriges Wort. Anfang des Wortes. (auch B) |
e | Nächstes Wort, Wortende. (auch E) |
) | Nächster Satz. |
( | Vorheriger Satz. |
} | Nächster Absatz. |
{ | Vorheriger Absatz. |
Return | Erstes nichtleeres Zeichen nächste Zeile |
n| | Spalte n aktuelle Zeile |
Strg-F/Page-Down | Seite vorwärts. |
Strg-B/Page-Up | Seite rückwärts. |
Suchen und Ersetzen
/Muster | Suche nach Muster |
?Muster | Suche nach Muster rückwärts |
n | letzte 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/gic | g=global, i=ignorecase, c=nachfragen |
:1,$s/from/to/gc | Ersetze from nach to im ganzen Dokument mit Nachfrage |
Markierungen
mx | (x=a..z), Setze Markierung x |
‚x | Gehe zu Markierung x, Zeilenanfang |
`x | Gehe zu Markierung |
Löschen und Zwischenablage
x | Zeichen löschen |
nx | n Zeichen nach rechts löschen |
nX | n Zeichen nach links löschen |
dd | aktuelle Zeile löschen |
ndd | n Zeilen löschen |
d/Muster | Löschen bis Muster |
dw | Löschen Wort |
D | Rest der aktuellen Zeile löschen |
d^ | Löschen bis Zeilenanfang |
dG | Löschen bis Datei Ende |
„xdd | Zeile löschen und in Puffer x |
p | Zwischenablage einfügen unterhalb |
P | Zwischenablage einfügen oberhalb |
„xp | Inhalt von Puffer x einfügen |
yy | Zeile in Zwischenablage |
nyy | n Zeilen in Zwischenablage |
yw | Wort in Zwischenablage |
y$ | Rest der Zeile in Zwischenablage |
„xyy | Zeile in Zwischenpuffer x kopieren |
Moduswechsel
i | Edit vor dem Cursor |
A | Anhängen Zeilenende |
o | Neue Zeile unter der Aktuellen. |
O | Neue 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 |
:w | abspeichern |
:q | verlassen |
:q! | verlassen, Änderungen verwerfen |
:wq | speichern & verlassen |
:x | speichern wenn nötig und verlassen |
:w Datei | Datei unter neuem Namen speichern |
:w! | speichern, auch wenn Schreibschutz |
% | aktueller Dateiname, z.B. :w %.old |
Arbeiten mit mehreren Dateien
Kommando |
Beschreibung |
:n | Nächste Datei bearbeiten |
:rew | Vorherige Datei bearbeiten |
:n Dateien | Neue Liste von Dateien angeben, die editiert werden sollen |
:args oder :ar | Liste der editierten Dateien anzeigen |
Shellinteraktion
Kommando |
Beschreibung |
:r Datei | Datei an Cursorposition einfügen |
:r !Befehl | Befehlsausgabe einfügen |
:! | Befehl ausführen und zurückkehren |
n1,n2!Befehl | Zeilen an Befehl senden und durch Ausgabe ersetzen |
n!!Befehl | Nächste n Zeilen an Befehl und durch Ausgabe ersetzen |
strg-z | Editor in Hintergrund, wiederholen mit fg |
Sonstiges
u | Undo |
Strg-G | Dateinamen 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 <‚x | Zeilen 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 |
ESC | zurück in Befehlsmodus |
Cursortasten | navigieren |
Ex-Befehle (:Befehle)
Kommando |
Beschreibung |
:ab Abk String | Abk wird beim tippen immer durch String ersetzt. |
:set all | Alle gesetzten Optionen anzeigen |
:set ai | autoindent |
:set ic | ignorecase für Suche |
:set sw=n | shiftwidth Anzahl Spaces bei >> und << Befehlen |
:set ts=n | tabstop festlegen |
:syntax on | Syntax Highlighting einschalten |
:help | Eingebaute Hilfe |
:set mouse=a | Mausunterstü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
- Start mit einer Datei
vi datei - Start mit mehreren Dateien
vi datei1 datei2 … - Start mit einer Datei, Positionierung auf Zeile n
vi +n datei - Start von vim, wenn dieser nicht der Standard-Editor ist
vim datei - Start des vim auf grafischer Benutzeroberfläche
gvim datei
Hinweise
- um bei ex-Befehlen (:Befehle) Zeilenbereiche anzugeben, gibt es folgende Möglichkeiten:
- x,y als numerischer Wert bezeichnet die Zeilennummer
- $ steht für letzte Zeile
- % steht für alle Zeilen einer Datei
- ‚a,’b von Label a bis Label b
- ohne Angabe wird die aktuelle Zeile verwendet
- x, x-n von 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
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 filename
E.g:
vi myfile.txt
vi filename
E.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.
:e!
This will reload the file, discard all changes you have made.
:e!
This will reload the file, discard all changes you have made.
ZZ
Write 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
h
Move left one character on the current line
j
Move down to the next line
k
Move up to the previous line
k
Move up to the previous line
l
Move right one character on the current line
w
Move to the next word on the current line
e
Move to the next end of word on the current line
b
Move to the previous beginning of the word on the current line
Ctrl + f
Scroll forward one page
Ctrl + b
Scroll 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
G
Moves 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
H
Moves relative to the top line on the screen.
E.g: 3H moves to the line currently to the 3rd line from the top of your screen.
L
Is 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_string
Use / to search forward for ocurrence of string in text
/search_string
Use / to search forward for ocurrence of string in text
?search_string
Use ? to search backward for ocurrence of string in text
n
Move to the next occurrence of search string
N
Move 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 + g
Provides the current line number, along with the total number of lines, in the file at the bottom of the screen
Text handle
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
i
Insert text before cursor, until hit
I
Insert text at beginning of current line, until hit
a
Append text after cursor, until hit
A
Append text to end of current line, until hit
o
Open and put text in a new line below current line, until hit
O
Open and put text in a new line above current line, until hit
x
Delete single character under cursor. If you type a number before x, it will delete that number of characters starting with character under the cursor
dw
Delete the single word beginning with character under cursor. dNw (N is a number), this will delete N words beginning with character under cursor;
E.g, d5w deletes 5 words
D
Delete the remainder of the line, starting with current cursor position
dd
Delete entire current line. Ndd (N is a number), this will delete N lines, beginning with the current line;
E.g., 5dd deletes 5 lines
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
012:tabnew /path/to/the/file/has/text/need/to/copy
- Move the cursor to the line that needs to be copied and type
012yy012Y0122yy0122Y
- 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
012yG
- If you only want to copy one word, just move cursor to very first of the word then type
012yw
- If you only want to copy from current cursor to the end of the line, just type
012y$
- After copied, quit the file with :q
Paste in command mode
- Move cursor to the start pasting point, type
012p
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:
- 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. - Eingabemodus: in diesem Mode wird der Text eingegeben bzw. erfasst
- 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
0 1 2 |
vi test.txt |
wird die Datei test.txt (sofern vorhanden) geöffnet und VI geht in den Edit-Mode.
Durch Eingeben von
0 1 2 |
: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
0 1 2 |
q! |
verlassen werden. Anderenfalls läßt sich VI nur nach vorherigem Speichern mit q beenden. Eine Alternative für
0 1 2 |
:wq |
ist die Eingabe von
0 1 2 |
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) |
rn | 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
0 1 2 |
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
0 1 2 |
15rx |
ab dem Cursor 15 Zeichen durch „x“ oder
0 1 2 |
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
0 1 2 |
yy |
wird die aktuelle Zeile in den allgemeinen Puffer geschrieben.
0 1 2 |
p |
für Put fügt den Puffer hinter der aktuellen Zeile ein. Das oben schon beschriebene
0 1 2 |
dd |
Delete funktioniert ähnlich wie Yank, mit dem Unterschied, dass
0 1 2 |
dd |
die entsprechende Anzahl Zeilen, nach dem Kopieren in den allgemeinen Puffer, löscht. Somit kann man die mit
0 1 2 |
dd |
gelöschte(n) Zeile(n) an anderer Stelle im Text per
0 1 2 |
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
0 1 2 |
"<i>x[n]</i>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
0 1 2 |
xp |
zum Tauschen zweier hintereinanderliegender Buchstaben um z.B. aus einem „ie“ ein „ei“ zu machen, nichts anderes als die Funktion
0 1 2 |
x |
(Löschen eines Zeichens) gefolgt von
0 1 2 |
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 |
rx | 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:
|
||
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
0 1 2 |
sudo update-alternatives --config editor |
auf:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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:
0 1 2 3 4 |
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
-
012h
-
012j
-
012k
-
012l
-
012w
-
012W
-
012e
-
012E
-
012b
-
012B
-
0120
-
012^
-
012$
-
012G
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
-
012i
-
012I
-
012a
-
012A
-
012o
-
012O
-
012ea
-
012Esc
Cut and Paste [+/-] Command Mode
-
012yy
-
0122yy
-
012yw
-
012y$
-
012p
-
012P
-
012dd
-
012dw
-
012x
Search/Replace [+/-] Command Mode
-
012/<i>pattern</i>
-
012?<i>pattern</i>
-
012n
-
012N
-
012:%s/<i>old</i>/<i>new</i>/g
-
012:%s/<i>old</i>/<i>new</i>/gc
Editing [+/-] Command Mode
-
012r
-
012J
-
012cc
-
012cw
-
012c$
-
012s
-
012S
-
012xp
-
012u
-
012.
Exiting [+/-] Command Mode
-
012:w
-
012:wq
-
012:q
-
012:q!
Marking Text [+/-] Visual Mode
-
012v
-
012V
-
012o
-
012Ctrl+v
-
012O
-
012aw
-
012ab
-
012aB
-
012ib
-
012iB
-
012Esc
Visual commands [+/-] Visual Mode
-
012>
-
012<
-
012y
-
012d
-
012~
Working with multiple files [+/-] Command Mode
-
012:e <i>filename</i>
-
012:bnext (or :bn)
-
012:bprev (of :bp)
-
012:bd
-
012:sp <i>filename</i>
-
012ctrl+ws
-
012ctrl+ww
-
012ctrl+wq
-
012ctrl+wv