Servus zusammen, ich verwende Vim, um unter KMail meine Mails zu verfassen. Bisher war gvim im Einsatz, allerdings startet der so träge, daß ich stattdessen auf den Konsolen-Vim ausgewichen bin. Und da beginnt das Problem. Ich starte den Vim über folgendes Wrapper-Skript: urxvt -e vim -c "set tw=72" -c "imap <F1> <ESC>gqapi" \ -c "set syntax=mail" "$@" Getestet habe ich auch mit xterm, also xterm -e vim -c "set tw=72" -c "imap <F1> <ESC>gqapi" \ -c "set syntax=mail" "$@" Das Problem ist jetzt, daß der Vim zwar startet und mir die zu bearbeitende Mail auch anzeigt. Aber manchmal kommt es vor, daß die ersten fünf oder auch die ersten 20 Zeilen fehlen, und die Nummerierung bei 6 bzw. bei 21 anfängt. Dafür endet die Datei zB bei Zeile 30, aber ich kann trotzdem bis Zeile 50 runterfahren. Das ganze Bild sieht dann insgesamt etwas durcheinander aus, und es stehen Zeilen zusammen, die eigentlich gar nicht zusammen gehören. Beende ich den Vim, dann steht im KMail-Fenster der korrekte, also ungerupfte Text. Daraus schließe ich, daß es sich hier um ein reines Darstellungsproblem handelt. Wenn ich den Vim mit :sh verlasse und mit strg+d wieder herhole, dann sieht die Mail korrekt aus. Mit gvim hatte ich das nie. Wer oder was spielt mir denn da einen Streich? -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Mon, December 6, 2010 3:37 pm, Andre Tann wrote:
Servus zusammen,
ich verwende Vim, um unter KMail meine Mails zu verfassen. Bisher war gvim im Einsatz, allerdings startet der so träge, daß ich stattdessen auf den Konsolen-Vim ausgewichen bin.
Und da beginnt das Problem. Ich starte den Vim über folgendes Wrapper-Skript:
urxvt -e vim -c "set tw=72" -c "imap <F1> <ESC>gqapi" \ -c "set syntax=mail" "$@"
Getestet habe ich auch mit xterm, also
xterm -e vim -c "set tw=72" -c "imap <F1> <ESC>gqapi" \ -c "set syntax=mail" "$@"
Das Problem ist jetzt, daß der Vim zwar startet und mir die zu bearbeitende Mail auch anzeigt. Aber manchmal kommt es vor, daß die ersten fünf oder auch die ersten 20 Zeilen fehlen, und die Nummerierung bei 6 bzw. bei 21 anfängt. Dafür endet die Datei zB bei Zeile 30, aber ich kann trotzdem bis Zeile 50 runterfahren. Das ganze Bild sieht dann insgesamt etwas durcheinander aus, und es stehen Zeilen zusammen, die eigentlich gar nicht zusammen gehören. Beende ich den Vim, dann steht im KMail-Fenster der korrekte, also ungerupfte Text. Daraus schließe ich, daß es sich hier um ein reines Darstellungsproblem handelt.
Wenn ich den Vim mit :sh verlasse und mit strg+d wieder herhole, dann sieht die Mail korrekt aus.
Mit gvim hatte ich das nie.
Wer oder was spielt mir denn da einen Streich?
Hilft denn ein manueller Redraw? :redraw! oder :redraw Ansonsten versuch es mal zu reproduzieren, indem Du einen vim ohne Plugins und deine .vimrc aufrufst: vim -u NONE -i NONE funktioniert das, teste: vim -u NONE -i NONE -N funktioniert das, teste: vim -u NONE -N funktioniert das, teste: vim -u NORC -N und wenn das auch funktioniert, dass hängt es sehr wahrscheinlich an Deiner .vimrc. Dann mußt du sukzessive die Einträge auskommentieren und testen. Falls es nicht an deiner .vimrc liegt und du das Problem reproduzieren kannst, poste deine Info evtl. mit Screenshot an vim-dev@vim.org. Dort sollte man das Problem dann weiter eingrenzen können. Ach, die Angabe einer Version wäre auch hilfreich ,) Grüße, Christian -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Servus Christian, Christian Brabandt, Dienstag 07 Dezember 2010:
Hilft denn ein manueller Redraw?
:redraw! oder :redraw
Hilft beides nicht. Allerdings ist mir jetzt folgendes aufgefallen: wenn ich mit Bild-Ab ganz nach unten und Bild auf wieder ganz nach oben gehe, dann stimmt die Darstellung auch wieder. Es scheint mir also, als würde das Terminal nicht richtig zeichnen, was der Vim haben will. Kann so etwas sein? In diesem Zusammenhang: mache ich das ganze in der "konsole", dann führt ein strg-rechts dazu, daß der Cursor ein Wort nach rechts springt. Im urxvt führt diese Tastenkombi dazu, daß über der aktuellen Zeile eine neue eingefügt wird, mit einem einzelnen "c" am Anfang. Verhält sich vielleicht urxvt/xterm komisch?
Ansonsten versuch es mal zu reproduzieren, indem Du einen vim ohne Plugins und deine .vimrc aufrufst:
vim -u NONE -i NONE
Geht.
funktioniert das, teste:
vim -u NONE -i NONE -N
Geht.
funktioniert das, teste:
vim -u NONE -N
Geht.
funktioniert das, teste:
vim -u NORC -N
Geht.
und wenn das auch funktioniert, dass hängt es sehr wahrscheinlich an Deiner .vimrc. Dann mußt du sukzessive die Einträge auskommentieren und testen.
Ich hänge die .vimrc noch unten dran. Falls Du eine Idee hast, wo ich am besten anfange mit dem Auskommentieren, dann laß bitte hören. Ansonsten probiere ich es blockweise.
Ach, die Angabe einer Version wäre auch hilfreich ,)
# rpm -qa vim vim-7.2-23.1.x86_6 Danke+Gruß! A. ====cut # cat .vimrc set ai set nobackup set nocompatible set backspace=2 " allow backspacing over everything in insert mode set showmatch " jump emacs style to matching bracket set noexpandtab set incsearch set hlsearch set nu set tabstop=3 set ignorecase "set noswapfile " Syntaxhighlighting syntax on "syntax match Tab /\t/ "hi Tab gui=underline guifg=blue ctermbg=blue " Mappings imap <F4> <ESC>:mks!<Enter>:wqa<Enter> map <F4> <ESC>:mks!<Enter>:wqa<Enter> " Views sollen sich wiederherstellen: au BufWinLeave ?* mkview au BufWinEnter ?* silent loadview " E-Mails brauchen Sonderbehandlung: hi mailSignature ctermfg=red hi mailQuoted1 ctermfg=blue hi mailQuoted2 ctermfg=green hi mailQuoted3 ctermfg=red hi mailQuoted4 ctermfg=magenta hi mailQuoted5 ctermfg=blue hi mailQuoted6 ctermfg=cyan hi mailQuoted7 ctermfg=green hi mailQuoted8 ctermfg=red hi mailquoted9 ctermfg=magenta source ~/.vim/vim-abbrevs " Hier stehen die Abkürzungen source ~/.vim/gpg-handler " GPG-Dateien " Ein paar Mappings: " Wir wollen mit Alt-Pfeil die Tabs wechseln können: nmap <A-Left> <ESC>gT vmap <A-Left> <ESC>gT omap <A-Left> <ESC>gT imap <A-Left> <ESC>gT cmap <A-Left> <ESC>gT nmap <A-Right> <ESC>gt vmap <A-Right> <ESC>gt omap <A-Right> <ESC>gt imap <A-Right> <ESC>gt cmap <A-Right> <ESC>gt " Datum einfügen: nmap #6 <ESC>i<Home><CR><Up><ESC>:r !date "+\%d.\%m.\%Y \%H: \%M"<CR><Up>ddi<End><CR> vmap #6 <ESC>i<Home><CR><Up><ESC>:r !date "+\%d.\%m.\%Y \%H: \%M"<CR><Up>ddi<End><CR> omap #6 <ESC>i<Home><CR><Up><ESC>:r !date "+\%d.\%m.\%Y \%H: \%M"<CR><Up>ddi<End><CR> imap #6 <ESC>i<Home><CR><Up><ESC>:r !date "+\%d.\%m.\%Y \%H: \%M"<CR><Up>ddi<End><CR> cmap #6 <ESC>i<Home><CR><Up><ESC>:r !date "+\%d.\%m.\%Y \%H: \%M"<CR><Up>ddi<End><CR> set laststatus=2 if has("statusline") set statusline= set statusline+=%-3.3n\ " buffer number set statusline+=%f\ " file name set statusline+=%h%m%r%w " flags set statusline+=\[%{strlen(&ft)?&ft:'none'}, " filetype set statusline+=%{(&fenc==\"\"?&enc:&fenc)}, set statusline+=%{&fileformat} " file format set statusline+=%{(&bomb?\",BOM\":\"\")}] " BOM set statusline+=%= " right align "set statusline+=0x%-8B\ " current char set statusline+=%-10.(%l,%c%V%)\ %p%% " offset endif ======cut -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Tue, December 7, 2010 12:11 pm, Andre Tann wrote:
Allerdings ist mir jetzt folgendes aufgefallen: wenn ich mit Bild-Ab ganz nach unten und Bild auf wieder ganz nach oben gehe, dann stimmt die Darstellung auch wieder. Es scheint mir also, als würde das Terminal nicht richtig zeichnen, was der Vim haben will. Kann so etwas sein?
In diesem Zusammenhang: mache ich das ganze in der "konsole", dann führt ein strg-rechts dazu, daß der Cursor ein Wort nach rechts springt. Im urxvt führt diese Tastenkombi dazu, daß über der aktuellen Zeile eine neue eingefügt wird, mit einem einzelnen "c" am Anfang. Verhält sich vielleicht urxvt/xterm komisch?
Sieht nicht nach einem Problem mit Vim aus. Was sagt denn echo $TERM? für xterm bzw. urxvt sollte xterm-color bzw. rxvt-unicode gesetzt sein, IIRC. Das könnte für solche Effekte sorgen. Zur Not, kannst Du auch in der .vimrc set term=ansi oder set term=builtin_xterm ausprobieren. Passiert Dir das denn auch mit konsole?
Ich hänge die .vimrc noch unten dran. Falls Du eine Idee hast, wo ich am besten anfange mit dem Auskommentieren, dann laß bitte hören. Ansonsten probiere ich es blockweise.
Ich sehe nichts offensichtliches. Dann mußt Du wohl durch deine .vimrc gehen. Ist mühsam aber machbar. So habe ich mal einen Bug in Vim für Windows finden müssen[1]. Einfach an das Ende des Blocks ein finish reinschreiben, dann liest Vim nicht weiter. Aber für mich sieht es so aus, dass es ein Problem mit deinem Environment ist. D.h. Du kannst Dir die Arbeit sparen, deine .vimrc durchzugehen.
# rpm -qa vim vim-7.2-23.1.x86_6
Oha, das ist alt. Grüße, Christian [1] Es war mühsam, da ich eine recht umfangreiche Vim Konfiguration habe, mit einigen Includes. http://groups.google.com/group/vim_dev/msg/640afe5fbcf691f3 -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Christian Brabandt, Donnerstag 09 Dezember 2010:
Sieht nicht nach einem Problem mit Vim aus. Was sagt denn echo $TERM?
# echo $TERM rxvt-unicode Das stimmt insoweit auch, ich lasse vim derzeit in einem urxvt laufen. Aber im xterm siehts genauso aus.
für xterm bzw. urxvt sollte xterm-color bzw. rxvt-unicode gesetzt sein, IIRC. Das könnte für solche Effekte sorgen. Zur Not, kannst Du auch in der .vimrc set term=ansi oder set term=builtin_xterm ausprobieren.
Hmja, also... set term=ansi und set term=builtin_xterm führen dazu, daß a) die komsichen Effekte nicht mehr auftreten, und daß b) der Vim auch keine Farben mehr darstellt zB für die verschiedenen Zitatebenen. Kannst Du mir das erklären, was da vor sich geht? Ich verstehe das so, daß Vim irgendwelche Steuerzeichen benutzt, die das Terminal nicht kapiert (oder umgekehrt). Daher wird das Bild nicht richtig gezeichnet. Und daher funktioniert auch strg+rechts nicht. Aber was hat das mit den Farben zu tun? Und was wäre ein Schritt zu einer Lösung, die sowohl Farben zeigt, als auch ein korrektes Bild?
Passiert Dir das denn auch mit konsole?
Damit kann ich es nicht probieren. Denn die Konsole forkt immer in den Hintergrund, was dazu führt, daß KMail die Mail als bearbeitet erkennt und die temporäre Datei wieder löscht, noch bevor die Konsole und darin Vim die Mail geöffnet haben. Sprich: die Mail ist leer, weil aus Vim-Sicht eine neue Datei editiert wird. Das passiert komischerweise auch dann, wenn ich die Konsole mit --nofork starte.
Aber für mich sieht es so aus, dass es ein Problem mit deinem Environment ist. D.h. Du kannst Dir die Arbeit sparen, deine .vimrc durchzugehen.
Ja, das Gefühl hatte ich schon zuvor, und nach obigen Tests erst recht.
# rpm -qa vim vim-7.2-23.1.x86_6
Oha, das ist alt.
Wieso? Das ist der Vim, der standardmäßig bei der 11.3 mitgeliefert wird. Danke+Gruß! -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi Andre! On Do, 09 Dez 2010, Andre Tann wrote:
Christian Brabandt, Donnerstag 09 Dezember 2010: # echo $TERM rxvt-unicode
Das stimmt insoweit auch, ich lasse vim derzeit in einem urxvt laufen. Aber im xterm siehts genauso aus.
Hm. Ich mußte mich bisher weder mit termcap noch mit terminfo näher beschäftigen. Bei mir funktionierte immer alles. Ich würde auf eine veraltete oder kaputte TERMINFO-Database tippen aber hier muß ich extrem im Nebel stochern.
für xterm bzw. urxvt sollte xterm-color bzw. rxvt-unicode gesetzt sein, IIRC. Das könnte für solche Effekte sorgen. Zur Not, kannst Du auch in der .vimrc set term=ansi oder set term=builtin_xterm ausprobieren.
Hmja, also...
set term=ansi und set term=builtin_xterm führen dazu, daß a) die komsichen Effekte nicht mehr auftreten, und daß b) der Vim auch keine Farben mehr darstellt zB für die verschiedenen Zitatebenen.
für term=builtin_xterm bzw. builtin_ansi sollte vim aber Farben anzeigen. Ich kann es hier gerade nur im putty testen und dort muß ich explizit hinterher :syntax on machen.
Kannst Du mir das erklären, was da vor sich geht? Ich verstehe das so, daß Vim irgendwelche Steuerzeichen benutzt, die das Terminal nicht kapiert (oder umgekehrt). Daher wird das Bild nicht richtig gezeichnet. Und daher funktioniert auch strg+rechts nicht.
Hier kenne ich mich auch nicht so genau aus¹. xterm kennt IIRC 2 Modi, wie Modifier keys mitgegeben werden, als 8bit sequence (CSI mode) oder 7 bit mode. Normal ist 7bit mode, und da werden Tasten wie Links, Rechts als Tastenkombination von ESC+mehrere andere Tasten angegeben. Das muß aber von Vim unterscheiden vom manuellen Drücken von ESC durch den Benutzer. Daher gibt es die Einstellungen 'timeoutlen' und 'ttimeoutlen'. Und daher kommt es einem manchmal so vor, als hängt Vim, wenn es ein ESC sieht, dabei wartet es, ob noch zusätzliche Tasten kommen. Äh, ich schweife ab. Also in Abhängigkeit von diesen Modi passen halt die Mappings von <C-Right> oder auch nicht. Will sagen, Vim erhält eine Key sequence, kann das aber nicht <C-Right> zuordnen, weil die Terminfo Datenbank sagt, <C-Right> ist eine völlig andere Tastenkombination. Im Zweifel einfach mal neu mappen (aber mit den fest verdrahten Escape Sequenzen), hier mal für mein putty: :nmap ^[[C W Das ^[ ist ein Zeichen und nicht zwei und erhält man durch drücken von Ctrl-V vor dem Drücken von <C-Right>. Also Ctrl-V drücken und hinterher Ctrl-Rechts. (Dadurch erhält man die Raw-Keys, die im Programm ankommen). Am besten das noch in ein: :if &term=~"xterm" "C-Rechts für xterm :nmap ^[[C W endif packen, damit dieses Mapping auch nur für Terminals gelten, die sich als xterm ausgeben. Dann müßte das auch funktionieren. Wer Lust hat, kann sich Details zum - meiner Meinung nach grausamen terminfo bzw. termcap Interface - hier² noch nachlesen.
Aber was hat das mit den Farben zu tun?
Nun, die müssen ja auch vom Terminal dargestellt werden. Es gibt ein Terminfo Settings dafür. Vim fragt normalerweise das Terminal (mindestens xterm, ich weiß nicht, welche anderen Terminalemulatoren das unterstüzten) nach der Anzahl der unterstützen Farben und setzt den Wert dann intern richtig. Man kann das natürlich auch von Hand setzen. :set t_CO=256 setzt das fest auf 256 Farben. Ich habe schon lange kein Terminal mehr gesehen, dass heutzutage weniger als 88 Farben unterstützt. Daher habe ich das in meiner .vimrc fest verdrahtet ;)
Und was wäre ein Schritt zu einer Lösung, die sowohl Farben zeigt, als auch ein korrektes Bild?
terminfo Datenbank aktualisieren, oder set term=builtin_xterm benutzen und dann zur Not die Ctrl+Rechts und Links tasten entsprechend mappen. Oder mal im Wiki bzw. der FAQ stöbern³.
# rpm -qa vim vim-7.2-23.1.x86_6
Oha, das ist alt.
Wieso? Das ist der Vim, der standardmäßig bei der 11.3 mitgeliefert wird.
eine 7.2? Wieviele Patches hat denn das Ding? 7.2 ist schon recht betagt, so Mitte 2008. Seitdem haben sich gut 450 Patches angesammelt und Mitte des Jahres gab es 7.3 mit vielen interessanten Neuerungen, für dass sich mittlerweile auch so gut 80 Patches angesammelt haben.
Danke+Gruß!
dito. ¹) Die glorreichen Details kann man hier nachlesen: http://invisible-island.net/xterm/ctlseqs/ctlseqs.html ²) :h terminal-info Zum Glück, mußte ich noch nicht die Details lesen und beachten. Hier funktioniert das meiste. Aber ich beschränke mich auch nur auf die Standard tasten, Ctrl+Rechts brauche ich nicht, ich habe ja 'W'. Es lohnt sich eh, die Standard vi-keys zu nutzen und auf die Maus zu verzichten. Dann muß man seine Hände nicht mehr so oft wegnehmen von den Tasten. ³) eine kurze Suche förderte folgende Einträge zutage: http://vim.wikia.com/wiki/Mapping_fast_keycodes_in_terminal_Vim http://vim.wikia.com/wiki/Get_Alt_key_to_work_in_terminal http://vim.wikia.com/wiki/256_colors_in_vim http://vimhelp.appspot.com/vim_faq.txt.html#faq-32.10 http://vimhelp.appspot.com/vim_faq.txt.html#faq-20.5 http://vimhelp.appspot.com/vim_faq.txt.html#faq-20.4 Mit freundlichen Grüßen Christian, heute mal ausführlich antwortend... -- Das Leben ist bezaubernd, man muß es nur durch die richtige Brille sehen. Frauen inspirieren uns zu großen Dingen - und hinden uns dann, sie auszuführen. -- Alexandre Dumas d.J. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (2)
-
Andre Tann
-
Christian Brabandt