blog · git · desktop · images · contact


Screen mit Fensterliste und VIM darin – Nachtrag: 256 Farben im xterm

2009-01-25

Wieder was gelernt: "Nimm nicht alles als gegeben hin." :)

Was mir bisher bei Screen gefehlt hat, war ganz klar eine Übersicht der offenen Fenster. Wo ich dann grade dabei war, hab' ich mir auch nochmal ein paar Sachen vorgenommen, die mich am VIM störten oder fehlten. Das folgende ist dabei herausgekommen. :geek:

~/.screenrc

# Nutze die Hardline des Terminals
hardstatus on
# Was dort anzeigen: "%h" falls gesetzt, sonst "%t" (siehe manpage)
hardstatus string "%?%h%:%t%?"
# Gib Screen bekannt, wie die Hardline des Terminals funktioniert und
# dass es eine hat.
termcapinfo xterm* 'hs:ts=\E]0;:fs=\007:ds=\E]0;screen\007'

# Visual Bell und Startup Message weg
vbell off
startup_message off

# Jede neue Shell ist eine Login-Shell
shell -${SHELL}

# Zeigt unten immer eine Leiste mit offenen Fenstern an und zwar so, dass
# erst die Windowliste bis ausschließlich dem aktuellen Fenster kommt, dann
# hervorgehoben dieses und abschließend der Rest der Liste.
caption always
caption string '%{=b}%-w%{=bru}%n %t%{-}%+w'

# Ein paar Keybinds
bind i screen irssi
bind o screen mutt
bind p screen ncmpcpp
bind n screen newsbeuter

~/.vimrc

" Zeilennummern:
set number

" Gescheites Einrücken/Umbrechen
set ai tabstop=4 sw=4
set wrap
set linebreak

" Einfache Kombination, die auch an der VC funktioniert:
set t_Co=8
colorscheme black_angus

" Aktuelle Zeile hervorheben
se cursorline
hi CursorLine term=none cterm=none ctermbg=4

" Kein Auto-Backup
set nobackup

" Keine Maus! O_o
set mouse=""

" Rewrapping von gq} auf q
map q gq}

" Sonstiges:
set pastetoggle=<F8>

" Keine VIMINFO benutzen ...
set viminfo=""

if (&term =~ '^screen')
    " set title for screen
    " VimTip http://vim.wikia.com/wiki/VimTip1126

    " Aktiviere den Titel auf jeden Fall
    set title

    " Escape-Codes für "Anfang" und "Ende" des Titels, damit Screen
    " versteht, was wir wollen (erstes Zeichen Escape):
    set t_ts=^[k
    set t_fs=^[\

    " Beim Verlassen den Titel wieder auf die Shell setzen
    let &titleold = fnamemodify(&shell, ":t")
    " Nur 'filename,[modified?]' als Titel, sonst kann's schnell voll werden
    set titlestring=%t%M
endif

Farblich könnte man es vielleicht noch etwas feiner abstimmen...

Screenshot

Nachtrag

Screenshots von anderen Terminals haben mich neidisch gemacht. Da es für mein urxvt leider keinen gescheiten 256-Farben-Modus gibt (nur einen Patch für eine uralte Version), stellte sich mir die Frage, warum ich überhaupt urxvt nutze. :) Der Grund war damals die Transparenz und die Fähigkeit, "borderless" zu starten. Brauche ich aber nicht mehr. Also zurück zu xterm, was von Haus aus 256 Farben kann.

Als Test diente einerseits "tput colors" und andererseits das Testscript für 256 Farben (ganz aktuell sind die Infos auf dieser Seite nicht mehr).

Anpassungen in der ~/.Xdefaults:

...
# Gib der Welt bescheid, dass du 256 Farben kannst
XTerm*termName: xterm-256color
...

Damit weiß Screen (zumindest bei Arch) ohne weiteres, dass das Terminal 256 Farben kann. Man könnte jetzt noch in der ~/.screenrc setzen:

...
term screen-256color
...

Das hat meinen VIM aber leider auch nicht dazu gebracht, automatisch 256 Farben zu nutzen, obwohl "tput colors" das richtige anzeigt. Also ist in der ~/.vimrc noch notwendig:

...
if ($DISPLAY != '')
    set t_Co=256
    colorscheme inkpot
endif
...

Da ich im X jetzt nur xterm nutze, schaltet mir das dort (im reinen xterm und im Screen) immer 256 Farben und "inkpot" ein, an der VC bleibt es aber beim Default. :)

Comments?