Solaris 11 e vim F em vez de terminar

2

Estou no Solaris 11

Este é o 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 eu digito I ou A ou a, para edição..do tipo END e ... digite F! Por quê?

    
por elbarna 08.04.2017 / 01:10

1 resposta

4

A descrição do terminal (por 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 controlá-los como um comando: escape do modo de inserção, depois aberto e insira F ).

Veja o que o Solaris diz sobre 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 há recursos smkx e rmkx definidos para alternar de / para o modo de teclado. O mapeamento que você está mostrando é para modo de aplicativo (que convencionalmente - dependendo do terminal seria feito usando smkx / rmkx). Uma chave especial do modo de aplicação começaria com escape O , e como você vê, nenhuma das descrições do terminal faz aquela . Dado tudo isso, seria interessante ver como você está exercitando as ligações que dependem do modo de aplicação.

Agora ... é improvável que você esteja usando dtterm no Solaris 11. Esse foi 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 a partir de ncurses.

Em uma verificação rápida do Solaris 11, vejo que eles têm uma variante de xterm-256color , mas ele foi modificado (e, portanto, feito menos do que utilizável): o valor para kend está incorreto. Olhando de perto, parece que o desenvolvedor Solaris fez xterm-256color herdar de xtermm (ou equivalentemente, de xtermc ). Este último é apontado no FAQ do xterm Que $ TERM devo usar? :

Some people recommend using xtermc. That is installed on Solaris. However, it does not match any xterm in current use. (Apparently it was written for an obsolete version on Unixware). The colors work, true, but the mouse will not, nor will the function keys.

    
por 08.04.2017 / 03:22