From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 2194
Lines: 48
X-File: http://www.guckes.net/talks/vim/vim_advanced.txt
= Vim für Fortgeschrittene =
== Vim Advanced ==
Titel: Vim für Fortgeschrittene
Untertitel: Reiter+Register, Tags+Textobjekte, Fenster+Viminfo
Untertitel: Fenster+Reiter+Register+Tags+Textobjekte, Session+Viminfo
Zielgruppe: Für jene, die den Vimtutor gelesen haben,
mit ein paar Kommandos den Curors bewegen können,
und ihren Text auch abzuspeichern wissen.
Das sollte schon ausreichen, um die Kommandos
in diesem Workshop hinzuzufügen.
Abstract: "Barrieren einreissen".
Eine grosse Barriere ist es ja immer wieder,
dass man bei Programmen nach jeden Neustart
wieder von vorne beginnen muss. Man sucht
nach denselben Worten/Mustern, man gibt
dieselbe Textbausteine wieder erneut sein.
Wenn wir Vim aber nur anweisen, die bereits
eingegeben Daten vor dem Beenden zu speichern,
dann können wir das alles wiederverwenden.
Und die Barriere des "alle nochmal machen"
verschwindet dann so langsam - und spart Zeit!
Beschreibung (kurz):
Wir weisen Vim an von nun ab die Daten zu speichern.
Wir machen uns Abkürzungen per "Tags", um immer wieder
verwendete Dateien über ein Bookmark/Tag anzuspringen.
Wir teilen den Bildschirm erst in Tabs und darin in Fenster ein,
werden Texte in Clipboards/Registern speichern. Das ganze
wird dann als "Session" gespeichert - und wieder aufgenommen.
Dazu noch ein bischen die Daten durch externe Programme "filtern" und
Textbausteine/Textobjekte schneller kopieren, löschen und verschieben.
Das dürfte für alle, die Vim auch zu Editieren
von Emails verwenden, sehr von Hilfe sein.
Beschreibung (lang):
Startet ihr den "vi" immer nur mit einer Datei - "vim dateiname"?
Danach nur noch Speichern und sofort wieder Beenden? Und dann
müßt ihr immer wieder dieselben Suchanfragen eintippen?
Das ist schon ein bisserl mühsam, oder nicht?
Wusstet ihr, dass der Vim 26 Register ("Clipboards") hat und
sowohl Eure Kommandos und Suchanfragen als auch die Einteilung
von Reitern und Fenster speichern und euch nach dem nächsten
Start wieder zur Verfügung stellen kann? Leute - all das könnt
ihr *wieder-ver-wenden*. Weniger Tippen - mehr Spaß! :-)
Darum werden wir oft verwendete Texte (zB Begrüßung und Unterschrift,
Telephonnummer, Signatur) in diese Register hineingeben und jene dann in
der "viminfo datei" (~/.viminfo) speichern lassen. [Dazu reicht es, der
Option "viminfo" noch ein "n" hinzuzufügen per ":set vi+=n". Das geben
wir noch in die Setupdatei ("vimrc"), damit es beim nächsten Start wieder
vorhanden ist.] Auch Befehle und Suchmuster, sowie die Liste der Puffer
die lokalen und globalen Markierungen sind dann wieder verwendbar. \o/
Dann werden wir den Bildschirm in Reiter (Tabs) und diese in Fenster einteilen.
[Mit ":mks!" schreiben wir diese Daten dann in die Datei "Session.vim".
Vim wird jene dann beim Start mit "vim -S" wieder aufnehmen.]
Die Einteilungen sind nach dem Start wieder da - und das Arbeiten kann weitergehen!
Wenn noch Zeit ist, dann machen wir uns noch Abkürzungen per "Tags"
(Bookmarks), um direkt auf Orte in Dateien zuzugreifen. Dann kann man
mit ":tag pw" in die Passwortdatei springen, oder mit ":tag note" in
die eigene Datei mit den Notizen. Ich verwende zB ":tag cal", um in
meinen Kalender zu gehen. Und ratet mal, was ":tag todo" macht. ;-)
Das dürfte für alle, die Vim auch zum Editieren von Code und Emails
verwenden, sehr von Hilfe sein. Denn von nun an gilt: Der Vim rennt
weiter - mindestens bis zum Logout - und innerhalb der window manager
screen und tmux auch noch weiter: Bis zum nächsten Reboot. Für Logins
auf einem Server heißt das: Bis zum nächsten Kernel update oder Tausch
des RAM. Oder bis jemand im Rechenzentrum den falschen Stecker zieht.
;-) Und die Dateien (vimrc, viminfo, session file) können natürlich
auch auf andere Maschinen mitgenommen und weiterverwendet werden.
Hier ist der Plan: http://www.guckes.net/talks/vim/vim_advanced.txt
Bitte probiert es aus und laßt mich wissen, ob ihr damit zurechtkommt.
Hinweis: Bitte testet die Kommandos in diesem Text
und sendet mir eine Rückmeldung - danke! :-)
HINT: please try those commands herein and
please do send me some feedback - thanks! :-)
Beschreibung (OCG):
Ziel: Die Wiederverwendung von Kommandos, Suchanfragen,
die Liste der Dateien, Markierungen und Sprünge - sowie
des Layouts, dh der Tabs (Reiter) und der Fenster darin.
Dafür müssen wir nur der Option "viminfo" ein 'n' geben,
und den Befehl ":mks" verwenden. Das war's auch schon.
Beim Editieren werden wir auch diese Dinge verwenden:
Textobjekte (Worte, WORTE, Sätze und Abaätze), Markieren von Texten
per Visual Mode (Markieren von ganzen Zeilen, von rechteckigen
Blöcken, sowie Anwendung von Kommandos auf denselben); Register
(Clipboards), die Texte enthalten und Tags (Bookmarks) mit
denen man in Dateien an bestimmte Stellen springen kann.
Sie befinden sich hier:
http://www.guckes.net/talks/vim/vim_advanced.txt
http://www.guckes.net/talks/vim/vim_advanced.html
Created: Sun Jan 8 23:42:05 CET 2017
Latest change: Mon Jun 26 03:42:23 CEST 2017
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 639
Lines: 29
= Fahrplan =
== Outline ==
* Start
* VimInfo
* Tags
* Fenster
* Reiter (Tabs)
* Textobjekte
* Register
== Hinweise ==
Kommende Events:
2017-02-10 Fr 18h Vortrag Richard Stallman an der TUB Architektur
2017-03-10/12 Fr/Sa/So Chemnitzer Linux-Tage: Turmbrauhaus, KSP, Workshops
2017-04-14/17 Fr-Mo EasterHegg in Mühlheim a.Rhein (nahe Frankfurt)
2017-05-25/28 Fr-So LUG Camp in Bredstedt
2017-08-04/08 Fr-Di SHA2017 Camp in Zeewolde (NL)
Weitere Events -> http://cal.guckes.net
== Publikum ==
ein paar Fragen:
* Wer verwendet Vim?
* Wer will am Workshop teilnehmen?
* Wer hat ein Gerät mitgebracht?
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 655
Lines: 14
= Weiteres =
== More ==
Eine Sessiondatei beinhaltet die folgenden Dinge:
- Die History der Kommandozeile. | The command line history.
- Die History der Suchanfragen. | The search string history.
- Die History der Inputzeile. | The input-line history.
- Inhalte der Register. | Contents of non-empty registers.
- Marker in den Dateien. | Marks for several files.
- Dateimarker. | File marks, pointing to locations in files.
- Die Liste der Suchmuster. | Last search/substitute pattern (for 'n' and '&').
- Die Liste der Puffer. | The buffer list.
- Globale Variablen. | Global variables.
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 506
Lines: 24
= Start =
== Boot ==
Vorbereitungen für einen effizienten Start.
== zuhause ==
Hilfreiche Tools installieren:
curl, wget
screen, tmux
mosh+ssh+scp
bash, zsh
Den "vimtutor" aufrufen, lesen und ausprobieren (ca 20min - 1h).
$ vimtutor
== workshop ==
Einen Sitzplatz auswählen, den Computer mit Strom verbinden,
Computer booten, Einloggen, ein Terminal öffnen,
dann screen oder tmux, und schliesslich Vim starten.
Mit dem Netzwerk verbinden. dem Nachbarn "hallo" sagen. :-)
"here we go..."
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 87
Lines: 8
= Zusammenfassung =
$ vim -u NONE vim ohne setupdatei starten
:set nocp non-compatible
:ls list all buffers
q: open the command line window
:q close that window
q/ open the search string window
:q close that window
:set viminfo+=n
:se vi+=n
in die setupdatei schreiben
-> ~/.vimrc
Fenster:
:e /etc/passwd Editiere Passwortdatei
:split Aktuelles Fenster horizontal teilen
:new Neues Fenster aufmachen
:tabnew Mach ein neues Tab auf
:e /usr/share/common-licenses/LGPL-3 LGPL Text editieren
:vsplit Aktuelles Fenster vertikal teilen
:new Neues Fenster aufmachen
:enew neuen Puffer im aktuellen Fenster aufmachen
:mks! Generiere eine Datei "Session.vim"
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 327
Lines: 16
= Setup File vimrc =
Einlesen eines minimalen Setups:
:r http://www.guckes.net/Setup/vimrc.minimal
Abspeichern als "vimrc" im "Heimatverzeichnis" ($HOME):
:w ~/.vimrc
Ausführen des Inhalts:
:so %
Wohlgemerkt: Wir müssen Vim eigentlich nicht verlassen.
Es darf weiterlaufen bis der Rechner rebootet wird. ;-)
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 2229
Lines: 71
= VimInfo =
Die "Viminfo" ist eine Datei, in der all die Daten gespeichert
werden, die sich im Laufe von Editing Sessions so ansammeln.
Per Grundeinstellung wird keine Viminfo-Datei angelegt.
Das sollten wir gleich mal ändern..
Erst ":set vi=" eingaben - und dann mal TAB drücken.
Das sollte dann den aktuellen Wert der Option anzeigen.
:set vi='100,<50,s10,h
Der Cursor sollte dann am Ende der Zeile sein.
Hier nun ein ",n" hinzufügen:
:set vi='100,<50,s10,h,n
Damit ist Vim angewiesen all die weiteren Infos zu speichern.
Der Name der Datei ist "~/.viminfo".
:help viminfo-n
Die Zeichen "'" (tick), "<" (kleiner), "s" und "h" bedeuten:
' Markierungen, jumplist, changelist :help viminfo-'
< max Zeilen für Register :help viminfo-<
h hlsearch Effekt abschalten :help viminfo-h
s max size für Register in Kilobyte :help viminfo-s
In Worten:
"Speichere die Markierungen, die jumplist und die changelist,
sowie die Register mit maximal 50 Zeilen bzw 10KB,
und schalte den hlsearch Effekt ab."
Die Liste der Änderungen (changelist) und Sprünge (jumplist)
kann kann man mit ":changes" und ":jumps" anzeigen lassen.
TODO Markierungen erklären.
TODO hlsearch erklären.
Meine Einstellung ist diese:
:set vi=<200,%,'200,/100,:100,@100,f1,h,n~/.vim/viminfo
<200 max 200 Zeilen für Register
'200 max 200 Markierungen, jumplist, changelist
/100 max 100 Einträge der Suchmuster
:100 max 100 Einträge der Kommandozeile
@100 max 100 Einträge der Input-Line
f1 Dateimarkierungen speichern
h hlsearch Effekt abschalten
n der Name der viminfo Datei
== Aufgaben ==
* Die Option "vi" anpassen (mit einem "n" in der Liste),
ein paar Kommandos und Suchen ausführen,
vim beenden, und vim wieder neu starten.
* Existiert die Datei ~/.viminfo nun? Mal mit "less" anschauen.
* und dann nachsehen, ob die Daten auch
wieder geladen wurden und verfügbar sind,
zB ':' bzw '/' eingeben und mit PfeilHoch
in der History zurückgehen
=== Hilfe ===
:help viminfo
:help :changes
:help :jumps
:help hlsearch
:help changelist
:help jumplist
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 2287
Lines: 82
= Tags =
"Tags" sind Abkürzungen (Bookmarks) für "Orte" in Dateien,
zu denen man mit dem ":tags" Befehl springen kann.
Legen wir mal ein tags-datei an.
Ich nehme da "~/.vim/mytags":
$ mkdir -p ~/.vim; cd ~/.vim; touch mytags
Damit liegt die Datei schonmal im Verzeichnis ~/.vim,
dass man sehr leicht zusammen kopieren kann, um es
dann in den Account auf einem anderen Rechner zu kopieren.
Dem Vim macht man diese Datei über die Option "tags" bekannt:
:set tags=~/.vim/mytags
Nun legen wir ein "Tag" an. Dieser besteht aus drei Teilen:
tag: pw
file: /etc/passwd
command: $
Und die werden in die tagsdatei in einer Zeile eingetragen:
pw /etc/passwd $
Wohlgemerkt:
Die drei Angaben sind jeweils durch ein TAB voneinander getrennt:
tagname TAB dateiname TAB kommando
pw TAB /etc/passwd TAB $
Wenn man ":set list" einschaltet, dann sollte
man die TABs als "^I" (CTRL-I) sehen:
pw^I/etc/passwd^I$
Und mit ":set listchars=>." sieht man die TABs dann mit
'>' beginnen - und die Zeichen in der Expansion als Punkte:
pw>..../etc/passwd>....$
Nach dem Eintrag können wir nun das Tag verwenden:
:tag tagname
Beispiel:
:tag pw
Dieser Befehl öffnet mir die Passwortdatei
/etc/passwd - und zwar am Ende der Datei,
da das Kommando ":$" dorthin springt.
Das Ganze kann man also lesen wie einen "bookmark",
dh eine Abkürzung, die auf eine Datei verweist -
zusammen mit einem auszuführenden Befehl.
Vim erwartet, dass die Einträge sortiert sind,
um so schneller ein Tag finden zu können.
Aber solange man nicht hunderte davon hat,
lohnt es sich nicht, die Datei zu sortieren.
Also schaltet man das "tagbsearch" aus:
:set notbs
Damit ist Vim nun der Ort der eigenen Tagsdatei bekannt,
und die Einträge zielen dann auf die Dateien - mitsamt
den Kommandos, um den richtigen Ort anzuspringen.
== Aufgaben ==
* Erzeuge ein Tag "h", das auf /etc/hosts zeigt und dort in die Zeile #3 springt.
* Erzeuge ein Tag "v", das auf deine Vim Setupdatei (aka "vimrc") zeigt
und dort auf die erste Zeile mit "NEU" springt.
* Erzeuge ein Tag "b", das auf die Setupdatei deiner Login Shell "bash"
(also "~/.bashrc") zeigt und dort in die Zeile #23 springt.
=== Hilfe ===
:help tags-and-searches
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 1044
Lines: 31
= Fenster =
== Windows ==
Es gibt einige Befehle, die Fenster öffnen, teilen, bzw verschieben.
zB ":new", ":split", ":vsplit", sowie ":close" und ":quit".
Einfacher geht das mit den Window Commands, die mit CTRL-W beginnen:
:new edit a new buffer -> CTRL-W n
:sp split buffer -> CTRL-W s
:vsp split vertically -> CTRL-W v
:only only this window -> CTRL-W o
:close close window -> CTRL-W c
:quit quit window -> CTRL-W q
[2017-02-05]
Der Unterschied zwischen ":close" und ":quit" ist:
Ein ":close" kann das letzte Fenster *nicht* schliessen.
Eventuell will man sich daher ":close" angewöhnen,
damit man Vim damit nicht aus Versehen schliesst. ;)
== Aufgaben ==
* Öffne ein neues Fenster, teile es mehrfach horizontal
und vertikal, und schließe die Fenster wieder.
* Bewege den Cursor in andere Fenster mit "CTRL-W hjkl".
* Finde heraus was "CTRL-W f" bzw "CTRL-W F" macht.
* Finde heraus was "CTRL-W HJKL" macht.
TODO: Fenster vergrößern bzw verschieben
=== Hilfe ===
:help CTRL-W
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 903
Lines: 38
= Reiter =
== Tabs ==
Mit dem ":tabnew" Kommando öffnet man einen "Tab" aka "Reiter".
:tabnew
Innerhalb jedes Tabs kann man dieses mit den vorher beschriebenen
Fensterkommandos diese "splitten" und arrangieren.
Und mit den Kommandos ":tabprev" und ":tabnext"
geht man zu dem Tab nach links bzw rechts.
Am Anfang bzw am Ende der Tableiste geschieht dann
jeweils ein "wrap around" zum Ende bzw Anfang.
:tabnext
:tabprev
Schneller geht es mit den Befehlen
"gt" für ":tabnext" und "gT" für ":tabprev".
gt -> :tabnext
gT -> :tabprev
Ich habe mir "Bild^" (PgUp) und "Bildv" (PgDn)
zum Wechseln zwischen den Tabs definiert:
:map <PgUp> :tabp<cr>
:map <PgDn> :tabn<cr>
Und mit den folgenden Farbdefinitionen sehe ich die Titel besser:
:hi tablinesel ctermbg=black ctermfg=yellow
:hi tabline ctermbg=black ctermfg=green
=== Hilfe ===
:help tabpage
:help key-notation
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 1636
Lines: 50
= Textobjekte =
== text objects ==
Vim kennt "Textobjekte", dh Wort, WORT, Satz und Absatz.
Diese können einfach kopiert, gelöscht bzw geändert werden.
Beim Kopieren sieht man keine Änderung,
darum verwende ich in den Beispielen hier nur
Löschung (Kommandos initiiert mit 'd') und
Änderung (Kommandos initiiert mit 'c').
diw delete inner Word
ciW change inner WORD
Unterschied "Word" vs "WORD":
"Words" bestehen aus den Zeichen, die
in der Option "iskeyword" angegeben sind.
Default ist "@,48-57,_,192-255"
@ die Zeichen des Alphabets, "a-zA-Z"
48-57 die Ziffern 0 bis 9
_ der Unterstrich
192-255 À-ÿ (high-bit Zeichen)
Unterschied "change" vs "delete":
Bei "change" wird zwar genauso gelöscht,
aber danach in den Insert Mode gewechselt.
Also kann man gleich die Ersetzung tippen.
Unterschied "inner" vs "all":
dip delete inner paragraph
dap delete all paragraph
Bei "all" werden die nachfolgenden Leerzeilen mitgelöscht.
Diese möchte man als "Trenner" zu anderen Absätzen mitnehmen,
wenn man den Absatz dann woanders wieder einfügt.
== Aufgaben ==
* Öffne /usr/share/common-licenses/GPL-3 (zB so: Platziere
den Cursor auf den Dateinamen und tippe "gf"), dann liste alle
Zeilen, die das Wort "freedom" enthalten (":g/freedom/nu"),
springe zu einer dieser Zeilen (":22" oder "22G"),
selektiere den aktuellen Satz ("vis"), kopiere diesen ("y"),
öffne einen neuen Puffer ("CTRL-W n") und
für den kopierten Satz dort ein ("p").
* Aktuellen Absatz ein- bzw ausrücken mit ">ip" und "<ip"
=== Hilfe ===
:help text-objects
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 2146
Lines: 62
= Register =
Ein Register verhält sich wie ein Clipboard:
Man kann Daten darin speichern.
Jeder Kopier- oder Löschbefehl
schreibt in das "default register".
Dessen Inhalt wird mit einem "paste"
('p' oder 'P) wieder eingefügt.
Allerdings gibt es nicht nur das default register,
sondern auch ein Register mit dem Namen 'a'.
Dieses verwendet man, indem man es vor dem Kopieren/Löschen benennt,
und zwar mit '"a' - also erst die Anführungszeichen und dann das 'a':
"ayy
Lies: "verwende Register 'a' - kopiere aktuelle Zeile"
oder: "in das Register 'a' kopiere die aktuelle Zeile".
Der Inhalt des Register bleibt auch erhalten,
wenn man das default register verwendet.
Das Einfügen des Registers 'a' geht ebenso:
"ap
"Vom Register 'a' - paste."
Man muß ein bischen umdenken, weil man erst das zu nutzende
Register benennen muß, bevor man kopiert bzw löscht.
Es gibt auch ein Register 'b'.. und 'c'.. usw - bis 'z'.
Damit gibt es insgesamt sechsundzwanzig (26) Clipboards.
[Und das nun schon seit 40 Jahren. Warum nur verkauft man
uns immer noch Editoren, die nur *ein* Clipboard haben?]
[2017-02-05]
Man kann Text auch erst auswählen über die Befehle des Visual Mode
und dann den selektierten Text in ein Register kopieren, zB:
Mit "vip" den aktuellen Absatz "visuell markieren",
und dann mit '"ay" in den Register 'a' kopieren.
Zu lesen als "verwende Register 'a', kopiere".
== Aufgaben ==
* Schreibe eine Zeile mit "mit freundlichen Grüßen"
und kopiere diese in das Register 'g'.
* Schreibe eine Zeile mit deiner Telephonnummer
und kopiere diese in das Register 't'.
* Erzeuge einen kleinen Text mit diesen vier Zeilen:
(1) deinem Namen und Emailadresse
(2) deiner Homepage und Telephonnummer
(3) deinem Cryptoschlüssel (gpg:1234ABCD)
(4) dessen Fingerprint (1234 5678 ABCD ..)
Kopiere diese Zeilen in das Register 's' ("signature").
* Schau dir diese Register mit ":reg gts" an.
* Schreibe eine E-Mail und füge die Textbausteine
im Insert Mode über "CTRL-R x" ein - wobei
'x' der Buchstabe/Name des Registers ist.
=== Hilfe ===
:help registers
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 283
Lines: 7
= Zusammenfassung =
Dein Vim sollte nun vor jedem Beenden seine Daten
in die 'viminfo' Datei speichern und von dort bei
jedem Neustart die gespeicherten Daten wieder laden,
um sie dir zum Editieren zur Verfügung stellen.
Möge dies dein Editieren einfacher und schneller machen. :-)
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 299
Lines: 12
= Hausaufgabe =
Feedback geben/schicken. :-)
* Wie ist es gelaufen?
* Was hat gefallen - und was nicht?
* Was hat noch gefehlt?
* Was machen wir das nächste Mal?
* Wo sehen wir uns wieder? -> http://cal.guckes.net
-> Sven Guckes chemnitz2017@guckes.net
GPG-Schlüssel: 8000R/EAB97F200185391B
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 164
Lines: 7
= Kür =
== Filtering ==
Idee: Zeilenblock wird als Eingabe eines externen Kommandos
gegeben - und dessen Ausgabe ersetzt dann die Eingabe.
TODO: link
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 827
Lines: 29
= Sessions File =
Eine "Session" ist eine Datei, die alle Einstellungen (Optionen)
enthält - und dann noch einiges mehr, wie zB Mappings, die Liste
der Puffer, die Fenster mit ihren Positionen, und globale Variablen.
Einfach mal den Befehl ":mks" ("make session") aufrufen.
Dieser sollte dann die Datei "Session.vim" erzeugen.
Vim beenden - und erneut aufrufen. Dann das Session.vim
mittels ":source" einlesen lassen zur Wiederherstellung.
also so:
:mks
:qa
$ vim
:so Session.vim
Für verschiedene Projekte kann man somit auch andere Layouts haben.
== Aufgaben ==
* Ein paar Änderungen vornehmen. Fenster erzeugen -
vergrößern und verkleinern. Andere Dateien laden.
Dann mit ":mks vim-session" ein neue Session abspeichern.
=== Hilfe ===
:help session-file
:help viminfo-file
:help :mks
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 451
Lines: 24
TUEBIX 2017-06-24
fragen+antworten:
Wie kopiert man Text *in* die Kommandozeile?
Text kopieren und dann per "register insert",
"CTRL-R + Registername" aus dem Register holen, zB "CTRL-R 0".
Wortzusammensetzung
hand + schuh -> handschuh
so werden worte schnell lang.. zB:
Heizölrückstoßabdämpfung
die Eingabe von langen Wörtern kann man sicher erleichtern mit Abkürzungen:
iab YDD Donaudampfschifffahrtgesellschaftskapitaenwitwenrentengesetzzusatzparagraph
Philipp Kammerer: "Vim: The First contact"
page: http://www.tuebix.org/2017/programm/philipp-kammerer-vim-the-first-contact
link: http://tinyurl.com/tuebix2017-vim-party Beispieldateien in der ownCloud
suche+ersetze -> substitution -> :s
:s/[fF]oo[0-9]/bar/
":s" ersetzt nur in der aktuellen zeile.
"substitution range" ("von,bis"):
":23,42s" ersetzte von zeile #23 bis zeile #42.
":1,$s" ersetzt von der ersten bis zur letzten zeile.
":%s" ersetzt von der ersten bis zur letzten zeile. "1,$" == "%"
":s" ersetzt per default nur den ersten
treffer (first match) in jeder zeile.
mithilfe des "flag" 'g' sucht man dann bis jeweils
zum zeilenende "global" nach allen weiteren treffern.
":s/IN/OUT/g"
nein, man kann keine minimale/maximale trefferanzahl angeben. (bei "sed" geht da aber.)
mit dem flag 'c' wird man nach bestätigung (confirmation) gefragt.
"global command"
:g/re/p -> "grep"
anwendung des globals commands:
http://www.guckes.net/Setup/vimrc.forall
http://www.guckes.net/Setup/vimrc.mine
diese Dateien enthalten viele Kommentare.
alle kommentierte zeilen kann man löschen mit
dem "global command" ":g/^ *"/d" -> sehr viel kleiner!
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 451
Lines: 24
= TODO =
* grepping through all open buffers.. ":grep"?
* Eine Setupdatei für diesen Workshop erzeugen
* nützliche Einstellungen:
:set hidden
:set showcmd
:set list listchars=tab:>_,trail:_
:read ~/.signature
* Kommandos zum Schreiben+Beenden
:w write into file
:w! write! into file
:wq write+quit
:x write+quit
ZZ write+quit
:q quit current window
:qa quit all windows
:qa! quit all - no saving
:q! quit - no saving
ZQ quit - no saving
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 77
Lines: 5
= Credits =
* Bjørn Bürger (master of penguins) - Korrekturlesen
DANKE! :)
From 2017-04-28-graz@guckes.net Fri Apr 28 15:45:00 2017
Vim Advanced
Status: RO
Content-Length: 740
Lines: 15
= Events =
event: "Vim Advanced" - Berliner Linux User Group (BeLUG)
place: http://www.in-berlin.de/space Lehrter Str. 53, 10557 Berlin
url: http://www.belug.de/aktivitaeten-kalender/vim20170201.html
contact: Sven Guckes 2017-02-01-belug@guckes.net
announce: https://twitter.com/guckes/status/826483482285182977
event: "Vim Advanced" - Chemnitzer LinuxTage (CLT) "Barrieren einreissen"
url: https://chemnitzer.linux-tage.de/2017/de/programm/beitrag/342
contact: Sven Guckes chemnitz2017@guckes.net
announce: https://twitter.com/guckes/status/826483482285182977
textpad: https://titanpad.com/1tehwzCABd
event: "Vim für Fortgeschrittene" -
url: http://luga.at/veranstaltungen/vim-2017-04-26/
contact: Sven Guckes 2017-04-26-luga-wien@guckes.net
announce: https://twitter.com/guckes/status/854811976450670598
Ort: Österreichische Computer Gesellschaft (OCG)
Wollzeile 1-3, 1010 Wien - 1. Stock
http://www.osm.org/relation/2446068
Organisation: Linux User Group Austria (LUGA) www.luga.at
http://luga.at/veranstaltungen/
textpad: https://events.titanpad.com/2016-04-26-vim-advanced
event: "Vim für Fortgeschrittene" - Grazer Linuxtage 2017 (GLT17)
url: https://glt17-programm.linuxtage.at/events/241.html
https://glt17-programm.linuxtage.at/speakers/159.html
contact: Sven Guckes graz2017@guckes.net
announce: https://twitter.com/guckes/status/... TODO
textpad: TODO
vim: set et fenc=latin1 ft=sven tw=999 nowrap: THPXRF EOF