热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux下vim换行,Vim不会接受换行

我有一个vim默认安装在Linux上,在一个系统上有vt52终端仿真器和unicode功能。Vim不会接受换行一切都工作正常,直到今天,当

我有一个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做希腊语,希伯来语,绘制盒子等等。 :) –



推荐阅读
  • iTOP4412开发板QtE5.7源码编译指南
    本文详细介绍了如何在iTOP4412开发板上编译QtE5.7源码,包括所需文件的位置、编译器设置、触摸库编译以及QtE5.7的完整编译流程。 ... [详细]
  • cJinja:C++编写的轻量级HTML模板引擎
    本文介绍了cJinja,这是一个用C++编写的轻量级HTML模板解析库。它利用ejson来处理模板中的数据替换(即上下文),其语法与Django Jinja非常相似,功能强大且易于学习。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
  • 俗话说得好,“工欲善其事,必先利其器”。这句话不仅强调了工具的重要性,也提醒我们在任何项目开始前,准备合适的工具至关重要。本文将介绍几款C语言编程中常用的工具,帮助初学者更好地选择适合自己学习和工作的编程环境。 ... [详细]
  • 如何在Linux中实现字符设备控制
    本文详细探讨了在Linux环境下控制字符设备的方法,包括蜂鸣器和模数转换器(ADC)的实际操作案例。对于开发者来说,了解这些基础知识对于嵌入式系统的开发尤为重要。 ... [详细]
  • 本文档详细介绍了在 CentOS Linux 7.9 系统环境下,如何从源代码编译安装 libwebsockets 库及其示例程序,并提供了编译过程中可能遇到的问题及解决方案。 ... [详细]
  • 本文探讨了在Git子模块目录中运行pre-commit时遇到的错误,并提供了一种通过Docker环境解决此问题的方法。 ... [详细]
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
  • Java 中重写与重载的区别
    本文详细解析了 Java 编程语言中重写(Override)和重载(Overload)的概念及其主要区别,帮助开发者更好地理解和应用这两种多态性机制。 ... [详细]
  • java文本编辑器,java文本编辑器设计思路
    java文本编辑器,java文本编辑器设计思路 ... [详细]
  • 本文介绍如何配置SecureCRT以正确显示Linux终端的颜色,并解决中文显示问题。通过简单的步骤设置,可以显著提升使用体验。 ... [详细]
  • 本文深入探讨了 Delphi 中类对象成员的核心概念,包括 System 单元的基础知识、TObject 类的定义及其方法、TClass 的作用以及对象的消息处理机制。文章不仅解释了这些概念的基本原理,还提供了丰富的补充和专业解答,帮助读者全面理解 Delphi 的面向对象编程。 ... [详细]
  • 本文详细探讨了Java命令行参数的概念、使用方法及在实际编程中的应用,包括如何通过命令行传递参数给Java程序,以及如何在Java程序中解析这些参数。 ... [详细]
  • 本文提供了关于C++2.0新特性的学习资源,包括权威网站和推荐书籍,帮助开发者快速掌握最新版本的C++编程语言。 ... [详细]
  • 本文深入探讨了在安装PostgreSQL数据库系统时,执行Configure、Make及Make Install命令的具体含义与作用。 ... [详细]
author-avatar
小胖菜鸟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有