ソラリスvim終了キー

ソラリスvim終了キー

簡単な質問:なぜvimでendを押すとFが出るのですか?

次はこんなことが起こるでしょう。

This is a text file,i will press "end key"

    F
    F
    F
    F
:(

答え1

解決策を探す

# For some reason home and end keys are not mapping properly.
# Home key
imap <esc>OH <esc>0i
cmap <esc>OH <home>
nmap <esc>OH 0
# End key
nmap <esc>OF $
imap <esc>OF <esc>$a
cmap <esc>OF <end>

http://ianrolfe.livejournal.com/39474.html

答え2

Solaris 10では、xtermまたはgnome-terminalを実行している可能性があります。 xtermの場合は、xtermパッチ#196と少しパッチされたX11R6 xtermがあります。

vim は端末データベースから端末情報を取得します。このxterm定義にはhome / endキー定義がありません。 terminfo形式は次のとおりです。

#       Reconstructed via infocmp from file: /usr/share/lib/terminfo/x/xterm
xterm|vs100|xterm terminal emulator,
        am, km, mir, msgr, xenl,
        cols#80, it#8, lines#65,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J,
        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, dl=\E[%p1%dM, dl1=\E[M,
        ed=\E[J, el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0,
        home=\E[H, ht=\t, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
        il=\E[%p1%dL, il1=\E[L, ind=\n, ka1=\EOq, ka3=\EOs,
        kb2=\EOr, kbs=\b, kc1=\EOp, kc3=\EOn, kcub1=\EOD,
        kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kent=\EOM,
        kf0=\E[21~, kf1=\E[11~, kf10=\EOx, kf2=\E[12~,
        kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~,
        kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, rc=\E8, rev=\E[7m,
        ri=\EM, rmacs=^O, rmkx=\E[?1l\E>, rmso=\E[m,
        rmul=\E[m,
        rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, rs2=@,
        sc=\E7,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t^>
        sgr0=\E[m, smacs=^N, smkx=\E[?1h\E=, smso=\E[7m,
        smul=\E[4m, tbc=\E[3g,

端末記述に home/end キーがある場合、これらのキーは次のようにリストされます。khomeそしてkend、それぞれ。

また、初期化文字列rs1アプリケーションモードを開くカーソルキーHome(ここには、キー付きの6キー編集キーボードを含めることができますEnd。)これはescapeOプレフィックスを送信します。

vimはターミナルデータベースから取得した情報のみを使用するため、この情報については何もわかりません。一連の文字を見るといいえターミナルデータベースは、一度に1文字ずつ解釈しようとします。このescape文字は挿入モードを終了しますが、O「オン」(挿入開始)キーの最後の文字を取得します。HまたはF。このキーを繰り返し押すとF毎回押します(このキーを押すと挿入モードに切り替わります)。

正しい修正は、あなたのマッピングを避けるために端末の説明を修正することです.vimrc

infocmp >foo
vi foo
....adding this line (with a leading tab character):
        khome=\EOH, kend=\EOF,
sudo tic foo

追加資料:

関連情報