
Ich verwende Solaris 11
Dies ist meine .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>
Die Taste ENDE der Tastatur funktioniert einwandfrei
im Befehlsmodus, aber wenn ich zum Bearbeiten I oder A oder a eingebe, gebe ich END ein und ... es gibt F ein! Warum?
Antwort1
Die Terminalbeschreibung (für dtterm
) enthält nicht die Sondertaste, die vim erkennen soll. Da sie nicht in der Terminalbeschreibung enthalten ist, weiß vim nicht, was es mit den Zeichen tun soll, außer sie als Befehl zu verarbeiten:Fluchtaus dem Einfügemodus, dannoffenund einfügenF).
Hier ist, was Solaris dazu sagt 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,
Da ist keinkend
definiert, und keine smkx
und rmkx
Fähigkeiten definiert, um in den/aus dem Tastaturmodus zu wechseln. Die Zuordnung, die Sie anzeigen, ist fürAnwendungsmodus(was herkömmlicherweise - je nachTerminalwürde mit smkx/rmkx erfolgen). Eine spezielle Taste für den Anwendungsmodus würde mit beginnen escapeO, und wie Sie sehen, tut keine der TerminalbeschreibungenDas. Vor diesem Hintergrund wäre es interessant zu sehen, wie Sie die Bindungen trainieren, die auf dem Anwendungsmodus basieren.
Nun... es ist eher unwahrscheinlich, dass Sie verwendenAbonnierenunter Solaris 11. Das war der mit CDE bereitgestellte Terminalemulator, der nicht mehr viel verwendet wird. Wahrscheinlicher ist, dass Sie xterm oder eine Nachahmung davon verwenden. In diesem Fall wäre die beste Lösung, die Terminaldatenbank von ncurses zu installieren und zu verwenden.
Bei einem schnellen Check von Solaris 11 sehe ich, dass sie eineVariantevonxterm-256color
, aber es wurde geändert (und ist daher nicht mehr brauchbar): Der Wert für kend
ist falsch. Bei genauerem Hinsehen scheint es, als hätte der Solaris-Entwickler xterm-256color
inherited from xtermm
(oder gleichwertig von xtermc
) gemacht. Letzteres wird in den xterm-FAQs erwähnt.Welches $TERM soll ich verwenden?:
Einige Leute empfehlen die Verwendungxtermc. Das ist auf Solaris installiert. Es stimmt jedoch mit keinem derzeit verwendeten xterm überein. (Offenbar wurde es für eine veraltete Version unter Unixware geschrieben.)Die Farben funktionieren zwar, aber die Maus nicht, und auch die Funktionstasten nicht..