
Estou no Solaris 11
Este é meu .vimrc
set nohlsearch
set mouse=""
set paste
set showmode
set ruler
set clipboard=unnamedplus
setlocal cm=blowfish2
set nocompatible
set backspace=indent,eol,start
set term=dtterm
syntax on
imap <esc>OH <esc>0i
cmap <esc>OH <home>
nmap <esc>OH 0
nmap <esc>OF $
imap <esc>OF <esc>$a
cmap <esc>OF <end>
A tecla END do teclado funciona bem
no modo de comando, mas quando digito I ou A ou a, para edição..digite END e...digite F! Por que?
Responder1
A descrição do terminal (para dtterm
) não inclui a chave especial que você gostaria que o vim reconhecesse. Como não está na descrição do terminal, o vim não sabe o que fazer com os caracteres além de tratá-los como um comando:escapardo modo de inserção, entãoabrire insiraF).
Aqui está o que Solaris diz para dtterm
:
# Reconstructed via infocmp from file: /usr/share/lib/terminfo/d/dtterm
dtterm|CDE terminal emulator,
am, mir, msgr, xenl, xon,
colors#8, cols#80, it#8, lines#24, lm#0, pairs#8,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
clear=\E[H\E[J, cnorm=\E[?25h, cr=\r,
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\b,
cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
flash=\E[?5h$<200>\E[?5l, home=\E[H, ht=\t, hts=\EH,
ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
invis=\E[8m, is2=\E\sF\E>\E[?1l\E[?7h\E[?45l, kbs=\b,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
kdch1=\E[3~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, kf4=\E[14~,
kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~, kich1=\E[2~,
knp=\E[6~, kpp=\E[5~, kslt=\E[4~, nel=\EE,
op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
rmam=\E[?7l, rmir=\E[4l, rmso=\E[22;27m, rmul=\E[24m,
sc=\E7, setab=\E[%p1%{40}%+%dm,
setaf=\E[%p1%{30}%+%dm,
sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t^N%e^O%;,
sgr0=\E[0m, smacs=^N, smam=\E[?7h, smir=\E[4h,
smso=\E[2;7m, smul=\E[4m, tbc=\E[3g,
Não hákend
definido, e não smkx
e rmkx
recursos definidos para alternar para/do modo de teclado. O mapeamento que você está mostrando é paramodo de aplicação(que convencionalmente - dependendo doterminalseria feito usando smkx/rmkx). Uma chave especial do modo de aplicativo começaria com escapeOe, como você pode ver, nenhuma descrição do terminal começaque. Considerando tudo isso, seria interessante ver como você está exercitando as ligações que dependem do modo de aplicação.
Agora... é bastante improvável que você esteja usandotermono Solaris 11. Esse era o emulador de terminal fornecido com o CDE, que não é mais usado. É mais provável que você esteja usando o xterm ou alguma imitação. Nesse caso, sua melhor solução seria instalar e usar o banco de dados do terminal do ncurses.
Em uma verificação rápida do Solaris 11, vejo que eles têm umvariantedexterm-256color
, mas foi modificado (e, portanto, tornou-se menos utilizável): o valor de kend
está incorreto. Olhando de perto, parece que o desenvolvedor do Solaris xterm-256color
herdou de xtermm
(ou equivalentemente, de xtermc
). Este último é apontado no FAQ do xtermQual $TERM devo usar?:
Algumas pessoas recomendam usarxtermc. Isso está instalado no Solaris. No entanto, não corresponde a nenhum xterm em uso atual. (Aparentemente foi escrito para uma versão obsoleta no Unixware).As cores funcionam, é verdade, mas o mouse não, nem as teclas de função.