Vim, Tmux, bracketed paste mode, italics und Easteregg

Für diejenigen, die nicht wissen was bracketed paste ist, hier die Kurzversion: Das Terminal bzw. Programm erkennt und unterscheidet zwischen Tastatureingabe(n) und dem paste. Wenn man z. B. einen Textabschnitt mit Tabs/Einrückungen/$whatever von einer Homepage oder einem anderem Programm kopiert und das dann in den Editor kopiert (mittlere Maustaste oder Strg+v), dann erkennt der Editor das und ändert nichts an der Formatierung.
Voraussetzung ist allerdings ein Terminal das dieses Feature unterstützt, allerdings kommt sogar xterm damit klar, also sollte das kein Problem sein. Vim kann das nämlich schon seit .. k/a.. 7.irgendwas. Man muss also nicht erst lange :set paste eingeben, den Text einfügen und dann :set nopaste aufrufen, sondern kann unabhängig vom aktuellen Mode etwas kopieren und einfügen. Sollte Tmux rumzicken, kann man dem mit folgendem Eintrag in der ~/.vimrc abhelfen:

if &term =~ '^screen'
   let &t_BE="\<Esc>[?2004h"
   let &t_BD="\<Esc>[?2004l"
   let &t_PS="\<Esc>[200~"
   let &t_PE="\<Esc>[201~"
endif

Voraussetzung dafür ist aber, das in der ~/.tmux.conf der Eintrag für default-terminal dementsprechend gesetzt ist; bei mir ist das set-option -g default-terminal "screen-256color". Wenn man dann schon dabei ist, kann man auch gleich italics aktivieren (Kursivschrift). Dazu erstellt man einfach eine Datei mit folgendem Inhalt:

{{< highlight cpp >}} screen-256color|screen with 256 colors and italic, sitm=\E[3m, ritm=\E[23m, use=screen-256color, {{< /highlight >}}

und installiert diese dann mit tic dateiname. Anschließend muss Tmux noch gestartet werden und danach kann man mit

echo -e "\e[1mbold\e[0m"
echo -e "\e[3mitalic\e[0m"
echo -e "\e[4munderline\e[0m"
echo -e "\e[9mstrikethrough\e[0m"

prüfen ob alles richtig dargestellt wird. Sollte das alles funktionieren, einfach mal vim -c :smile eingeben.

For comments, please send me an email