24.04.2021
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 nicht leeres Zeichen nächste Zeile |
n| | Spalte n aktuelle Zeile |
Strg-F/Page-Down | Seite vorwärts. |
Strg-B/Page-Up | Seite rückwärts. |
- - [x]
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 vi datei Start mit einer Datei vi datei1 datei2 … Start mit mehreren Dateien vi +n datei Start mit einer Datei, Positionierung auf Zeile n vim datei Start von vim, wenn dieser nicht der Standard-Editor ist gvim datei Start des vim auf grafischer Benutzeroberfläche ### 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. :! 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. 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 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
#### Text handle | |
---|---|
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 |
#####################################################
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
orY
, if you need to copy 2 lines just type2yy
or2Y
- 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:
- 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 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 leftj
– move downk
– move upl
– move rightw
– jump by start of wordsW
– jump by wordse
– jump to end of wordsE
– jump to end of wordsb
– jump backward by wordsB
– jump backward by words0
– (zero) start of line^
– first non-blank character of line$
– end of lineG
– 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 cursorI
– insert at the beginning of the linea
– append after the cursorA
– append at the end of the lineo
– open (append) blank line below current line (no need to press return)O
– open blank line above current lineea
– append at end of wordEsc
– exit insert mode
Cut and Paste [+/-] Command Mode
yy
– yank (copy) a line2yy
– yank 2 linesyw
– yank wordy$
– yank to end of linep
– put (paste) the clipboard after cursorP
– put (paste) before cursordd
– delete (cut) a linedw
– delete (cut) the current wordx
– delete (cut) current character
Search/Replace [+/-] Command Mode
/_pattern_
– search for pattern?_pattern_
– search backward for patternn
– repeat search in same directionN
– 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 onecc
– change (replace) an entire linecw
– change (replace) to the end of wordc$
– change (replace) to the end of lines
– delete character at cursor and subsitute textS
– 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 modeo
– move to other end of marked areaCtrl+v
– start visual block modeO
– move to Other corner of blockaw
– mark a wordab
– a () block (with braces)aB
– a {} block (with brackets)ib
– inner () blockiB
– inner {} blockEsc
– exit visual mode
Visual commands [+/-] Visual Mode
>
– shift right<
– shift lefty
– yank (copy) marked textd
– 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 windowctrl+ws
– Split windowsctrl+ww
– switch between windowsctrl+wq
– Quit a windowctrl+wv
– Split windows vertically