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 [2012/04/17 13:17]
stefan_miethke [suchen und ersetzen I]
admin_grundlagen:vim [2018/11/05 18:50]
127.0.0.1 Externe Bearbeitung
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:
  
-====== ​Navigationsbefehle ​======+  vimtutor 
 + 
 +====== ​Grundlagen ​====== 
 +===== Navigationsbefehle I =====
 {{:​admin_grundlagen:​adm-3a-hjkl-keyboard.jpg?​200|}} {{:​admin_grundlagen:​adm-3a-hjkl-keyboard.jpg?​200|}}
  
-====== suchen und ersetzen I ====== +Aufbau: ​[Anzahl] Befehl
-| /      | suchen ​                   | +
-.. Suchwort eingeben .. +
-| v      | visueller modus - zeichenweise ​         | +
-[Shiftv | visueller modus - zeilenweise ​         | +
-| [Strg] v | visueller modus - spaltenweise ​         | +
-.. Suchwort markieren .. +
-| c      | markierten text ändern ​   | +
-| I      | einfügen ​                 | +
-.. Ersatzwort eingeben +
-| <​ESC> ​ | Änderung beenden ​         | +
-| n      | nächster Treffer ​         | +
-| .      | letzen ​Befehl ​wiederholen |+
  
-====== copy & paste ====== +Beispiel: ''​10w''​ (10 Wörter weiter springen)
-| yy     | Zeile kopieren ​           | +
-| dd     | Zeile ausschneiden ​       | +
-| P      | einfügen ​                 | +
-| vwy    | Wort kopieren ​            | +
-| yw     | Wort kopieren ​            |+
  
-====== Fortgeschrittene Befehle ====== +| ''​w'' ​   | ein Wort weiter (**w**ord) | 
-Befehl ​Funktion ​+| ''​b'' ​   | ein Wort zurück (**b**ack) | 
-ZZ     speichern & verlassen ​+| ''​e'' ​   | zum nächsten Wortende (**e**nd)| 
-:x     speichern & verlassen ​|+| ''​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  ​|
  
-===== Suchen und Ersetzen II ===== +===== Änderungsbefehle I ===== 
-| Befehl | Funktion | +Aufbau: [''​Anzahl''​''​Befehl''​ ''​Anwendungsbereich''​
-''​:g/^$/d'' ​| Alle Leerzeilen löschen |  +
-''​:​%s/​suchwort/​ersatz/​gc'' ​| suchen und ersetzen, mit Bestätigung |+
  
-===== Dateinamen-Ergänzung a la Tab-Taste ===== +''​Anzahl''​ ist dabei optional. Es gibt an, wie oft der ''​Befehl'' ​ 
-Im Einfügemodus:​ +ausgeführt werden sollMit ''​Anwendungsbereich''​ bezeichne ich NavigationsbefehleSie werden benutzt, um sich innerhalb  
-  Strg+x f +der Datei zu bewegenManche Befehle erwarten keinen Anwendungsbereich.
-Mehr dazu: [[ http://​vimdoc.sourceforge.net/​htmldoc/​insert.html#​ins-completion | vim.org Dokumentation ]]+
  
-===== Mehrere Dateien bearbeiten ===== +Beispiel: ​''​cwERSATZTEXT''​ (Text bis zum nächster Wort durch ERSATZTEXT ersetzen)
-|''​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 ​ |+
  
-===== Konfigurationsdateien ohne Kommentare anzeigen ===== +^ c…    ^ ersetzen ​(**c**hange                  ​^ 
-:set fdm=expr +''​cw'' ​   | Wort ersetzen ​(change word            | 
-:set fde=getline(v:lnum)=~'^\\s*#'?​1:​getline(prevnonblank(v:​lnum))=~'^\\s*#'?​1:​getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0+| ''​cc'' ​   | Zeile ersetzen ​                         | 
 +| ''​C'' ​    | bis zum Ende der Zeile ersetzen ​        |
  
-====== Nützliche Informationen und Befehle ====== +^       ​^ ​                           ^ 
-Vim öffnen:+| .     | letzten Befehl wiederholen |
  
-vim <​Datein>​ - öffnet mir eine leere Datei mit dem Namen welche ich beim öffnen angegeben habe +==== Anwendungsbeispiel:​ suchen und ersetzen I ==== 
-vim + <Zeilennummer+ <​Datei>​ - öffnet mir eine leere Datei mit dem Namen welchen ich angegeben habe und springt in die angegebene Zeile +| /      | suchen ​                   | 
-vim . - Ich kann mit die Datei aussuchen welche ich öffnen willDurch den Punkt werden die Dateien aus dem aktuellen Verzeichnis angezeigt+|.. Suchwort eingeben .. || 
 +| ''​cw'' ​    | 1 Wort ersetzen ​   | 
 +|.. Ersatzwort eingeben ..|| 
 +| ''​<ESC>'' ​ | Änderung beenden ​         | 
 +| ''​n'' ​     | zum nächsten Treffer springen ​         | 
 +| ''​.'' ​     | Ersetzung wiederholen |
  
-Modis:+==== 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 |
  
-- Command/​normal mode +===== Visueller Modus ===== 
-- Insert mode (zum normalen schreiben+| ''​v'' ​     | markieren ​(visual| 
-- Ex mode (das was man kriegtwenn man im command-mode ":"​ drückt) +| ''​V'' ​     | markierenzeilenweise | 
-- Visual mode+| ''​Strg+v''​ | markieren, blockweise |
  
 +==== Anwendungsbeispiel:​ suchen und ersetzen II ====
 +| ''/'' ​     | suchen ​                   |
 +|.. Suchwort eingeben .. ||
 +| ''​vwc'' ​   | 1 Wort ersetzen ​   |
 +|.. Ersatzwort eingeben ..||
 +| ''<​ESC>'' ​ | Änderung beenden ​         |
 +| ''​n'' ​     | zum nächsten Treffer springen ​         |
 +| ''​.'' ​     | Ersetzung wiederholen |
  
-Command Mode:+==== 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
  
-im command-mode haben befehle ​den folgenden aufbau:+===== 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|
  
-[count][command][range]+====== Beispiel Texte ====== 
 +[[admin_grundlagen:​vim beispiel texte]] zum Üben
  
-oder+====== Suchen und Ersetzen III ====== 
 +^ Befehl ​                   ^ Funktion ^ 
 +| '':​%s/​suchwort/​ersatz/​g''​ | suchen und ersetzen (**s**ubstitute,​ **g**lobal) | 
 +| '':​g/​^$/​d'' ​              | Alle Leerzeilen löschen | 
  
-[command][count][range]+====== 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 ​]]
  
-[count] ist dabei optional. Es gibt an, wie oft [command] oder [range] ​ +====== Mehrere Dateien bearbeiten ====== 
-ausgeführt werden soll.+|''​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 ​ |
  
-Mit "​range"​ bezeichne ich sprungbefehle. Sie werden benutzt, um sich innerhalb ​ +====== Einstellungen ====== 
-der datei zu bewegen. Manche commands erwarten keine range.+===== Den vim.tiny smart machen =====
  
-Die wichtigsten Commands:+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
  
-delete - löschen +===== Groß-/​Kleinschreibung beim Suchen ignorieren ===== 
-y - yank - in den zwischenspeicher kopieren +  :set ignorecase
-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:+===== Konfigurationsdateien ohne Kommentare anzeigen ===== 
 +  ​:set fdm=expr 
 +  :set fde=getline(v:​lnum)=~'​^\\s*#'?​1:​getline(prevnonblank(v:​lnum))=~'​^\\s*#'?​1:​getline(nextnonblank(v:​lnum))=~'​^\\s*#'?​1:​0
  
-wort vorwärts springen +=====  Syntax-Highlighting einschalten ===== 
-b - wort rückwärts springen+  :​syntax on
  
-Beispiele:+===== Zeilennummern ein-/​ausschalten ===== 
 +  ​:set number 
 +  :set nonumber
  
-w - wort weiterspringen +===== Steuerzeichen anzeigen ===== 
-dw - wort löschen - command "​delete",​ reichweite "​cursor bis sprungende"​ (wort) einfach zu merken mit "del word"​ +  :set list
-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 ​ +====== Navigationsbefehle II ====== 
-kombiniert.+| {    | zum nächsten Absatz | 
 +| }    | zum vorherigen Absatz | 
 +| *    | | 
 +| #    | |
  
-Andere nützlichkeiten im command-mode:+====== Weitere Informationen und Befehle ====== 
 +Modi:
  
-. - letzes command wiederholen. +  * Command/​normal Mode 
-cw - wort austauschen. Wie "​dwi"​. "​change word" +  * Insert Mode (zum normalen Schreiben) 
-i - in den insert-modus wechseln +  * Ex Mode (das was man kriegt, ​wenn man im command-Mode ":"​ drückt) 
-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 +  * Visual Mode
-a - append -> wenn man etwas hinter dem cursor einfügen will +
-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:​+===== Ex Mode =====
  
-w - wort weiter springen ​     +^ Befehl ^ Funktion ^ 
-W - wie w, überspringt aber mehr (z.B. kommas) +| ZZ     ​| speichern & verlassen | 
-b - wort zurück springen +| :x     | speichern & verlassen | 
-B - wie b, überspringt aber mehr (z.B. kommas) +| :<​Datei>​ | Speichert es in einer neuen Datei| 
-- springt bis zum ende des wortes unter dem cursor +| :e | Eine andere Datei auf dem aktuellen Verzeichnis öffnen| 
-E - wie E, überspringt aber mehr (z.B. kommas) +| :/etc/passwd | Die Datei passwd öffnen| 
-{ } - absatz vor/​zurück ​springen. Sehr praktisch in einer .rhosts! +| :r /etc/hosts | Den Inhalt der angegebenen Datei an die Cursorposition ​des offenen Dokuments einlesen| 
-0 - pos1 +| :tabnew | Neuen Tab erstellen| 
-$ - ende +| :tabnext | In den nächsten Tab springen| 
-* - springt vorwärts zum nächsten vorkommen des wortes unter dem cursor +| :tabclose | Tab schließen| 
-# - springt rücwärts zum vorherigen vorkommen des wortes unter dem cursor+| :redo | Holt den Text wieder wenn ich zuviele undos gemacht habe| 
 +|| 
 +| :help <​Befehl>​| 
 +| :set all | Zeigt alle Befehle an in Kombination mit set|
  
-Suche:+====== Alternative Editoren ======
  
-/<was ich suche> (vorwärts) (mit n zum nächsten, mit strg + n zum vorherigen) +Eigentlich keine
-?<was ich suche> (rückwärts suche) +
- +
-Insert Mode: +
- +
-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.txt · Zuletzt geändert: 2022/09/28 14:25 (Externe Bearbeitung)