![Solaris 11 和 vim F 代替 end](https://linux22.com/image/109203/Solaris%2011%20%E5%92%8C%20vim%20F%20%E4%BB%A3%E6%9B%BF%20end.png)
我使用的是 Solaris 11
这是我的 .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!为什么?
答案1
终端描述(对于dtterm
)不包括您希望 vim 识别的特殊键。由于它不在终端描述中,vim 除了将它们作为命令处理之外,不知道如何处理这些字符:逃脱从插入模式,然后打开并插入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,正如您所见,终端描述都没有那。考虑到所有这些,了解如何行使依赖于应用程序模式的绑定将会很有趣。
现在...您不太可能使用术语在 Solaris 11 上。那是 CDE 提供的终端仿真器,现在已经不常用了。您更有可能使用 xterm 或某些仿制品。在这种情况下,最好的解决方案是安装并使用 ncurses 的终端数据库。
在快速检查 Solaris 11 中,我确实发现他们有一个变体的xterm-256color
,但它已被修改(因此变得不太可用): 的值kend
不正确。仔细观察,Solaris 开发人员似乎xterm-256color
继承自xtermm
(或等效地,来自xtermc
)。 xterm FAQ 中指出了后者我应该使用什么 $TERM?:
有些人建议使用xtermc。这是安装在 Solaris 上的。但是,它与当前使用的任何 xterm 都不匹配。 (显然它是为 Unixware 上的过时版本编写的)。颜色有效,确实如此,但鼠标不起作用,功能键也不起作用。