Vim, Tmux, bracketed paste mode, italics und Easteregg
Geschrieben am 09-05-2019 - ⧖ 2 minFü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.