Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:vim

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Nächste Überarbeitung Beide Seiten, nächste Überarbeitung
admin_grundlagen:vim [2016/01/15 09:41]
art
admin_grundlagen:vim [2016/07/12 21:21]
127.0.0.1 Externe Bearbeitung
Zeile 1: Zeile 1:
-{{ :admin_grundlagen:vimsheet.png?​700 ​|}}+====== vi überleben ====== 
 +^ Befehl ^ Funktion ​                  ^ 
 +| ''​i'' ​     | Einfügemodus (**i**nsert) ​ | 
 +| ''<​ESC>'' ​ | Befehlsmodus ​              | 
 +| '':​w'' ​    | speichern (**w**rite) ​     | 
 +| '':​q'' ​    | beenden (**q**uit) ​        | 
 +| '':​q!'' ​   | beenden ohne speichern ​    | 
 +| '':​wq'' ​   | speichern und beenden ​     | 
 +| '':​x'' ​    |:::                         ​|
  
-====== Überleben mit vi ====== +''​u'' ​     ​| ​Rückgängig (**u**ndo) ​     | 
-Befehl | Funktion ​              | +''​Strg+r'' ​| undo Wiederherstellen ​(**r**edo) ​|
-| i      ​| ​Einfügemodus ​          | +
-| <​ESC> ​ | Befehlsmodus ​          | +
-| :w     | speichern ​             | +
-| :q!    | beenden ohne speichern | +
-| :wq    | speichern und beenden ​ | +
-| :x     | speichern und beenden ​ | +
- +
-===== Weitere Befehle ===== +
-u      ​| Rückgängig ​            +
-| Strg+r | undo Wiederherstellen ​ |+
  
 In älteren Vim-Versionen nützlich: In älteren Vim-Versionen nützlich:
-| J      | hängt die nächste Zeile an das Ende der aktuellen Zeile an (join) | +''​J'' ​     | hängt die nächste Zeile an das Ende der aktuellen Zeile an (**j**oin) |
- +
-====== VIM lernen mit einem Browser-Spiel ====== +
- +
-http://​vim-adventures.com/​+
  
-===== VIM lernen ​mit VIM ===== +====== VIM lernen =====
-  ​vimtutor+  * mit einem Browser-Spiel:​ http://​vim-adventures.com/​ 
 +  * mit vimtutor: 
 +  vimtutor
  
 ====== Grundlagen ====== ====== Grundlagen ======
Zeile 28: Zeile 24:
 {{:​admin_grundlagen:​adm-3a-hjkl-keyboard.jpg?​200|}} {{:​admin_grundlagen:​adm-3a-hjkl-keyboard.jpg?​200|}}
  
-| w    | ein Wort weiter (word) | +Aufbau: [Anzahl] Befehl 
-| b    | ein Wort zurück (back) | + 
-| gg   | Dateianfang (go)       | +Beispiel: ''​10w''​ (10 Wörter weiter springen) 
-| 10gg | Zeile 10               | + 
-| G    | Dateiende (go)         +''​w'' ​   | ein Wort weiter (**w**ord) | 
-| /    | Vorwärts suchen ​       | +''​b'' ​   | ein Wort zurück (**b**ack) | 
-| ?    | Rückwärts suchen ​      | +''​e'' ​   | zum nächsten Wortende (**e**nd)| 
-| n    | Zum nächsten Treffer in gleicher Richtung springen | +| ''​0'' ​   | zum Zeilenanfang | 
-| N    | Zum nächsten Treffer in entgegengesetzter Richtung springen |+| ''​$'' ​   | zum Zeileneinde | 
 +| ''​gg'' ​  | Dateianfang (**g**o)       | 
 +''​10gg'' ​| Zeile 10               | 
 +''​G'' ​   ​| ​letzte Zeile           
 +''​/'' ​   | Vorwärts suchen ​       | 
 +''​?'' ​   | Rückwärts suchen ​      | 
 +''​n'' ​   | Zum nächsten Treffer in gleicher Richtung springen ​(**n**ext)
 +''​N'' ​   | Zum nächsten Treffer in entgegengesetzter Richtung springen ​ |
  
 ===== Änderungsbefehle I ===== ===== Änderungsbefehle I =====
-| dw    | Wort löschen (delete word)         | +Aufbau: [''​Anzahl''​] ''​Befehl''​ ''​Anwendungsbereich''​
-| dd    | Zeile löschen ​                     | +
-| dj    | Zeile und nächste Zeile löschen ​   | +
-| dk    | Zeile und vorherige Zeile löschen ​ | +
-| D     | bis zum Ende der Zeile löschen ​    | +
-| cw    | Wort ändern (change word)          | +
-| cc    | Zeile ändern ​                      | +
-| C     | bis zum Ende der Zeile ändern ​     |+
  
-==== copy & paste ==== +''​Anzahl''​ ist dabei optional. Es gibt an, wie oft der ''​Befehl'' ​ 
-| yy     | Zeile kopieren ​           | +ausgeführt werden soll. Mit ''​Anwendungsbereich''​ bezeichne ich Navigationsbefehle. Sie werden benutzt, um sich innerhalb ​ 
-| dd     | Zeile ausschneiden ​       | +der Datei zu bewegen. Manche Befehle erwarten keinen Anwendungsbereich.
-| p      | nach aktueller Position einfügen | +
-| P      | vor aktueller Position einfügen | +
-| vwy    | Wort kopieren ​            | +
-| yw     | Wort kopieren ​            |+
  
-====== ​Beispiel ​Texte ====== +Beispiel: ''​cwERSATZTEXT''​ (Text bis zum nächster Wort durch ERSATZTEXT ersetzen)
-[[vim beispiel texte]]+
  
-====== Anwendung ​der Grundlagen ====== +^ c…    ^ ersetzen (**c**hange) ​                  ^ 
-====suchen und ersetzen I =====+| ''​cw'' ​   | Wort ersetzen (change word)             | 
 +| ''​cc'' ​   | Zeile ersetzen ​                         | 
 +| ''​C'' ​    | bis zum Ende der Zeile ersetzen ​        | 
 + 
 +^       ​^ ​                                        ^ 
 +| .     | letzten Befehl wiederholen | 
 + 
 +==== Anwendungsbeispiel: ​suchen und ersetzen I ====
 | /      | suchen ​                   | | /      | suchen ​                   |
-.. Suchwort eingeben .. +|.. Suchwort eingeben .. || 
-v      | visueller modus - zeichenweise ​         ​+''​cw'' ​    1 Wort ersetzen ​   ​
-[Shift] v visueller modus - zeilenweise ​         ​+|.. Ersatzwort eingeben ​..|| 
-[Strg] v | visueller modus - spaltenweise ​         | +''​<ESC>'' ​ | Änderung beenden ​         | 
-.. Suchwort markieren ​.. +''​n'' ​     ​| ​zum nächsten ​Treffer ​springen ​         | 
-c      ​markierten text ändern ​   | +''​.'' ​     ​| ​Ersetzung ​wiederholen |
-| I      | einfügen ​                 | +
-| d      | löschen ​                  | +
-| y      | kopieren ​                 | +
-.. Ersatzwort eingeben +
-| <​ESC> ​ | Änderung beenden ​         | +
-| n      | nächster ​Treffer ​         | +
-| .      | letzen Befehl ​wiederholen |+
  
 +==== copy & paste ====
 +^ d…    ^ ausschneiden (**d**elete) ​              ^
 +| ''​dw'' ​   | Wort ausschneiden (delete word)         |
 +| ''​dd'' ​   | Zeile ausschneiden ​                     |
 +| ''​D'' ​    | bis zum Ende der Zeile ausschneiden ​    |
 +^ y…    ^ kopieren (**y**ank) ^
 +| ''​yw'' ​   | Wort kopieren ​           |
 +| ''​yy'' ​   | Zeile kopieren ​           |
 +| ''​Y'' ​    | bis zum Ende der Zeile kopieren |
 +^       ^ einfügen (**p**aste)^
 +| ''​P'' ​    | an aktueller Position einfügen |
 +| ''​p'' ​    | nach aktueller Position einfügen |
  
-====== Fortgeschrittene Befehle ====== +===== Visueller Modus ===== 
-Befehl ​Funktion ​+''​v'' ​     ​Visueller Modus 
-ZZ     speichern & verlassen ​+''​V'' ​     ​Visueller Modus, zeilenweise ​
-:x     speichern & verlassen ​|+''​Strg+v'' ​Visueller Modus, blockweise ​|
  
-===== Suchen ​und Ersetzen ​II ===== +==== Anwendungsbeispiel:​ suchen ​und ersetzen ​II ==== 
-Befehl ​Funktion ​+''/'' ​     | suchen ​                   | 
-| ''​:g/^$/d''​ | Alle Leerzeilen löschen ​|  +|.. Suchwort eingeben .. || 
-| ''​:​%s/​suchwort/​ersatz/​gc''​ | suchen und ersetzen, mit Bestätigung ​|+| ''​vwc'' ​   | 1 Wort ersetzen ​   | 
 +|.. Ersatzwort eingeben ..|| 
 +| ''​<ESC>'' ​ Änderung beenden ​         | 
 +| ''​n'' ​     | zum nächsten Treffer springen ​         | 
 +| ''​.'' ​     | Ersetzung wiederholen ​|
  
-===== Dateinamen-Ergänzung a la Tab-Taste ​===== +===== weitere Wege in den Einfügemodus ​===== 
-Im Einfügemodus:​ +| ''​i''​ | an der aktuellen Position| 
-  Strg+x f +| ''​I''​ | am Zeilenbzw. Blockanfang ​| 
-Mehr dazu: [[ http://​vimdoc.sourceforge.net/​htmldoc/​insert.html#​ins-completion ​vim.org Dokumentation ]]+| ''​a''​ | hinter der aktuellen Position| 
 +| ''​A''​ | am Zeilen- bzwBlockende | 
 +| ''​o''​ | neue Zeile darunter einfügen| 
 +| ''​O''​ | neue Zeile darüber einfügen|
  
-===== Mehrere Dateien bearbeiten =====+====== Beispiel Texte ====== 
 +[[admin_grundlagen:​vim beispiel texte]] zum Üben 
 + 
 +====== Suchen und Ersetzen III ====== 
 +^ Befehl ​                   ^ Funktion ^ 
 +| '':​%s/​suchwort/​ersatz/​g''​ | suchen und ersetzen (**s**ubstitute,​ **g**lobal) | 
 +| '':​g/​^$/​d'' ​              | Alle Leerzeilen löschen |  
 + 
 +====== Eingabehilfen im Einfügemodus ====== 
 +| ''​Strg+n'' ​      | Wort-Ergänzung ​               | 
 +| ''​Strg+x''​ ''​f''​ | Dateinamen-Ergänzung a la Tab-Taste | Mehr dazu: [[ http://​vimdoc.sourceforge.net/​htmldoc/​insert.html#​ins-completion | vim.org Dokumentation ]] 
 + 
 +====== Mehrere Dateien bearbeiten ​======
 |''​vi -o file1 file2'' ​ |horizontaler Split\\ (Fenster wechseln mit ''​Ctrl+W Cursortaste''​) ​ | |''​vi -o file1 file2'' ​ |horizontaler Split\\ (Fenster wechseln mit ''​Ctrl+W Cursortaste''​) ​ |
 |''​vi -O file1 file2'' ​ |vertikaler Split (Dateien nebeneinander) ​ | |''​vi -O file1 file2'' ​ |vertikaler Split (Dateien nebeneinander) ​ |
 |''​vi -p file1 file2'' ​ |Tab-Modus\\ (Dateitabs wechseln mit ''​g''​ ''​t''​ (__g__o__t__o) - ''​T''​ für rückwärts ​ | |''​vi -p file1 file2'' ​ |Tab-Modus\\ (Dateitabs wechseln mit ''​g''​ ''​t''​ (__g__o__t__o) - ''​T''​ für rückwärts ​ |
 +
 +====== Einstellungen ======
 +===== Groß-/​Kleinschreibung beim Suchen ignorieren =====
 +  :set ignorecase
  
 ===== Konfigurationsdateien ohne Kommentare anzeigen ===== ===== Konfigurationsdateien ohne Kommentare anzeigen =====
Zeile 101: Zeile 127:
   :set fde=getline(v:​lnum)=~'​^\\s*#'?​1:​getline(prevnonblank(v:​lnum))=~'​^\\s*#'?​1:​getline(nextnonblank(v:​lnum))=~'​^\\s*#'?​1:​0   :set fde=getline(v:​lnum)=~'​^\\s*#'?​1:​getline(prevnonblank(v:​lnum))=~'​^\\s*#'?​1:​getline(nextnonblank(v:​lnum))=~'​^\\s*#'?​1:​0
  
-====== ​Navigationsbefehle II ====== +=====  ​Syntax-Highlighting einschalten ​===== 
-| {    | zum nächsten Absatz | +  :​syntax on
-| }    | zum vorherigen Absatz |+
  
-====== ​Nützliche Informationen und Befehle ​====== +===== Zeilennummern ein-/​ausschalten ​=====
-Vim öffnen: +
- +
-  vim <​Datei>​ - öffnet eine leere Datei mit dem Namen welche ich beim Öffnen angegeben habe +
-  vim + <​Zeilennummer>​ + <​Datei>​ - öffnet eine leere Datei mit dem Namen welchen ich angegeben habe und springt in die angegebene Zeile +
-  vim . - Ich kann mit die Datei aussuchen welche ich öffnen will. Durch den Punkt werden die Dateien aus dem aktuellen Verzeichnis angezeigt +
- +
-Modi: +
- +
-  - Command/​normal Mode +
-  - Insert Mode (zum normalen Schreiben) +
-  - Ex Mode (das was man kriegt, wenn man im command-Mode ":"​ drückt) +
-  - Visual Mode +
- +
- +
-Command Mode: +
- +
-Im command-Mode haben Befehle den folgenden Aufbau: +
- +
-  [count][command][range] +
- +
-oder +
- +
-  [command][count][range] +
- +
-[count] ist Dabei optional. Es gibt an, wie oft [command] oder [range]  +
-ausgeführt werden soll. +
- +
-Mit "​range"​ bezeichne ich Sprungbefehle. Sie werden benutzt, um sich innerhalb  +
-der Datei zu bewegen. Manche commands erwarten keine range. +
- +
-Die wichtigsten Commands: +
- +
-  d - delete - löschen +
-  y - yank - in den zwischenspeicher kopieren +
-  yw - Wort kopieren +
-  yy - Zeile kopieren +
-  3yy - 3 Zeilen kopieren +
-  p - vorher Kopiertes einfügen (put | leichter zu merken ist "​paste"​) +
-  P - vorher Kopiertes *vor* dem Cursor einfügen +
-  c - change - löschen, und danach in den insert-Modus wechseln +
-  shift + J - fügt Zeilen zusammen +
- +
-Die gebräuchlisten Ranges: +
- +
-  w - Wort vorwärts springen +
-  b - Wort rückwärts springen +
- +
-Beispiele:​ +
- +
-  w - Wort weiterspringen +
-  dw - Wort löschen - command "​delete",​ reichweite "​Cursor bis Sprungende"​ (Wort) einfach zu merken mit "del word"​ +
-  d2w - einmal zwei Worte löschen +
-  2dw - zwei mal ein Wort löschen (gleiches ergebnis wie d2w) +
-  10i- - 10 "​-"​ einfügen (erst beim Wechsel in den command-Mode,​ da ja der ganze insert-Mode (i) 10 mal ausgeführt wird) +
- +
-Das ist der grundsätzliche Aufbau, den man mit allen anderen Befehlen  +
-kombiniert. +
- +
-Andere Nützlichkeiten im command-Mode:​ +
- +
-  . - letzes command wiederholen. +
-  cw - Wort austauschen. Wie "​dwi"​. "​change word"​ +
-  i - in den insert-Modus wechseln +
-  I - in den insert-Modus wechseln und Cursor an den Anfang der Zeile positionieren. Kurz: Wenn man etwas am Anfang der Zeile einfügen will +
-  a - append -> wenn man etwas hinter dem Cursor einfügen will +
-  A - append -> wenn man etwas am Ende der Zeile einfügen will +
-  o - open new line - Leerzeile anfügen + insert-Mode +
-  O - open new line - Leerzeile einfügen + insert-Mode +
-  ddp - aktuelle Zeile eins nach unten verschieben +
-  xp - Buchstaben vertauschen  +
- +
-Bewegen im command-mode / "​range"​-Befehle:​ +
- +
-  w - Wort weiter springen ​     +
-  W - wie w, überspringt aber mehr (z.B. Kommas) +
-  b - Wort zurück springen +
-  B - wie b, überspringt aber mehr (z.B. Kommas) +
-  e - springt bis zum Ende des Wortes unter dem Cursor +
-  E - wie E, überspringt aber mehr (z.B. Kommas) +
-  { } - Absatz vor/zurück springen. Sehr praktisch in einer .rhosts! +
-  0 - pos1 +
-  $ - ende +
-  * - springt vorwärts zum nächsten Vorkommen des Wortes unter dem Cursor +
-  # - springt rücwärts zum vorherigen Vorkommen des Wortes unter dem Cursor +
- +
-Insert Mode: +
- +
-Insert Modus - wenn unten "​insert"​ steht. Was man drueckt wird direkt eingefuegt. Verlassen mit ESC +
- +
-Ex Mode: +
- +
-  :w <​Datei>​ - Speichert es in einer neuen Datei +
-  :e . - Eine andere Datei auf dem aktuellen Verzeichnis öffnen +
-  :e /etc/passwd - Die Datei passwd öffnen +
-  :r /etc/hosts - Den Inhalt der angegebenen Datei an die Cursorposition des offenen Dokuments einlesen +
-  :tabnew - Neuen Tab erstellen +
-  :tabnext - In den nächsten Tab springen +
-  :tabclose - Tab schließen +
-  :redo - Holt den Text wieder wenn ich zuviele undos gemacht habe +
- +
-Suchen und ersetzen: +
- +
-  :1,60 - ersetzen von Reihe 1-60 +
-  :1,$ - ganzer Text (bis Textende) +
-  :% - ganzer Text (ebenfalls bis Textende) +
-  :.,+10 - von der Courser Position an Zehn Zeilen +
-  :-5,10 +
- +
-  :​%s/​bash$/​sh/​ - ersetzt bash wenn es am Ende steht durch sh +
-  :​%s/​bash/​sh/​ - ersetzt bash durch sh, aber pro Zeile nur den ersten treffen +
-  :​%s/​bash/​sh/​g - ersetzt bash durch sh, im ganzen Text, auch mehrmals pro Zeile wenn es vorkommt +
-  :​%s/​bash/​sh/​gc - ersetzt bash druch sh, im ganzen Text, auch mehrmals pro Zeiel wenn es vorkommt und man wird gefragt ob man das ändern will +
- +
-  :%s/^a/A/ - ersetzt alle kleingeschrieben a am Anfang jeder Zeile durch ein A +
- +
-  :help <​Befehl>​ +
-  :syntax on - Syntax highlighting+
   :set number   :set number
   :set nonumber   :set nonumber
-  :set list - Steuerzeichen anzeigen 
-  :set all - Zeigt alle Befehle an in Kombination mit set 
  
-Visual Mode:+===== Steuerzeichen anzeigen ===== 
 +  ​:set list
  
-neben den 3 standard-Modi hat vim noch den Visual mode. Er ist wie normales ​ +====== Navigationsbefehle II ====== 
-Markieren mit shift-Cursortasten und wählt einen Bereich aus, den man dann mit  +| {    | zum nächsten Absatz | 
-commands editieren kann.+| }    | zum vorherigen Absatz | 
 +| *    | | 
 +| #    | |
  
-  v     ​normales markieren +====== Weitere Informationen und Befehle ====== 
-  ​V ​    ​zeilenweises markieren +Modi:
-  ^V    eckiges markieren (block mode)+
  
-Bsp: Block auskommentieren ​im Visual ​Mode:+  * Command/​normal Mode 
 +  * Insert Mode (zum normalen Schreiben) 
 +  * Ex Mode (das was man kriegt, wenn man im command-Mode ":" drückt) 
 +  * Visual Mode
  
-  Mit Strg-V in den Modus --VISUELL BLOCK-- wechseln. +===== Ex Mode =====
-  Die Zeilen die auskommentiert werden sollen mit den Cursor Tasten markieren. +
-  Mit Shift-I in den Einfüge Modus wechseln. +
-  Das Kommentarzeichen (z.B. #) einfügen. +
-  ESC drücken um aus dem Modus zu kommen. +
-Die Zeilen bekommen wie von Zauberhand das '#'​ Zeichen vorangestellt. +
- +
-Bsp: Block entkommentieren im Visual ​Mode+
- +
-  Mit Strg-V in den Modus --VISUELL BLOCK-- wechseln. +
-  Die Zeilen die entkommentiert werden sollen mit den Cursor Tasten markieren. +
-  Die Entf Taste drücken. +
-  Fertig.+
  
 +^ Befehl ^ Funktion ^
 +| ZZ     | speichern & verlassen |
 +| :x     | speichern & verlassen |
 +| :w <​Datei>​ | Speichert es in einer neuen Datei|
 +| :e . | Eine andere Datei auf dem aktuellen Verzeichnis öffnen|
 +| :e /etc/passwd | Die Datei passwd öffnen|
 +| :r /etc/hosts | Den Inhalt der angegebenen Datei an die Cursorposition des offenen Dokuments einlesen|
 +| :tabnew | Neuen Tab erstellen|
 +| :tabnext | In den nächsten Tab springen|
 +| :tabclose | Tab schließen|
 +| :redo | Holt den Text wieder wenn ich zuviele undos gemacht habe|
 +||
 +| :help <​Befehl>​|
 +| :set all | Zeigt alle Befehle an in Kombination mit set|
  
 ====== Alternative Editoren ====== ====== Alternative Editoren ======
Zeile 259: Zeile 172:
 | mcedit | mc         | mc           ​| ​             | Teil vom Midnight Commander |    | mcedit | mc         | mc           ​| ​             | Teil vom Midnight Commander |   
 | nano   ​| ​           |              |              |                             ​| ​   | nano   ​| ​           |              |              |                             ​| ​  
- 
- 
  
 ====== Dokus und Links ===== ====== Dokus und Links =====
admin_grundlagen/vim.txt · Zuletzt geändert: 2022/09/28 14:25 (Externe Bearbeitung)