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

Nächste Überarbeitung
Vorherige Überarbeitung
admin_grundlagen:vim [2011/04/07 18:12]
127.0.0.1 Externe Bearbeitung
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:
 +| ''​J'' ​     | hängt die nächste Zeile an das Ende der aktuellen Zeile an (**j**oin) |
  
-| J      | hängt die nächste Zeile an das Ende der aktuellen Zeile an | +====== VIM lernen ====== 
-| nJ     | hängt n Zeilen an das Ende der aktuellen Zeile an |+  * mit einem Browser-Spiel: http://​vim-adventures.com/​ 
 +  * mit vimtutor:
  
 +  vimtutor
  
-====== ​suchen und ersetzen I ====== +====== ​Grundlagen ​====== 
-| /      | suchen ​                   | +===== Navigationsbefehle I ===== 
-.. Suchwort eingeben .. +{{:​admin_grundlagen:​adm-3a-hjkl-keyboard.jpg?200|}}
-| v      | visueller modus zeichenweise ​         | +
-| [Shift] v | visueller modus zeilenweise ​         | +
-| [Strg] v | visueller modus spaltenweise ​         | +
-.. Suchwort markieren .. +
-| c      | markierten text ändern ​   | +
-.. Ersatzwort eingeben +
-| <​ESC> ​ | Änderung beenden ​         | +
-| n      | nächster Treffer ​         | +
-| .      | letzen Befehl wiederholen ​|+
  
-====== copy & paste ====== +Aufbau: [Anzahl] Befehl
-| yy     | Zeile kopieren ​           | +
-| dd     | Zeile ausschneiden ​       | +
-| P      | einfügen ​                 | +
-| vwy    | Wort kopieren ​            | +
-| yw     | Wort kopieren ​            |+
  
-====== Fortgeschrittene Befehle ====== +Beispiel''​10w''​ (10 Wörter weiter springen)
-| Befehl | Funktion | +
-| ZZ     | speichern & verlassen | +
-:x     | speichern & verlassen |+
  
-===== Suchen und Ersetzen II ===== +| ''​w'' ​   | ein Wort weiter (**w**ord) | 
-Befehl ​Funktion ​+''​b'' ​   ​ein Wort zurück (**b**ack) | 
-| ''​:g/^$/d''​ | Alle Leerzeilen löschen ​|  +| ''​e'' ​   | zum nächsten Wortende (**e**nd)| 
-| ''​:%s/suchwort/​ersatz/​gc''​ | suchen ​und ersetzen, mit Bestätigung ​|+| ''​0'' ​   | zum Zeilenanfang ​
 +| ''​$'' ​   zum Zeilenende | 
 +| ''​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  ​|
  
-===== Dateinamen-Ergänzung a la Tab-Taste ​===== +===== Änderungsbefehle I ===== 
-Im Einfügemodus:​ +Aufbau: [''​Anzahl''​''​Befehl''​ ''​Anwendungsbereich''​
-  Strg+x f +
-Mehr dazu: [[ http://​vimdoc.sourceforge.net/​htmldoc/​insert.html#​ins-completion | vim.org Dokumentation ]]+
  
-===== Mehrere Dateien bearbeiten ===== +''​Anzahl'' ​ist dabei optional. Es gibt an, wie oft der ''​Befehl''​  
-|''​vi -o file1 file2'' ​ ​|horizontaler Split\\ (Fenster wechseln mit ''​Ctrl+W Cursortaste''​)  | +ausgeführt werden soll. Mit ''​Anwendungsbereich'' ​bezeichne ich Navigationsbefehle. Sie werden benutzt, um sich innerhalb ​ 
-|''​vi -O file1 file2'' ​ ​|vertikaler Split (Dateien nebeneinander) ​ | +der Datei zu bewegen. Manche Befehle erwarten keinen Anwendungsbereich.
-|''​vi -p file1 file2'' ​ |Tab-Modus\\ (Dateitabs wechseln mit ''​g''​ ''​t''​ (__g__o__t__o) - ''​T''​ für rückwärts ​ |+
  
-===== Konfigurationsdateien ohne Kommentare anzeigen ===== +Beispiel: ''​cwERSATZTEXT''​ (Text bis zum nächster Wort durch ERSATZTEXT ersetzen)
-:set fdm=expr +
-:set fde=getline(v:​lnum)=~'^\\s*#'?​1:​getline(prevnonblank(v:​lnum))=~'^\\s*#'?1:getline(nextnonblank(v:​lnum))=~'​^\\s*#'?​1:​0+
  
-====== Nützliche Informationen und Befehle ====== +^ c…    ^ ersetzen (**c**hange) ​                  ^ 
-Vim öffnen:+| ''​cw'' ​   | Wort ersetzen (change word)             | 
 +| ''​cc'' ​   | Zeile ersetzen ​                         | 
 +| ''​C'' ​    | bis zum Ende der Zeile ersetzen ​        |
  
-vim <​Datein>​ - öffnet mir eine leere Datei mit dem Namen welche ich beim öffnen angegeben habe +^       ​^ ​                           ^ 
-vim + <​Zeilennummer>​ + <​Datei>​ - öffnet mir eine leere Datei mit dem Namen welchen ich angegeben habe und springt in die angegebene Zeile +    | letzten Befehl wiederholen |
-vim . - Ich kann mit die Datei aussuchen welche ich öffnen willDurch den Punkt werden die Dateien aus dem aktuellen Verzeichnis angezeigt+
  
-Modis:+==== Anwendungsbeispielsuchen und ersetzen I ==== 
 +| /      | suchen ​                   | 
 +|.. Suchwort eingeben .. || 
 +| ''​cw'' ​    | 1 Wort ersetzen ​   | 
 +|.. Ersatzwort eingeben ..|| 
 +| ''<​ESC>'' ​ | Änderung beenden ​         | 
 +| ''​n'' ​     | zum nächsten Treffer springen ​         | 
 +| ''​.'' ​     | Ersetzung wiederholen |
  
-- Command/​normal mode +==== copy & paste ==== 
-- Insert mode (zum normalen schreiben+^ d…    ^ ausschneiden ​(**d**elete) ​              ^ 
-- Ex mode (das was man kriegt, wenn man im command-mode ":"​ drückt+| ''​dw'' ​   | Wort ausschneiden (delete word)         | 
-- Visual mode+| ''​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 |
  
 +===== Visueller Modus =====
 +| ''​v'' ​     | markieren (visual) |
 +| ''​V'' ​     | markieren, zeilenweise |
 +| ''​Strg+v''​ | markieren, blockweise |
  
-Command Mode:+==== Anwendungsbeispielsuchen und ersetzen II ==== 
 +| ''/'' ​     | suchen ​                   | 
 +|.. Suchwort eingeben .. || 
 +| ''​vwc'' ​   | 1 Wort ersetzen ​   | 
 +|.. Ersatzwort eingeben ..|| 
 +| ''<​ESC>'' ​ | Änderung beenden ​         | 
 +| ''​n'' ​     | zum nächsten Treffer springen ​         | 
 +| ''​.'' ​     | Ersetzung wiederholen |
  
-im command-mode haben befehle den folgenden aufbau:+==== Text Markieren ==== 
 +| ''​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 | 
 +Quellehttp://​vimdoc.sourceforge.net/​htmldoc/​motion.html#​object-select
  
-[count][command][range]+===== weitere Wege in den Einfügemodus ===== 
 +| ''​i''​ | an der aktuellen Position| 
 +| ''​I''​ | am Zeilen- bzw. Blockanfang | 
 +| ''​a''​ | hinter der aktuellen Position| 
 +| ''​A''​ | am Zeilen- bzw. Blockende | 
 +| ''​o''​ | neue Zeile darunter einfügen| 
 +| ''​O''​ | neue Zeile darüber einfügen|
  
-oder+====== Beispiel Texte ====== 
 +[[admin_grundlagen:​vim beispiel texte]] zum Üben
  
-[command][count][range]+====== Suchen und Ersetzen III ====== 
 +^ Befehl ​                   ^ Funktion ^ 
 +| '':​%s/​suchwort/​ersatz/​g''​ | suchen und ersetzen (**s**ubstitute,​ **g**lobal) | 
 +| '':​g/​^$/​d'' ​              | Alle Leerzeilen löschen | 
  
-[count] ist dabei optional. Es gibt an, wie oft [commandoder [range +====== Eingabehilfen im Einfügemodus ====== 
-ausgeführt werden soll.+| ''​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 ​]]
  
-Mit "​range"​ bezeichne ich sprungbefehle. Sie werden benutzt, um sich innerhalb ​ +====== Mehrere Dateien bearbeiten ====== 
-der datei zu bewegen. Manche commands erwarten keine range.+|''​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 ​ |
  
-Die wichtigsten Commands:+====== Einstellungen ====== 
 +===== Den vim.tiny smart machen =====
  
-d - delete - löschen +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:​ 
-y - yank - in den zwischenspeicher kopieren +  set nocompatible 
-yw wort kopieren +  set backspace=2
-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:+===== Groß-/​Kleinschreibung beim Suchen ignorieren ===== 
 +  ​:set ignorecase
  
-w - wort vorwärts springen +===== Konfigurationsdateien ohne Kommentare anzeigen ===== 
-b - wort rückwärts springen+  :set fdm=expr 
 +  :set fde=getline(v:​lnum)=~'​^\\s*#'?​1:​getline(prevnonblank(v:​lnum))=~'​^\\s*#'?​1:​getline(nextnonblank(v:​lnum))=~'​^\\s*#'?​1:​0
  
-Beispiele:+=====  Syntax-Highlighting einschalten ===== 
 +  ​:syntax on
  
-wort weiterspringen +===== Zeilennummern ein-/​ausschalten ===== 
-dw - wort löschen - command "​delete",​ reichweite "​cursor bis sprungende"​ (wort) einfach zu merken mit "del word" +  :set number 
-d2w - einmal zwei worte löschen +  :set nonumber
-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 ​ +===== Steuerzeichen anzeigen ===== 
-kombiniert.+  :set list
  
-Andere nützlichkeiten im command-mode:​+====== Navigationsbefehle II ====== 
 +| {    | zum nächsten Absatz | 
 +| }    | zum vorherigen Absatz | 
 +| *    | | 
 +| #    | |
  
-. - letzes command wiederholen. +====== Weitere Informationen und Befehle ====== 
-cw - wort austauschen. Wie "​dwi"​. "​change word"​ +Modi:
-i - in den insert-modus wechseln +
-I - in den insert-modus wechseln und cursor an den anfang der zeile positionieren. KurzWenn 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:+  * Command/​normal Mode 
 +  * Insert Mode (zum normalen Schreiben) 
 +  * Ex Mode (das was man kriegt, wenn man im command-Mode ":" ​drückt) 
 +  * Visual Mode
  
-w - wort weiter springen ​     +===== Ex Mode =====
-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+
  
-Suche:+^ 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|
  
-/<was ich suche> (vorwärts) (mit n zum nächsten, mit strg + n zum vorherigen) +====== Alternative Editoren ======
-?<was ich suche> (rückwärts suche)+
  
-Insert Mode: +Eigentlich keine
- +
-insert modus - wenn unten "​insert"​ stehtWas 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 +
-:tabnew - Neuen Tab erstellen +
-:tabnext - In den nächsten Tab springen +
-:tabclose - Tab schließen +
-:redo - Holt mir meinen 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 nonumber +
-:set list - Steuerzeichen anzeigen +
-:set all - Zeigt alle befehle an in kombination mit set +
- +
-Visual Mode: +
- +
-neben den 3 standard-modi hat vim noch den Visual mode. Er ist wie normales  +
-markieren mit shift-cursortasten und wählt einen Bereich aus, den man dann mit  +
-commands editieren kann. +
- +
-v     ​normales markieren +
-V     ​zeilenweises markieren +
-^V    eckiges markieren (block mode) +
- +
-Bsp: Block auskommentieren im Visual Mode: +
- +
-Mit Strg-V in den Modus --VISUELL BLOCK-- wechseln. | +
-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. | +
- +
- +
-====== Alternative Editoren ====== +
-| Befehl | SuSE Paket | Debian Paket | Fedora Paket | +
-| mcedit | mc         | mc           ​| ​             |    +
-| e3ne   | e3         | e3           ​| ​             |   +
-| aee    |            | aee          |              |  ​+
  
 +| Befehl | SuSE Paket | Debian Paket | CentOS Paket | Beschreibung ​               |
 +| mcedit | mc         | mc           ​| ​             | Teil vom Midnight Commander |   
 +| nano   ​| ​           |              |              |                             ​| ​  
  
 ====== Dokus und Links ===== ====== Dokus und Links =====
  
   * [[http://​www.debian-administration.org/​article/​Hiding_comments_in_configuration_files]]   * [[http://​www.debian-administration.org/​article/​Hiding_comments_in_configuration_files]]
 +  * [[https://​blog.interlinked.org/​tutorials/​vim_tutorial.html|Tutorial mit Graphiken zur Navigation]]
 +  * Interview mit Bill Joy über die Entstehung von "​vi"​ [[http://​web.cecs.pdx.edu/​~kirkenda/​joy84.html]] ​
   * {{:​vi-vim-cheat-sheet.gif|http://​www.viemu.com/​vi-vim-cheat-sheet.gif}}   * {{:​vi-vim-cheat-sheet.gif|http://​www.viemu.com/​vi-vim-cheat-sheet.gif}}
 +
  
admin_grundlagen/vim.1302199945.txt.gz · Zuletzt geändert: 2012/03/13 17:05 (Externe Bearbeitung)