我有一个vim默认安装在Linux上,在一个系统上有vt52终端仿真器和unicode功能。Vim不会接受换行
一切都工作正常,直到今天,当我将我的vt52 terminfo文件从临时本地用户目录移到永久系统目录中时...起初看起来很好,但突然间,当我尝试执行冒号命令通过按回车键(CTRL-J,或键本身==十进制10),vim只是闪烁屏幕,但不执行命令或离开命令输入模式。 但是,如果我按CTRL-M获得回车符(十进制13),vim确实接受该命令。
我试图再次复制文件回到~/.terminfo,但它并没有解决问题...
我想这可能是A tty的问题或损坏的vimrc文件,所以... 第一我尝试删除.viminfo和.vimrc文件,并在启动vim之前执行stty sane,但这两个都没有帮助。我刚刚注意到,输入在插入模式下也不起作用,但CTRL-M确实如此。
然后我从bash shell检查,使用CTRL-V,当我按下CTRL-M时,它显示^M,当我按CTRL-J时,它只是进入并不显示任何东西。所以 - 再次检查 - 我做了stty raw和cat - | hexdumpx,并且确实按下回车只返回0x0a,并且按CTRL-M只返回0x0d;所以键盘驱动程序正在原始模式下返回正确的字符,并且我以明智的方式重新测试了它们,这显然将它们映射到0x0A。
我用tic重新编译了termcap文件,并将它复制到~/.terminfo/v/vt52u之前,它在那里工作正常,并且已经复制到/usr/share/terminfo/v/vt52u。
但我没有看到任何可能导致问题的termcap文件。
vt52u|vt52 with UTF-8:\
:am:eo:rs=\Ee\Eb0\Eco:is=\EE\Ee:\
:nl=^j:sr=\EI:bl=^g:ta=^i:\
:ho=\EH:cr=^m:le=\ED:nd=\EC:do=\EB:up=\EA:ta=^i:nw=^j^m:xn:\
:cm=\EY%+ %+ :it#8:co#75:li#24:\
:sc=\Ej:rc=\Ek:\
:vi=\Ef:ve=\Ee:\
:so=\Eb0\Ec3:se=\Eb0\Eco:mh=\Eb8\Eco:mr=\Ebo\Ec0:me=\Eb0\Eco:\
:cl=\EH\EJ:cb=\Eo:cd=\EJ:ce=\EK:\
:km:kb=^h:
编辑: 我已经分离到实验5下面列出,如被任何东西所引起,或从上述termcap文件丢失,或者在它的抽动编译器转换为terminfo的问题。
因此 - 什么termcap条目丢失或哪个现有的条目导致问题?
----------------------额外的实验,我试图找出它-------------- -----
1:在vim中做:set term显示 ....这是正确的。所以VIM应该使用上面的termcap文件,但我不知道从哪里(例如:缓存版本,不是 - 或损坏)和:版本只显示+ termcap,它说vim应该使用tic编译的termcap文件这是我一直试图给它。
2:我重新编译了ncurses-5.9,并重新安装它以确保没有损坏的文件存在。即使:./configure --prefix=/usr --without-cxx --without-cxx-binding --without-ada --without-manpages --without-progs --without-tests --with-build-cc=gcc --with-shared --without-debug --without-profile --without-gpm --without-dlsym --without-sysmouse --enable-sigwinch --enable-hashmap --enable-scroll-hints --build=i686-linux --host=arm-linux-gnueabi --without-pthread --enable-widec --with-fallbacks=vt52u --disable-big-core --enable-termcap --enable-getcap-cache
3:做一个:set termcap显示比termcap文件定义的更多的键,这是坏的... termcap只定义了一个键......而那个应该是^ H不是^?,因此VIM的值不匹配,但其他termcap值都匹配,因为^ [与termcap文件中的escape \ E相同。所以,我证明vim肯定会加载正确的termcap文件,因为t_so的值对于vt52u是唯一的。 。所以 - 这不是一个腐败的termcap .... :(怪异
t_kb ^? ^[[
t_kd ^@ ^[}
t_sr=^[I t_bc=^[D t_le=^[D t_cd=^[J t_ce=^[K t_cl=^[H^[J
t_me=^[b0^[co t_mr=^[b0^[co t_ve=^[e t_vi=^[f t_nd=^[C t_se=^[b0^[c0
t_ZH=^[bo^[c0 t_ZR=^[b0^[co t_so=^b0^[c3 t_cm=^[Y%p1%' '%+%c%p2%' '%+%c
4:重新编译VIM 7.4,删除所有内置的终端,并确保没有损坏的文件,没有效果;没修好退格键的默认值是错误的
echo "Please Edit feature.h so that NO_BUILTIN_TERMCAPS is always #defined."
sleep 5
vim /src/feature.h
./configure --prefix=/usr/ --build=i686-linux --host=arm-linux-gnueabi --with-features=big --disable-darwin --disable-selinux --disable-xsmp --disable-xsmp-interact --disable-mzschemeinterp --disable-tclinterp --disable-netbeans --disable-sniff --disable-gui --disable-cscope --disable-workshop --enable-multibyte --disable-gtktest --disable-gpm --disable-sysmouse --disable-xim --enable-pythoninterp=dynamic --without-x --with-tlib=ncursesw vim_cv_toupper_broken="yes" vim_cv_terminfo="yes" vim_cv_tty_group="world" vim_cv_tty_mode="0620" vim_cv_getcwd_broken="yes" vim_cv_stat_ignores_slash="yes" vim_cv_memmove_handles_overlap="yes"
echo "Please Edit src/Makefile such that STRIP=arm-linux-gnueabi-strip"
sleep 5
vim src/Makefile
make
make install
5:在bash,我改变了终端类型设置为通用的“出口TERM = VT52”,而不是Unicode版本,与我抽动编译色彩支持* * NEWLINE问题冒险带着色彩指令牺牲品和VT52U的其他功能**我需要这些功能,但显然是有关我上面列出的termcap文件是有缺陷的。
+0
你用什么样的linux强制你使用vt52 TERM? –
+0
这是一个索尼PRS900,在ROM中运行monta vista linux。内核没有编译VT102 - 而VT102的内核驱动程序太复杂,无法适应索尼使用的电子纸内核驱动程序 - 所以我只是在一个pty上使用VT52用户空间终端。它很好地工作。 VT52终端在帧缓冲区上运行,并执行unicode,并处理电子纸显示特性,而不会占用太多内存。它让我用UTF-8做希腊语,希伯来语,绘制盒子等等。 :) –