[MEGOLDVA] GNU Screen-ben a Vim használhatatlan

Fórumok

Szervusztok!

Vim (szigorúan nagy kezdő betűvel) vagy parancssorban időnként megbolondul a screen. Nem nyomtatható karaktert mutat bizonyos mozgásoknál, tab, illetve pl. insert mode-ba váltáskor is, de pl. egy üres sor esetén ha backspace-t ütök akkor előáll a jelenség.

A kurzor alá egy g betű fölé írt négyzetes karaktert hozott össze minden esetben. Vezérlő karakternek tűnik. :(

Próbáltam "en_US.UTF-8","en_US:en" language beállításokat is, de sajnos nem segít.
7-es és 8-as Debian-on is próbáltam, de sajnos teljesen azonos a viselkedés.
A /etc/screenrc alap mindenütt, ilyet látok benne:


deflogin on
vbell on
vbell_msg "   Wuff  ----  Wuff!!  "
defscrollback 1024
bind ^k
bind ^\
bind \\ quit
bind K kill
bind I login on
bind O login off
bind } history
termcapinfo vt100 dl=5\E[M
hardstatus off
termcapinfo xterm*|rxvt*|kterm*|Eterm* hs:ts=\E]0;:fs=\007:ds=\E]0;\007
hardstatus string "%h%? users: %u%?"
termcapinfo xterm*|linux*|rxvt*|Eterm* OP
termcapinfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
defnonblock 5

Mit érdemes állítani?
Köszönöm előre is!
vfero

Update: Vi->Vim

Hozzászólások

A $TERM-ben screen van már, vt100 helyett viszont vt102-t gondolok. Vélemények? Tovább megyek: a promptom így néz ki, lehet hogy ez kever be neki?


rcPrompt() {
   rc=$?
   if [ $rc -eq 0 ]
   then
		PS1="\e[0;33m\d \t \033[1;32m${rc} \e[0;31m\u\e[1;37m@\h:\e[0;32m\w\e[0;33m \e[0;37m\n"
   else
		PS1="\e[1;33;41m\d \t \033[1;37;40m ${rc} \e[1;31;41m \u\e[1;37;41m@\h:\e[1;32;41m\w\e[0;33m \e[0;37m\n"
   fi
}
PROMPT_COMMAND=rcPrompt

Köszönöm!
vfero

Ellenkezőleg, biztos vagyok abban, hogy rengetegen használják.

De az események követéséhez jó volna tudni, hogy milyen terminálemulátort használsz, hogy a screen lokálisan fut, vagy ssh/telnet/mittomén sessionben, hogy a Vi tényleg Vi vagy a ViM kompat módja, hogy a screen startja előtt mi TERM/LC_*/LANG értéke, hogy a screen kap-e -T paramétert induláskor, hogy próbáltad-e a screen reset funkciójával mederbe terelni az eseményeket.

Nem állítom, hogy mindez kell a távgyógyításhoz, de ezek teljes hiánya mellett csak annyit tudhatsz meg sok példányban, hogy "pedig nekem megy", azzal meg nem vagy kisegítve.

A screen-t javarészt ssh sessionben használom. A vi persze vim.basic, a TERM értéke screen, az LC_* mindig minden fixen egyformán en_US:en illetve próbáltam en_US.UTF-8 képp is, amiket a LANG-al egyetemben állítok.
A kód részlet így néz ki:


LANGUAGE="en_US.UTF-8"
LC_ALL="${LANGUAGE}"
LC_PAPER="${LANGUAGE}"
LC_ADDRESS="${LANGUAGE}"
LC_MONETARY="${LANGUAGE}"
LC_NUMERIC="${LANGUAGE}"
LC_TELEPHONE="${LANGUAGE}"
LC_IDENTIFICATION="${LANGUAGE}"
LC_MEASUREMENT="${LANGUAGE}"
LC_TIME="${LANGUAGE}"
LC_NAME="${LANGUAGE}"
LANG="${LANGUAGE}"

Persze a locale.gen-ben beállítva, és legenerálva így:
# dpkg-reconfigure locales

Köszönöm a segítséget!
vfero

Nálam minden oké a vim-el (akár vi-ként indítva) screen-be (Ubuntu-n).
De ha esetleg vmi szemét kerül a képernyőre (vmi background process ír az stdout/stderr-re),
akkor a szokásos képernyő refresh megtisztítja: Ctrl+L (ez amúgy is hasznos bármilyen terminálon.)

off: tényleg vi-t használsz...?

vim-mel nekem is minden rendben, bár én tmux-szal használom.

De itt nem ez a lényeg, hanem az, hogy a látszat ellenére nem a vi-t használod, hanem csak kényelmi okokból vi-nak elnevezett vim editort.

A vi-t legjobban akkor közelíted meg, ha beírod, hogy
:set compatible,
de még így is "túl szép és jó" marad.

Ezt csak azért érdemes tudni, hogy ne sokkoljon, ha egyszer olyan helyre logolsz be, ahol tényleg csak vi van. Persze aki ki tud belőle lépni, az már nem lehet elveszett ember, de azért más a fíling, ha az ember ujjai a vimet tudják.