In Vim passiert es mir immer wieder, dass ich nur mal kurz in einer Datei kurz reinschaue, die ich als normaler User nicht bearbeiten darf. Dann bemerke ich aber, dass ich doch kurz was bearbeiten möchte. Also Vim beenden, per sudo/su zum root werden vim mit der Datei neu starten. Das kann ganz schön nervig sein.
Daher hab ich das Plugin sudoedit.vim geschrieben. Wenn mir sowas wieder passiert, einfach Datei bearbeiten und zum Schluß :SudoWrite eingeben und die Datei wird mittels sudo/su oder mithilfe eines anderen konfigurierbaren Tools geschrieben.
Entries tagged as plugin
Related tags
Wednesday, 8. July 2009
Vim Plugin sudoedit.vim
Monday, 6. July 2009
Vim Highlightmark.vim Plugin
Der Eintrag zum Hervorheben von Marks in Vim wird gerade ungewöhnlich häufig abgerufen. Ich schätze das kommt davon, wenn man über dies und jenes bloggt. Irgendwann stolpert nämlich mal jemand darüber und schreibt es nieder. Und die Leute lesen es und laden es dann runter.
Dabei gibt es mindestens noch 2 andere Implementierungen: showmarks.vim und showmarks.vim Ich hab das erst hinterher erfahren, nachdem ich mein eigenes Script geschrieben habe. Ich kenne nämlich keines davon, mein Script funktioniert für mich zufriedenstellend.
Fehler und Anmerkungen nehme ich natürlich gerne entgegen. Dabei fällt mir ein, ich könnte mal wieder häufiger über diesen Editor bloggen. Mal sehen...
Dabei gibt es mindestens noch 2 andere Implementierungen: showmarks.vim und showmarks.vim Ich hab das erst hinterher erfahren, nachdem ich mein eigenes Script geschrieben habe. Ich kenne nämlich keines davon, mein Script funktioniert für mich zufriedenstellend.
Fehler und Anmerkungen nehme ich natürlich gerne entgegen. Dabei fällt mir ein, ich könnte mal wieder häufiger über diesen Editor bloggen. Mal sehen...
Tuesday, 12. February 2008
In Vim Marks visualisieren
In Vim nutze ich sehr oft marks, um Stellen zu markieren und später an dieser Stelle weiterzuarbeiten. Man kann damit quasi Lesezeichen erstellen, die sogar nach dem nächsten Laden noch vorhanden sind. Man kann auch diese Lesezeichen in Verbindung mit anderen Befehlen benutzen (z.B. d'w heißt lösche bis zu der Zeile, in der die Markierung w definiert ist) oder zwischen 2 Bereichen Suchen und Ersetzen (:'<,'>s.... heißt in diesem Fall ersetze zwischen den Markierungen '< und '>, die Markierungen '< und '> sind dabei spezielle Markierungen, die immer auf den Anfang und das Ende des letzen visuell markierten Bereichs zeigen).
Leider weiß man oftmals nach einer Weile gar nicht mehr, wo man bestimmte Markierungen gesetzt hat. Dem hab ich jetzt mit meinem ersten Plugin abgeholfen. Einfach das Plugin nach ~/.vim/plugin werfen und beim nächsten Laden wird es aktiv.
Am Anfang gibt es ein paar Konfigurationseinstellungen, die man ändern kann (z.B. wie die Markierungen sichtbar gemacht werden oder durch welche Taste es aktiviert wird). Ohne Konfiguration kann man es mit F6 aktivieren bzw. deaktivieren. Wenn es aktiviert ist, werden Markierungen in der ersten Zeile grafisch durch ihren Namen dargestellt. Zur Verdeutlichung hier ein Bild:
Leider weiß man oftmals nach einer Weile gar nicht mehr, wo man bestimmte Markierungen gesetzt hat. Dem hab ich jetzt mit meinem ersten Plugin abgeholfen. Einfach das Plugin nach ~/.vim/plugin werfen und beim nächsten Laden wird es aktiv.
Am Anfang gibt es ein paar Konfigurationseinstellungen, die man ändern kann (z.B. wie die Markierungen sichtbar gemacht werden oder durch welche Taste es aktiviert wird). Ohne Konfiguration kann man es mit F6 aktivieren bzw. deaktivieren. Wenn es aktiviert ist, werden Markierungen in der ersten Zeile grafisch durch ihren Namen dargestellt. Zur Verdeutlichung hier ein Bild:
Friday, 22. June 2007
Vim-Tipp: Patch aus aktuell bearbeiteter Datei erstellen
Um aus der aktuell bearbeiteten Datei einen Patch zu erstellen, kann man die folgende Vim-Funktion benutzen:
Diese Funktion such automatisch nach einer passenden .orig Datei und nutzt diese, um den Patch in einem neuen Fenster zu erstellen. Falls keine .orig-Datei vorhanden ist, aber die aktuelle Datei modifiziert ist, wird automatisch die unmodifizierte Version der aktuellen Datei benutzt. Ansonsten fragt es nach einer zu vergleichenden Datei.
Aufruf:
:call DiffUnified()
Abhängigkeiten: diff muß vorhanden sein und das löschen der temporären Dateien funktioniert nur unter Unix/Linux. Man könnte evtl. auch den passenden del-Aufruf für die Windows-Version hinzufügen.
Dies ist eine Kopie von diesem Vim Tipp.
CODE:
fu! DiffUnified()
let diffexpr="diff -Nuar"
let bname=bufname("")
let origtemp=0
" Case 1: File has a filename and is not modified
if !&modified && !empty(bname)
let tempfile=0
let origFile=bname.".orig"
else
" Case 2: File has a filename and is modified
if &modified && !empty(bname)
if !filereadable(bname.".orig")
sp
enew
r #
0d
let tempfile2=tempname()
exe ":sil w! " .tempfile2
wincmd q
let origtemp=1
wincmd p
endif
let origFile=tempfile2
" let bname=tempname()
" exe ":sil w! ".bname
" let tempfile=1
" Case 2: File is new and is modified
else
if &modified
let origFile=bname.".orig"
else
let origFile=""
endif
endif
let bname=tempname()
exe ":sil w! ".bname
let tempfile=1
endif
try
if !filereadable(origFile)
let origFile=input("With which file to diff?: ","","file")
endif
if !filereadable(bname)
exe ":sil w! ".bname
endif
if empty(origFile)
throw "nofile"
endif
exe "sil sp"
exe "enew"
set bt=nofile
exe "sil r!".diffexpr." ".origFile." ".bname
exe "0d_"
exe "set ft=diff"
" Clean up temporary files
if tempfile == 1
exe "sil :!rm -f ". bname
let tempfile=0
endif
if origtemp == 1
exe "sil :!rm -f ". origFile
let origtemp=0
endif
catch
endtry
endf
Diese Funktion such automatisch nach einer passenden .orig Datei und nutzt diese, um den Patch in einem neuen Fenster zu erstellen. Falls keine .orig-Datei vorhanden ist, aber die aktuelle Datei modifiziert ist, wird automatisch die unmodifizierte Version der aktuellen Datei benutzt. Ansonsten fragt es nach einer zu vergleichenden Datei.
Aufruf:
:call DiffUnified()
Abhängigkeiten: diff muß vorhanden sein und das löschen der temporären Dateien funktioniert nur unter Unix/Linux. Man könnte evtl. auch den passenden del-Aufruf für die Windows-Version hinzufügen.
Dies ist eine Kopie von diesem Vim Tipp.
Wednesday, 16. August 2006
Update
Viel zu tun in letzter Zeit. Beruflich bin ich momentan so ausgelastet mit meinem Projekt in Frankfurt, dass ich kaum noch Zeit für irgendwas anderes habe.
In meiner wenigen Freizeit arbeite ich mich zum Spaß in Vim's Scripting-Fähigkeiten ein. Rein aus Interesse, um mal zu sehen, was man damit so machen kann. Aktuell versuche ich ein paar Funktionen zu schreiben, die Mail-Schreiben (besonders für Mailinglisten) in Verbindung mit mutt vereinfachen könnten.
Darum hier die kurze Frage, gibt es Handgriffe beim Mail-Schreiben, die man automatisiert machen könnte? Wenn ja, welche?
Aktuell habe ich die folgenden Funktionen implementiert oder plane sie zu implementieren:
In meiner wenigen Freizeit arbeite ich mich zum Spaß in Vim's Scripting-Fähigkeiten ein. Rein aus Interesse, um mal zu sehen, was man damit so machen kann. Aktuell versuche ich ein paar Funktionen zu schreiben, die Mail-Schreiben (besonders für Mailinglisten) in Verbindung mit mutt vereinfachen könnten.
Darum hier die kurze Frage, gibt es Handgriffe beim Mail-Schreiben, die man automatisiert machen könnte? Wenn ja, welche?
Aktuell habe ich die folgenden Funktionen implementiert oder plane sie zu implementieren:
- Subject bereinigen (z.B. altes Subject abtrennen)
- Subject ändern
- Signatur abtrennen und wegwerfen
- Referenzen auf Links einfügen
Monday, 17. July 2006
Vim Wiki
Hm, das ist dochmal interessant. Es gibt ein Plugin mit dem man Vim in ein Desktop-Wiki verwandeln kann. Es verwendet dafür einfache Textdateien und Verlinkungen untereinander sind auch möglich. Ein Verweis ist ein Wort das mehrere Großbuchstaben enthält (also z.B. WikiStartPage). Mit einer entsprechenden Tastenkombination kann man dann zu der Datei springen.
Einfach die verlinkte Datei runterladen und in ~/.vim/plugin packen, beim nächsten Aufruf von Vim wird die Dokumentation automatisch installiert. Ein :h potwiki ruft die Dokumentation auf.
Kurzform:
mkdir ~/Wiki
Es reicht also, einfach das Verzeichnis $HOME/Wiki anzulegen. Das ist das Default-Verzeichnis für Wiki-Dateien. Falls ein anderes Verzeichnis bevorzugt wird, sollte man das Verzeichnis und Startseite so in seine .vimrc eintragen:
let potwiki_home="$HOME/Verzeichnis/HomePage"
Nun kann es losgehen. Man legt eine Datei HomePage in seinem Wiki-Verzeichnis an. Falls man Querverweise machen möchte, schreibt man den Verweis auf die Seite mittels CamelCase.
Mit <Leader>ww ruft man seine WikiStartseite auf (und begibt sich in den Wiki-Modus)
<Leader>wf, folgt den Querverweisen (im Wiki-Modus selber reicht das Drücken von Enter)
<Leader>wi, ruft die Index-Seite auf (das entspricht dem Verzeichnislisting des Wiki-Verzeichnisses)
<Leader>we editiert man eine beliebige Wiki-Seite
<Tab> Springt von einem Querverweis zum nächsten
<Leader><Leader> schließt den Wiki-Modus
Wer <Leader> nicht kennt, für den liegt es vermutlich auf '\', wer es kennt weiß selber worauf er es gemappt hat (:h mapleader)
Das wars eigentlich auch schon. Funktioniert prima.
Ach ja, falls Syntax-Highlighting für die Datei-Typen wider Erwarten nicht funktionieren sollte, hilft ein kurzer Autocommand:
echo 'au BufNewFile,BufRead $HOME/Wiki/* set ft=potwiki' >>~/.vimrc
Diese Zeile setzt den Dateityp auf potwiki, falls Dateien im Wiki-Verzeichnis editiert werden. Diese Zeile sollte eigentlich überflüssig sein.
Einfach die verlinkte Datei runterladen und in ~/.vim/plugin packen, beim nächsten Aufruf von Vim wird die Dokumentation automatisch installiert. Ein :h potwiki ruft die Dokumentation auf.
Kurzform:
mkdir ~/Wiki
Es reicht also, einfach das Verzeichnis $HOME/Wiki anzulegen. Das ist das Default-Verzeichnis für Wiki-Dateien. Falls ein anderes Verzeichnis bevorzugt wird, sollte man das Verzeichnis und Startseite so in seine .vimrc eintragen:
let potwiki_home="$HOME/Verzeichnis/HomePage"
Nun kann es losgehen. Man legt eine Datei HomePage in seinem Wiki-Verzeichnis an. Falls man Querverweise machen möchte, schreibt man den Verweis auf die Seite mittels CamelCase.
Mit <Leader>ww ruft man seine WikiStartseite auf (und begibt sich in den Wiki-Modus)
<Leader>wf, folgt den Querverweisen (im Wiki-Modus selber reicht das Drücken von Enter)
<Leader>wi, ruft die Index-Seite auf (das entspricht dem Verzeichnislisting des Wiki-Verzeichnisses)
<Leader>we editiert man eine beliebige Wiki-Seite
<Tab> Springt von einem Querverweis zum nächsten
<Leader><Leader> schließt den Wiki-Modus
Wer <Leader> nicht kennt, für den liegt es vermutlich auf '\', wer es kennt weiß selber worauf er es gemappt hat (:h mapleader)
Das wars eigentlich auch schon. Funktioniert prima.
Ach ja, falls Syntax-Highlighting für die Datei-Typen wider Erwarten nicht funktionieren sollte, hilft ein kurzer Autocommand:
echo 'au BufNewFile,BufRead $HOME/Wiki/* set ft=potwiki' >>~/.vimrc
Diese Zeile setzt den Dateityp auf potwiki, falls Dateien im Wiki-Verzeichnis editiert werden. Diese Zeile sollte eigentlich überflüssig sein.
Thursday, 23. February 2006
Passwörter verwalten mit Vim
Ja es gibt viele schöne Programme, um Passwörter möglichst komfortabel in einer GUI zu verwalten. Aber warum erst extra eine neue Software installieren (die womöglich auch noch einen X-Server braucht)?
Mir zum Beispiel reichen eigentlich simple plain Text Dateien. Das Problem ist nur, man sollte sie etwas absichern, damit nicht jemand unberechtigterweise die Passwörter in die Hand bekommt. Hierfür bietet sich z.B. gnupg an. Nun ist das natürlich schön und gut, aber manuell das ganze zu machen ist sehr unkomfortabel. Doch Abhilfe naht:
gnupg-symmetric.vim
Einfach in ~/.vim speichern, ein ':source ~/.vim/gnupg-symmetric.vim' zur ~/.vimrc hinzufügen, fertig.
Damit kann man bequem seine Passwörter in einer Textdatei verwalten, die vor und nach dem Bearbeiten mit gpg --symmetric verschlüsselt wird. Dabei wird auch Wert drauf gelegt, dass keine unverschlüsselten Backup oder swap Dateien rumliegen. Beispiel:
chrisbra@:~$ rm geheim.gpg
chrisbra@:~$ vi geheim.gpg
chrisbra@:~$
geheimes Passwort
~
~
~
~
~
~
1 geheim.gpg [+][none,iso-8859-15,unix] 1,6 100%
:wq
Geben Sie die Passphrase ein: geheim
Geben Sie die Passphrase nochmal ein: geheim
chrisbra@:~$ cat geheim.gpg
¥S|ä£{`Ò<¦úl¤ÿëÕã@KuGåÏâL$´uB65¢pGïÕ
ìÝ.
chrisbra@:~$
Achso, falls man zufällig eine unverschlüsselte Datei mit dem Namen *.gpg bearbeiten möchte, sollte man das Plugin vorher entfernen, sonst bricht Vim mit einer Fehlermeldung ab.
Mir zum Beispiel reichen eigentlich simple plain Text Dateien. Das Problem ist nur, man sollte sie etwas absichern, damit nicht jemand unberechtigterweise die Passwörter in die Hand bekommt. Hierfür bietet sich z.B. gnupg an. Nun ist das natürlich schön und gut, aber manuell das ganze zu machen ist sehr unkomfortabel. Doch Abhilfe naht:
gnupg-symmetric.vim
Einfach in ~/.vim speichern, ein ':source ~/.vim/gnupg-symmetric.vim' zur ~/.vimrc hinzufügen, fertig.
Damit kann man bequem seine Passwörter in einer Textdatei verwalten, die vor und nach dem Bearbeiten mit gpg --symmetric verschlüsselt wird. Dabei wird auch Wert drauf gelegt, dass keine unverschlüsselten Backup oder swap Dateien rumliegen. Beispiel:
chrisbra@:~$ rm geheim.gpg
chrisbra@:~$ vi geheim.gpg
chrisbra@:~$
geheimes Passwort
~
~
~
~
~
~
1 geheim.gpg [+][none,iso-8859-15,unix] 1,6 100%
:wq
Geben Sie die Passphrase ein: geheim
Geben Sie die Passphrase nochmal ein: geheim
chrisbra@:~$ cat geheim.gpg
¥S|ä£{`Ò<¦úl¤ÿëÕã@KuGåÏâL$´uB65¢pGïÕ
ìÝ.
chrisbra@:~$
Achso, falls man zufällig eine unverschlüsselte Datei mit dem Namen *.gpg bearbeiten möchte, sollte man das Plugin vorher entfernen, sonst bricht Vim mit einer Fehlermeldung ab.
(Page 1 of 1, totaling 7 entries)
