Hallo,
einige von euch kennen wahrscheinlich das Plugin Vimperator für firefox. Da man in so manchem Linux-Forum hin und wieder mal einen Code-Block in eine Nachricht packen möchte und es auf Dauer lästig ist das aus irgendeine{'m Editor','r Konsole'} zu kopieren, habe ich mir folgende Funktion überlegt:
>>> grep -A9 -B1 vpr /home/harald/.bashrc
# --- Ausgabe von Shell-Kommando, mit erzeugendem Kommando via Vimperator (:e) an Forenpost anhängen:
function vpr () {
if [ -f /tmp/vimperator* ] 2>/dev/null; then
vptemp='\/tmp\/vimperator*'
prompt='>>>'
echo "[code]${prompt} $@" >> ${vptemp}
echo $(echo "$@ | tee -a ${vptemp}" | sed "s/&&/| tee -a ${vptemp} &/g") | bash
echo "
" >> ${vptemp}
fi
}
[/code]
Wenn man das Plugin Vimperator installiert hat und in einem Textfeld 'Strg + I' drückt, kann man mit einem in der ~/vimperatorrc festgelegten Editor schreiben.
>>> cat /home/harald/.vimperatorrc
set editor="urxvt -e vim"
Ist der Editor, in dem man seinen Forenbeitrag verfasst geöffnet, dann kann man in einem Terminal, das Kommando
vpr KOMMANDO
eingeben und in Vim, mit :e! aktualisieren. Enthält das Kommando Pipes, Umleitungen, oder Kaufmanns-UND muss das ganze Kommando mit Single-Quotes versehen werden. Vor jedem ausführen der Funktion muss mit :w! gespeichert werden und nach jedem Ausführen der Funktion muss mit :e! die Datei, die Vim schreibt aktualisiert werden. Ist der Beitrag fertig, wird mit :wq! gespeichert und der Editor verlassen und man kann seinen Beitrag absenden.
>>> p="pacman -Qm"; $p && $p | echo -e "\ngesamt: $(wc -l)"
blockout2 2.4-4
brother-hl3040cn-cupswrapper 1.1.1_4-1
brother-hl3040cn-lpr 1.1.1_4-1
conkyexaile-bzr 29-1
dzen2-xft-xpm-xinerama-svn 271-2
exaile 3.3.0-1
mupdf-patched 0.9-1
python2-pypdf 1.13-2
rxvt-unicode-patched 9.15-5
seturgent 1.4-2
stapler 2b-2
ttf-ms-fonts 2.0-9
urxvt-tabbedex 0.4-1
usb-creator 0.2.40-2
gesamt: 14
Die obigen Code-Blöcke wurden mit der Funktion durch nachfolgende Eingaben erzeugt:
vpr grep -A9 -B1 vpr ~/.bashrc
vpr cat ~/.vimperatorrc
vpr 'p="pacman -Qm"; $p && $p | echo -e "\ngesamt: $(wc -l)"'