{"id":1700,"date":"2015-07-08T15:00:59","date_gmt":"2015-07-08T14:00:59","guid":{"rendered":"https:\/\/u-labs.de\/blog\/?p=1700"},"modified":"2015-07-08T15:21:28","modified_gmt":"2015-07-08T14:21:28","slug":"schnelleinfuehrung-in-den-texteditor-vi","status":"publish","type":"post","link":"https:\/\/u-labs.de\/portal\/schnelleinfuehrung-in-den-texteditor-vi\/","title":{"rendered":"Schnelleinf\u00fchrung in den Texteditor vi"},"content":{"rendered":"<p>Der Texteditor <strong>vi<\/strong> geh\u00f6rt zum Urgestein der meisten Linux- bzw. Unix-Distributionen und ist daher so gut wie immer automatisch an Board. Insbesondere viele Anf\u00e4nger meiden ihn jedoch, da seine Bedienung f\u00fcr unge\u00fcbte auf den ersten Blick kompliziert sowie verwirrend zugleich erscheint. Wer auf verschiedenen Systemen unterwegs ist, wird aber fr\u00fcher oder sp\u00e4ter nicht mehr um ihn herum kommen: Besonders auf kleinen, abgespeckten Distributionen wie sie auf NAS-Systemen oder Firewalls zum Einsatz kommen sind vermeindlich einfacherere Editoren wie <strong>nano<\/strong> oft nicht verf\u00fcgbar. Dieser Artikel zeigt, dass sich <strong>vi<\/strong> mit ein wenig Vorwissen und \u00dcbung auch von Einsteigern passabel bedienen l\u00e4sst.<\/p>\n<h3>\u00d6ffnen von Dateien<\/h3>\n<p>Das grunds\u00e4tzliche Syntax ist eigentlich selbsterkl\u00e4rend und unterscheidet sich von Editoren wie <strong>nano<\/strong> wenig:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nvi foo\r\n<\/pre>\n<p>\u00d6ffnet die Datei <strong>foo<\/strong>, wobei diese bei Nichtexistenz automatisch erzeugt und in das Dateisystem geschrieben wird, wenn man sie speichert.<\/p>\n<h3>Die Befehlsmodi<\/h3>\n<p>\u00d6ffnet man auf diesem Wege eine Datei und m\u00f6chte dessen Textinhalt bearbeiten, tut sich jedoch nichts: Die Eingaben werden schlicht ignoriert. Dies liegt daran, dass <strong>vi<\/strong> drei verschiedene Arbeitsmodi besitzt und in nur einem davon der Datei-Inhalt ver\u00e4ndert werden kann. Es ist daher unerl\u00e4sslich, diese drei Modi zu kennen:<\/p>\n<p><a href=\"https:\/\/u-img.net\/img\/6799Hb.jpg\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/u-img.net\/img\/6799Hb.jpg\" alt=\"\" \/><\/a><\/p>\n<div style=\"font-size: 10px; margin: -10px 0 10px;\">Die Infografik verwendet Icons des Autors <a title=\"Freepik\" href=\"http:\/\/www.freepik.com\" rel=\"nofollow\" target=\"_blank\">Freepik<\/a> von <a title=\"Flaticon\" href=\"http:\/\/www.flaticon.com\" rel=\"nofollow\" target=\"_blank\">www.flaticon.com<\/a>, welche unter der <a href=\"http:\/\/creativecommons.org\/licenses\/by\/2.0\/\" target=\"_blank\" rel=\"nofollow\">CC BY 3.0<\/a> lizenziert sind.<\/div>\n<p>Der Editor startet im <strong>Befehls-Modus<\/strong>, hier kann mit folgenden 4 Tasten navigiert werden:<\/p>\n<table style=\"margin-bottom: 10px;\">\n<tbody>\n<tr>\n<th>Taste<\/th>\n<th>Bedeutung<\/th>\n<\/tr>\n<tr>\n<td>H<\/td>\n<td>Ein Zeichen nach links<\/td>\n<\/tr>\n<tr>\n<td>L<\/td>\n<td>Ein Zeichen nach rechts<\/td>\n<\/tr>\n<tr>\n<td>J<\/td>\n<td>Eine Zeile nach unten<\/td>\n<\/tr>\n<tr>\n<td>K<\/td>\n<td>Eine Zeile nach oben<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Um Text bearbeiten oder einf\u00fcgen zu k\u00f6nnen, muss in den <strong>Einf\u00fcge-Modus<\/strong> gewechselt werden. Meistens benutzt man daf\u00fcr die Taste <span class=\"light-keys\"><kbd>i<\/kbd><\/span>, hierbei wird der geschriebene Text vor der aktuellen Cursorposition angef\u00fcgt. Heutzutage zeigen alle aktuelleren vi-Versionen links unten den aktuellen Modus an, sofern dieser gewechselt wurde:<\/p>\n<p><figure id=\"attachment_1725\" aria-describedby=\"caption-attachment-1725\" style=\"width: 402px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/u-labs.de\/wp-content\/uploads\/2015\/03\/vi-insert-mode.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1725\" src=\"https:\/\/u-labs.de\/wp-content\/uploads\/2015\/03\/vi-insert-mode.png\" alt=\"Vi zeigt den derzeit aktiven Modus an\" width=\"402\" height=\"114\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2015\/03\/vi-insert-mode.png 402w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2015\/03\/vi-insert-mode-300x85.png 300w\" sizes=\"auto, (max-width: 402px) 100vw, 402px\" \/><\/a><figcaption id=\"caption-attachment-1725\" class=\"wp-caption-text\">Vi zeigt den derzeit aktiven Modus an<\/figcaption><\/figure><\/p>\n<p>Hat man die gew\u00fcnschten \u00c4nderungen vorgenommen und m\u00f6chte den Editor beenden, so funktioniert dies ausschlie\u00dflich im <strong>Befehls-<\/strong> oder <strong>Kommandozeilen-Modus<\/strong>. Zuerst muss der Einf\u00fcge-Modus durch dr\u00fccken von <span class=\"light-keys\"><kbd>ESC<\/kbd><\/span> verlassen werden, nun befinden wir uns im <strong>Befehls-Modus<\/strong>. Von dort aus kann man mit dem Shortcut <span class=\"light-keys\"><kbd>Z<\/kbd><\/span> <span class=\"light-keys\"><kbd>Z<\/kbd><\/span> vi dazu anweisen, die vorgenommenen \u00c4nderungen zu speichern und sich anschlie\u00dfend zu beenden. Zu beachten ist, dass beide Z gro\u00df geschrieben werden m\u00fcssen &#8211; also mit Shift-Taste dr\u00fccken.<\/p>\n<p>Aber was ist wenn man zwar (versehentlich) \u00c4nderungen vorgenommen hat, diese aber nicht speichern m\u00f6chte? Hier hilft uns der <strong>Kommandozeilen-Modus<\/strong> weiter, der durch Eingabe eines <span class=\"light-keys\"><kbd>:<\/kbd><\/span> gestartet wird. Im folgenden werden die f\u00fcr den Anfang wichtigsten Befehle aufgelistet:<\/p>\n<table style=\"margin-bottom: 10px;\">\n<tbody>\n<tr>\n<th>Befehl<\/th>\n<th>Bedeutung<\/th>\n<\/tr>\n<tr>\n<td>w<\/td>\n<td>Speichert die \u00c4nderungen (<b>w<\/b>rite)<\/td>\n<\/tr>\n<tr>\n<td>q<\/td>\n<td>Beendet vi (<b>q<\/b>uit)<\/td>\n<\/tr>\n<tr>\n<td>q!<\/td>\n<td>Beendet vi und ignoriert vorgenommene \u00c4nderungen<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Ein gro\u00dfer Vorteil von vi gegen\u00fcber anderen Editoren ist, dass die Befehle einfach aneinandergereiht und so kombiniert werden k\u00f6nnen, ohne dass dadurch eine weitere Tastenkombination gedr\u00fcckt werden muss. Beispielsweise kann man durch Eingabe von <strong>wq<\/strong> die \u00c4nderungen speichern und vi beenden. Dies hat den selben Effekt wie <span class=\"light-keys\"><kbd>Z<\/kbd><\/span> <span class=\"light-keys\"><kbd>Z<\/kbd><\/span> im Befehls-Modus.<\/p>\n<h3>Warum vi?<\/h3>\n<p>Neben dem Zwang, dass Editoren wie <strong>nano<\/strong> nicht auf jedem System ohne weiteres installiert werden k\u00f6nnen oder d\u00fcrfen, gibt es noch andere Gr\u00fcnde die f\u00fcr den Einsatz von vi sprechen: Der Editor ist sehr m\u00e4chtig und umfangreich, es gibt kaum etwas das er nicht kann. Zugegebenerma\u00dfen ist die Bedienung anfangs sehr gew\u00f6hnungsbed\u00fcrftig, besonders wenn man zuvor mit nano oder vergleichbaren Editoren gearbeitet hat. Aber wenn man vi eine Zeit lang einsetzt und dementsprechend routiniert geworden ist, kann in Kombination mit dem enormen Funktionsfumfang sehr effizient gearbeitet werden.<\/p>\n<p><b>Ein Beispiel:<\/b>\nEs sollen \u00c4nderungen an der Konfigurationsdatei eines Webservers oder anderen Dienstes vorgenommen werden. Mehrere Zeilen m\u00fcssen entfernt und durch die neuen ersetzt werden. Mit vi eine leichte Aufgabe: Man \u00f6ffnet die Datei und blendet mit dem Befehl <strong>:set number<\/strong> die Zeilennummern ein, sofern man dies nicht bereits in der Konfiguration von vi entsprechend eingestellt hat. Nun grenzt man den zu l\u00f6schenden Bereich anhand der Zeilennummern ein und l\u00f6scht ihn durch Eingabe von <strong>:n,md<\/strong> wobei n f\u00fcr die erste und m f\u00fcr die letzte Zeile steht. Der Befehl <strong>:5,15d<\/strong> w\u00fcrde den Inhalt von und einschlie\u00dflich mit Zeile 5 bis 15 l\u00f6schen. Andere Editoren bieten eine solche Funktion teilweise gar nicht oder nur \u00fcber Umwege, ein etwas ge\u00fcbter vi-Nutzer erledigt diese Aufgabe in wenigen Sekunden.<\/p>\n<p>Selbstverst\u00e4ndlich kann vi noch viel mehr, den gesamten Funktionsumfang kann man in der Dokumentation nachlesen. Dieser Artikel soll lediglich einen Schnelleinstieg f\u00fcr Neulinge bieten, die lediglich eine Datei bearbeiten m\u00f6chten, aber von vi buchst\u00e4blich <i>erschlagen<\/i> wurden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der Texteditor vi geh\u00f6rt zum Urgestein der meisten Linux- bzw. Unix-Distributionen und ist daher so gut wie immer automatisch an Board. Insbesondere viele Anf\u00e4nger meiden ihn jedoch, da seine Bedienung f\u00fcr unge\u00fcbte auf den ersten Blick kompliziert sowie verwirrend zugleich erscheint. Wer auf verschiedenen Systemen unterwegs ist, wird aber fr\u00fcher oder sp\u00e4ter nicht mehr um &#8230;<\/p>\n","protected":false},"author":5,"featured_media":1759,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[74],"tags":[77,75,76],"class_list":["post-1700","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","tag-editor","tag-linux","tag-vi"],"_links":{"self":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/1700","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/comments?post=1700"}],"version-history":[{"count":54,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/1700\/revisions"}],"predecessor-version":[{"id":2770,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/1700\/revisions\/2770"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media\/1759"}],"wp:attachment":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media?parent=1700"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/categories?post=1700"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/tags?post=1700"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}