web-dev-qa-db-ja.com

Solaris11とエンドの代わりにvimF

Solaris11を使用しています

これは私の.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>

キーボードのキーENDは正常に機能します

コマンドモードですが、編集のためにI、A、またはaと入力すると、ENDと入力してFと入力します。どうして?

2
elbarna

端末の説明(dttermの場合)には、vimに認識させたい特別なキーは含まれていません。それは端末の説明にないので、vimはコマンドとしてそれらを処理する以外に文字をどうするかを知りません:escapefrom insert-mode 、次にopenそして挿入[〜#〜] f [〜#〜])。

Solarisが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,

kendが定義されておらず、切り替え用のsmkxおよびrmkx機能も定義されていません。キーパッドモード。表示しているマッピングは、 アプリケーションモード (通常は-端末によって異なります)用です。 smkx/rmkxを使用して実行されます)。アプリケーションモードの特殊キーはで始まります escapeO、そしてご覧のとおり、端末の説明はどれもthatを実行しません。これらすべてを考慮すると、アプリケーションモードに依存するバインディングをどのように実行しているかを確認するのは興味深いことです。

さて... Solaris 11で dtterm を使用している可能性はかなり低いです。これはCDEで提供されているターミナルエミュレータです。 、これはもうあまり使用されていません。 xtermまたはいくつかの模倣を使用している可能性が高くなります。その場合、最善の解決策は、ncursesからターミナルデータベースをインストールして使用することです。

Solaris 11の簡単なチェックでは、variantxterm-256color であることがわかりますが、変更されています(したがって、使用可能未満):kendの値が正しくありません。よく見ると、Solaris開発者はxterm-256colorxtermmから(または同等にxtermcから)継承させたようです。後者はxtermで指摘されていますFAQどの$ TERMを使用すればよいですか?

xtermc の使用を推奨する人もいます。これはSolarisにインストールされています。ただし、現在使用されているxtermとは一致しません。 (どうやらそれはUnixwareの時代遅れのバージョンのために書かれました)。 色は機能しますが、マウスは機能しません。また、ファンクションキーも機能しません。

4
Thomas Dickey