vimtext editing at the speed of thought
Stephan Rave Software-Tool Seminar23. Oktober, 2013
living knowledgeWWU Münster
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 2 /25
Was ist ein Text-Editor?
cutecat.odt∈
(Z ∩ [0, 255])k
(x1, . . . , xk)7→(ASCII (x1), . . . ,ASCII (xk))
(x1, . . . , xk)7→
OpenOffice(x1, . . . , xk)
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 2 /25
Was ist ein Text-Editor?
cutecat.odt∈
(Z ∩ [0, 255])k
(x1, . . . , xk)7→(ASCII (x1), . . . ,ASCII (xk))
(x1, . . . , xk)7→
OpenOffice(x1, . . . , xk)
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 2 /25
Was ist ein Text-Editor?
cutecat.odt∈
(Z ∩ [0, 255])k
(x1, . . . , xk)7→(ASCII (x1), . . . ,ASCII (xk))
(x1, . . . , xk)7→
OpenOffice(x1, . . . , xk)
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 2 /25
Was ist ein Text-Editor?
cutecat.odt∈
(Z ∩ [0, 255])k
(x1, . . . , xk)7→(ASCII (x1), . . . ,ASCII (xk))
(x1, . . . , xk)7→
OpenOffice(x1, . . . , xk)
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 3 /25
Der Editor . . .
I ist dein wichtigste Werkzeug!
I kann deine Produktivität erheblich steigern!I kann dich krank machen!
Wähle weise!
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 3 /25
Der Editor . . .
I ist dein wichtigste Werkzeug!I kann deine Produktivität erheblich steigern!
I kann dich krank machen!
Wähle weise!
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 3 /25
Der Editor . . .
I ist dein wichtigste Werkzeug!I kann deine Produktivität erheblich steigern!I kann dich krank machen!
Wähle weise!
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 3 /25
Der Editor . . .
I ist dein wichtigste Werkzeug!I kann deine Produktivität erheblich steigern!I kann dich krank machen!
Wähle weise!
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 4 /25
Inhalt
1. Geschichtsstunde
2. Grundlagen
3. Vim-Golf
4. Plugins
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 5 /25
Geschichte
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 6 /25
edI Entwickelt 1971 von Ken Thompson in AssemblerI Noch heute auf (fast) jedem Unix-System installiert
I Ein damals typisches Ein-/Ausgabegerät:
Teletype Model 33, c© AlisonW, http://commons.wikimedia.org/wiki/File:Teletype_with_papertape_punch_and_reader.jpg
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 6 /25
edI Entwickelt 1971 von Ken Thompson in AssemblerI Noch heute auf (fast) jedem Unix-System installiertI Ein damals typisches Ein-/Ausgabegerät:
Teletype Model 33, c© AlisonW, http://commons.wikimedia.org/wiki/File:Teletype_with_papertape_punch_and_reader.jpg
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 7 /25
ed
I Eine typische Arbeitssitzung:
ed -s datei2,3 pLorem ipsum dolor sit amet, consecteturadipisicing elit, sed do eiusmod temporavim rules!.% s/emacs/vim/gwq
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 8 /25
ex
I Entwickelt 1976 von William Joy
I ex = extended
I „Benutzerfreundlicher“ als ed
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 9 /25
vi
I ex erhielt auch einen „fullscreen visual mode“ für die Verwendungauf modernen „visual terminals“:
Lear Siegler ADM-3A, c© Chris Jacobs, https://commons.wikimedia.org/wiki/File:Adm3aimage.jpg
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 10 /25
vi
I Man beachte das Terminal-Layout:
Shift Shift
c© StuartBrady, https://commons.wikimedia.org/wiki/File:KB_Terminal_ADM3A.svg
I Keine Maus!
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 10 /25
vi
I Man beachte das Terminal-Layout:
Shift Shift
c© StuartBrady, https://commons.wikimedia.org/wiki/File:KB_Terminal_ADM3A.svg
I Keine Maus!
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 11 /25
vim – vi improved
I Entwickelt von Bram Moolenaar
I Erstes Release (1.14) für den AMIGA, 1991
I Aktuelle Version (7.4)
I Läuft auf Unix/Linux/BSD, Window, Mac, Android,iOs, OS/2, Amiga, MS-DOS, . . .
I Open Source
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 12 /25
vim – vi improvedI Genauer gesagt: Charityware
Quelle: http://www.iccf.nl/news.html
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 13 /25
Dunkle Zeitendie Editor Wars
I Richard Stallmans Emacs war damals ein weiterer sehr populärerEditor.
I Die Frage welcher Editor der bessere sei führte zu einem der erstengroßen Flame-Wars des noch jungen Internets.
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 13 /25
Dunkle Zeitendie Editor Wars
I Richard Stallmans Emacs war damals ein weiterer sehr populärerEditor.
I Die Frage welcher Editor der bessere sei führte zu einem der erstengroßen Flame-Wars des noch jungen Internets.
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 14 /25
Friedliche Koexistenz
Weitere gute Editoren:I EmacsI TextMate (nur Mac)I Sublime Text
Alternativ, eine IDE:I QtCreatorI EclipseI KDevelop
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 15 /25
Grundlagen
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 16 /25
Grundlagen
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 17 /25
Grundlagen
I Starten: vim
I Keine Panik!I Zum Beenden: <ESC>:qa!I vimtutorI vim ist ein modaler Editor. Die wichtigsten Modes:
I NORMAL, INSERT, VISUAL, VISUAL-LINE, VISUAL-BLOCK,COMMAND-LINE
I <ESC> führt immer zurück in den NORMAL-Mode.I Benutze stets h, j, k, l!
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 17 /25
Grundlagen
I Starten: vimI Keine Panik!
I Zum Beenden: <ESC>:qa!I vimtutorI vim ist ein modaler Editor. Die wichtigsten Modes:
I NORMAL, INSERT, VISUAL, VISUAL-LINE, VISUAL-BLOCK,COMMAND-LINE
I <ESC> führt immer zurück in den NORMAL-Mode.I Benutze stets h, j, k, l!
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 17 /25
Grundlagen
I Starten: vimI Keine Panik!I Zum Beenden: <ESC>:qa!
I vimtutorI vim ist ein modaler Editor. Die wichtigsten Modes:
I NORMAL, INSERT, VISUAL, VISUAL-LINE, VISUAL-BLOCK,COMMAND-LINE
I <ESC> führt immer zurück in den NORMAL-Mode.I Benutze stets h, j, k, l!
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 17 /25
Grundlagen
I Starten: vimI Keine Panik!I Zum Beenden: <ESC>:qa!I vimtutor
I vim ist ein modaler Editor. Die wichtigsten Modes:I NORMAL, INSERT, VISUAL, VISUAL-LINE, VISUAL-BLOCK,
COMMAND-LINE
I <ESC> führt immer zurück in den NORMAL-Mode.I Benutze stets h, j, k, l!
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 17 /25
Grundlagen
I Starten: vimI Keine Panik!I Zum Beenden: <ESC>:qa!I vimtutorI vim ist ein modaler Editor. Die wichtigsten Modes:
I NORMAL, INSERT, VISUAL, VISUAL-LINE, VISUAL-BLOCK,COMMAND-LINE
I <ESC> führt immer zurück in den NORMAL-Mode.I Benutze stets h, j, k, l!
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 17 /25
Grundlagen
I Starten: vimI Keine Panik!I Zum Beenden: <ESC>:qa!I vimtutorI vim ist ein modaler Editor. Die wichtigsten Modes:
I NORMAL, INSERT, VISUAL, VISUAL-LINE, VISUAL-BLOCK,COMMAND-LINE
I <ESC> führt immer zurück in den NORMAL-Mode.I Benutze stets h, j, k, l!
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 18 /25
Ein besseres Tastaturlayout
Shift Shift
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 18 /25
Ein besseres Tastaturlayout
Strg StrgAlt Alt Gr(Win) (Win) (Menu)
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 18 /25
Ein besseres Tastaturlayout
Strg StrgAlt Esc(Win)
Alt Gr
Esc Esc
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 19 /25
NORMAL-Mode Operatoren
I Viele NORMAL-Mode Befehle haben die Form
operator [motion / text object]
I Einige Beispiele:
operatorsd deletec changey yankgq re-indentgU upper case> indent
motions / text objectsw zum nächsten Wort4W 4 WÖRTER weiterfk zum nächsten k( ein Satz zurückap ein Absatzie inner environment
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 19 /25
NORMAL-Mode Operatoren
I Viele NORMAL-Mode Befehle haben die Form
operator [motion / text object]
I Einige Beispiele:
operatorsd deletec changey yankgq re-indentgU upper case> indent
motions / text objectsw zum nächsten Wort4W 4 WÖRTER weiterfk zum nächsten k( ein Satz zurückap ein Absatzie inner environment
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 20 /25
Vim-Golf
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 21 /25
Vim-Golf
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 22 /25
Weitere Features
I Spell-CheckingI DiffI Eingebautes GrepI FensterI TabsI Server-ModeI Das Quickfix-FensterI Argument ListI Multi-Level UndoI Tagfiles
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 23 /25
Plugins
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 24 /25
Plugins
I „First know the saw, then sharpen it.“
I Erweiterungssprache: Vim script
I Python, Ruby, Lua ebenfalls unterstüzt.
I 4654 Plugins auf vim.org
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 24 /25
Plugins
I „First know the saw, then sharpen it.“
I Erweiterungssprache: Vim script
I Python, Ruby, Lua ebenfalls unterstüzt.
I 4654 Plugins auf vim.org
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 24 /25
Plugins
I „First know the saw, then sharpen it.“
I Erweiterungssprache: Vim script
I Python, Ruby, Lua ebenfalls unterstüzt.
I 4654 Plugins auf vim.org
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 24 /25
Plugins
I „First know the saw, then sharpen it.“
I Erweiterungssprache: Vim script
I Python, Ruby, Lua ebenfalls unterstüzt.
I 4654 Plugins auf vim.org
,,
Stephan Rave ([email protected])
livin
gkn
owle
dge
WW
UM
ünst
er
WESTFÄLISCHEWILHELMS-UNIVERSITÄTMÜNSTER vim 25 /25
Mehr über vim
I vimtutorI www.vim.orgI vim-adventures.comI vimcasts.orgI Practical vimI youtubeI vimgolf.comI vim.wikia.com
(>1500 Tipps)
,,
Stephan Rave ([email protected])