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
admin_grundlagen:vim [2016/01/08 13:44]
ingo_wichmann
admin_grundlagen:vim [2018/11/05 18:50] (aktuell)
Zeile 1: Zeile 1:
-====== ​Überleben mit vi ====== +====== vi überleben ​====== 
-Befehl ​Funktion ​              | +Befehl ​    ^ Funktion ​                  ^ 
-| i      | Einfügemodus ​          ​+''​i'' ​     | Einfügemodus ​(**i**nsert)  ​
-| <​ESC> ​ | Befehlsmodus ​          ​+''​<ESC>'' ​ | Befehlsmodus ​              ​
-| :w     | speichern ​             +''​:w'' ​    | speichern ​(**w**rite) ​     ​
-| :q!    ​| beenden ​ohne speichern ​+''​:q'' ​    | beenden ​(**q**uit) ​        
-| :wq    ​| ​speichern und beenden ​ +''​:q!'' ​   | beenden ​ohne speichern ​    
-| :x     | speichern und beenden ​ |+''​:wq'' ​   ​| speichern und beenden ​     |
  
-===== Weitere Befehle ===== +''​u'' ​     | Rückgängig ​(**u**ndo) ​     ​
-| u      | Rückgängig ​            ​+''​Strg+r'' ​| undo Wiederherstellen ​(**r**edo) ​|
-| 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 ​======+====== VIM lernen ====== 
 +  * mit einem Browser-Spiel:​ http://​vim-adventures.com/​ 
 +  * mit vimtutor:
  
-http://​vim-adventures.com/​+  vimtutor
  
 ====== Grundlagen ====== ====== Grundlagen ======
Zeile 23: 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)       | +
-| 10gg | Zeile 10               | +
-| G    | Dateiende (go)         | +
-| /    | Vorwärts suchen ​       | +
-| ?    | Rückwärts suchen ​      | +
-| n    | Zum nächsten Treffer in gleicher Richtung springen | +
-| N    | Zum nächsten Treffer in entgegengesetzter Richtung springen |+
  
-===== Änderungsbefehle I ===== +Beispiel: ''​10w'' ​(10 Wörter weiter springen)
-| dw    | Wort löschen ​(delete word        | +
-| 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 ==== +| ''​w'' ​   | ein Wort weiter (**w**ord) | 
-yy     | Zeile kopieren ​           ​+| ''​b'' ​   | ein Wort zurück (**b**ack) | 
-dd     | Zeile ausschneiden ​       ​+| ''​e'' ​   | zum nächsten Wortende (**e**nd)| 
-p      ​nach aktueller Position einfügen ​+| ''​0'' ​   | zum Zeilenanfang | 
-P      ​vor aktueller Position einfügen ​+| ''​$'' ​   | zum Zeilenende | 
-vwy    ​| ​Wort kopieren ​            +| ''​gg'' ​  | Dateianfang (**g**o) ​      | 
-yw     Wort kopieren ​            |+''​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  ​|
  
-====== Beispiel Texte ====== +===== Änderungsbefehle I ===== 
-[[vim beispiel texte]]+Aufbau: ​[''​Anzahl''​''​Befehl''​ ''​Anwendungsbereich''​
  
-====== Anwendung ​der Grundlagen ====== +''​Anzahl''​ ist dabei optional. Es gibt an, wie oft der ''​Befehl'' ​ 
-===== suchen und ersetzen I ===== +ausgeführt werden sollMit ''​Anwendungsbereich''​ bezeichne ich NavigationsbefehleSie werden benutzt, um sich innerhalb ​ 
-| /      | suchen ​                   | +der Datei zu bewegenManche Befehle erwarten keinen Anwendungsbereich.
-.. Suchwort eingeben .. +
-| v      | visueller modus - zeichenweise ​         | +
-| [Shift] v | visueller modus - zeilenweise ​         | +
-| [Strg] v | visueller modus - spaltenweise ​         | +
-.. Suchwort markieren .. +
-| c      | markierten text ändern ​   | +
-| I      | einfügen ​                 | +
-| d      | löschen ​                  | +
-| y      | kopieren ​                 | +
-.. Ersatzwort eingeben +
-| <​ESC> ​ | Änderung beenden ​         | +
-| n      | nächster Treffer ​         | +
-| .      | letzen Befehl wiederholen |+
  
 +Beispiel: ''​cwERSATZTEXT''​ (Text bis zum nächster Wort durch ERSATZTEXT ersetzen)
  
-====== Fortgeschrittene Befehle ====== +^ c…    ^ ersetzen (**c**hange) ​                  ^ 
-Befehl ​Funktion ​+''​cw'' ​   ​Wort ersetzen (change word)             
-ZZ     speichern & verlassen ​+''​cc'' ​   ​Zeile ersetzen ​                         ​
-:x     | speichern & verlassen ​|+''​C'' ​    | bis zum Ende der Zeile ersetzen ​        |
  
-===== Suchen und Ersetzen II ===== +      ^                            ^ 
-| Befehl | Funktion | +.     letzten Befehl wiederholen ​|
-| '':​g/​^$/​d''​ | Alle Leerzeilen löschen |  +
-'':​%s/​suchwort/​ersatz/​gc'' ​suchen und ersetzen, mit Bestätigung ​|+
  
-===== Dateinamen-Ergänzung a la Tab-Taste ===== +==== Anwendungsbeispiel:​ suchen und ersetzen I ==== 
-Im Einfügemodus:​ +| /      | suchen ​                   | 
-  ​Strg+x f +|.. Suchwort eingeben .. || 
-Mehr dazu: [[ http://​vimdoc.sourceforge.net/​htmldoc/​insert.html#​ins-completion ​vim.org Dokumentation ]]+| ''​cw'' ​    | 1 Wort ersetzen ​   | 
 +|.. Ersatzwort eingeben ..|
 +| ''<​ESC>'' ​ | Änderung beenden ​         | 
 +| ''​n'' ​     | zum nächsten Treffer springen ​         | 
 +| ''​.'' ​     | Ersetzung wiederholen |
  
-===== Mehrere Dateien bearbeiten ===== +==== copy & paste ==== 
-|''​vi -o file1 file2'' ​ |horizontaler Split\\ ​(Fenster wechseln mit ''​Ctrl+W Cursortaste''​)  ​+^ d…    ^ ausschneiden (**d**elete) ​              ^ 
-|''​vi -O file1 file2'' ​ |vertikaler Split (Dateien nebeneinander | +| ''​dw'' ​   Wort ausschneiden ​(delete word)         | 
-|''​vi -p file1 file2'' ​ |Tab-Modus\\ (Dateitabs wechseln mit ''​g''​ ''​t''​ (__g__o__t__o''​T'' ​für rückwärts  ​|+''​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 ​|
  
-===== Konfigurationsdateien ohne Kommentare anzeigen ​===== +===== Visueller Modus ===== 
-  :set fdm=expr +| ''​v'' ​     | markieren ​(visual
-  :set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:​lnum))=~'^\\s*#'?​1:​getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0+''​V'' ​     | markieren, zeilenweise | 
 +| ''​Strg+v'' ​| markieren, blockweise |
  
-====== Navigationsbefehle ​II ====== +==== Anwendungsbeispiel:​ suchen und ersetzen ​II ==== 
-   | zum nächsten ​Absatz ​+''/'' ​     | suchen ​                   | 
-}    ​zum vorherigen Absatz ​|+|.. Suchwort eingeben .. || 
 +| ''​vwc'' ​   | 1 Wort ersetzen ​   | 
 +|.. Ersatzwort eingeben ..|| 
 +| ''<​ESC>'' ​ | Änderung beenden ​         | 
 +| ''​n'' ​     ​| zum nächsten ​Treffer springen ​         ​
 +''​.'' ​     ​Ersetzung wiederholen ​|
  
-====== Nützliche Informationen und Befehle ====== +==== Text Markieren ​==== 
-Vim öffnen:+| ''​vip''​ | aktuellen Absatz markieren | 
 +| ''​vit''​ | Text innerhalb des aktuellen xml-Tags markieren | 
 +| ''​vi(''​ oder ''​vib''​| Text innerhalb der (Klammern) markieren | 
 +| ''​vi{''​ oder ''​viB''​| Text innerhalb der {Klammern} markieren | 
 +| ''​vi[''​ | Text innerhalb der [Klammern] markieren | 
 +| ''​vi%%"​%%''​ | Text innerhalb der %%"​Anführungszeichen"​%% markieren | 
 +| ''​vi%%'​%%''​ | Text innerhalb der '​Anführungszeichen'​ markieren | 
 +| ''​vap''​ | aktuellen Absatz inklusive Leerzeilen außenrum markieren | 
 +| ''​vat''​ | Text um das aktuelle xml-Tag markieren | 
 +| ''​va(''​ oder ''​vab''​| Text inklusive der (Klammern) markieren | 
 +| ''​va{''​ oder ''​vaB''​| Text inklusive der {Klammern} markieren | 
 +| ''​va[''​ | Text inklusive der [Klammern] markieren | 
 +| ''​va%%"​%%''​ | Text inklusive der %%"​Anführungszeichen"​%% markieren | 
 +| ''​va%%'​%%''​ | Text inklusive der '​Anführungszeichen'​ markieren | 
 +Quelle: http://​vimdoc.sourceforge.net/​htmldoc/​motion.html#​object-select
  
-  vim <​Datei>​ - öffnet eine leere Datei mit dem Namen welche ich beim Öffnen angegeben habe +===== weitere Wege in den Einfügemodus ===== 
-  vim + <​Zeilennummer>​ + <​Datei>​ - öffnet eine leere Datei mit dem Namen welchen ich angegeben habe und springt ​in die angegebene Zeile +| ''​i''​ | an der aktuellen Position| 
-  vim . Ich kann mit die Datei aussuchen welche ich öffnen willDurch den Punkt werden die Dateien aus dem aktuellen ​Verzeichnis angezeigt+| ''​I''​ | am ZeilenbzwBlockanfang | 
 +| ''​a''​ | hinter der aktuellen ​Position| 
 +| ''​A''​ | am Zeilen- bzw. Blockende | 
 +| ''​o''​ | neue Zeile darunter einfügen| 
 +| ''​O''​ | neue Zeile darüber einfügen|
  
-Modi:+====== Beispiel Texte ====== 
 +[[admin_grundlagen:vim beispiel texte]] zum Üben
  
-  - Command/​normal Mode +====== Suchen und Ersetzen III ====== 
-  - Insert Mode (zum normalen Schreiben) +^ Befehl ​                   ^ Funktion ^ 
-  - Ex Mode (das was man kriegtwenn man im command-Mode ":"​ drückt+| '':​%s/​suchwort/​ersatz/​g''​ | suchen und ersetzen ​(**s**ubstitute**g**lobal| 
-  - Visual Mode+| '':​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 ]]
  
-Command Mode:+====== Mehrere Dateien bearbeiten ====== 
 +|''​vi -o file1 file2'' ​ |horizontaler Split\\ (Fenster wechseln mit ''​Ctrl+W Cursortaste''​) ​ | 
 +|''​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 ​ |
  
-Im command-Mode haben Befehle den folgenden Aufbau:+====== Einstellungen ====== 
 +===== Den vim.tiny smart machen =====
  
-  [count][command][range]+Folgende Zeilen in der ~/.vimrc sorgen dafür, dass auch im vim.tiny im Insert-Modus die Cursortasten und Backspace vernünftig,​ auch über die Grenzen des gerade eingefügten Textes hinaus, funktionieren:​ 
 +  set nocompatible 
 +  set backspace=2
  
-oder+===== Groß-/​Kleinschreibung beim Suchen ignorieren ===== 
 +  :set ignorecase
  
-  [command][count][range] +===== Konfigurationsdateien ohne Kommentare anzeigen ===== 
- +  :set fdm=expr 
-[count] ist Dabei optional. Es gibt an, wie oft [command] oder [range]  +  ​:set fde=getline(v:lnum)=~'​^\\s*#'?1:getline(prevnonblank(v:lnum))=~'​^\\s*#'?1:getline(nextnonblank(v:lnum))=~'​^\\s*#'?1:0
-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+=====  Syntax-Highlighting einschalten ===== 
 +  :syntax on
  
-  :help <​Befehl>​ +===== Zeilennummern ein-/​ausschalten =====
-  :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.+
  
-BspBlock entkommentieren im Visual Mode:+^ 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|
  
-  Mit Strg-V in den Modus --VISUELL BLOCK-- wechseln. +====== Alternative Editoren ======
-  Die Zeilen die entkommentiert werden sollen mit den Cursor Tasten markieren. +
-  Die Entf Taste drücken. +
-  Fertig.+
  
 +Eigentlich keine. ​
  
-====== Alternative Editoren ====== 
 | Befehl | SuSE Paket | Debian Paket | CentOS Paket | Beschreibung ​               | | Befehl | SuSE Paket | Debian Paket | CentOS Paket | Beschreibung ​               |
 | 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.1452260655.txt.gz · Zuletzt geändert: 2016/01/08 13:44 von ingo_wichmann