linux 上 VIM 的一个奇怪问题

2016-03-22 18:57:24 +08:00
 redsonic
用了好几年的 vim 在 X 下用的很顺手,这些天准备抛弃桌面 所以开搞虚拟终端( tty )。发现原来桌面下 vim 的 ctrl+下划线映射绑定 ( nmap <C-_> command )失效了,变成了光标上移一行(和按‘ k ’一样),而减号也是上移一行, 也就是说这时候 vim 收到的还是减号, shift 被吃了? 奇怪的是 nmap <C-L> 还是有效的。
刚开始我怀疑是 TERM 环境变量的问题,但改成和桌面一样的还是不行。然后怀疑是 vim 的 bug ,但自己编译一个还是老样子,最后把 vimrc 删了还是没有解决。
2668 次点击
所在节点    程序员
7 条回复
htfy96
2016-03-22 19:09:09 +08:00
zyguan
2016-03-22 19:14:17 +08:00
个人认为, x 上包了层 xkb ,很多东西就不一样了
redsonic
2016-03-22 19:22:59 +08:00
@zyguan 对, x 把 keycode 映射成 symbol 再送给应用程序的。 tty 是映射成另外一套,但主键盘区的基本照搬 keycode 不会动。 刚发现另外一个发行版的 vim 在 tty 下面 nmap <C-_>工作正常,正在试他那个版本。如果再不行,我觉得是 tty 的问题,也就是内核的问题?
yangtukun1412
2016-03-22 19:27:50 +08:00
vim 里 <C+_> 实际上 map 的是 <C+/> ...
redsonic
2016-03-22 20:01:14 +08:00
@htfy96
@zyguan
@yangtukun1412

换版本无效,换内核无效。新装一台和当前发行版一样的虚拟机里面 tty vim map <C-_>却是正常的。

然后突然发现 tty 里面 map <C-_> 按下 ctrl 和减号就 work 了, shift 真的被吃了。这到底是怎么了
redsonic
2016-03-22 20:27:51 +08:00
@htfy96
@zyguan
@yangtukun1412

问题找到了, 很久之前我把 tty 的键盘布局改成了 mac , ctrl+shift+减号 vim 看到的是 ^[- , pc 的正常布局应该是 ^_ 。直接 loadkey us 恢复 PC 布局。 或者改 /etc/sysconfig/keyboard 里面的 KEYTABLE 变量永久生效。 算了不折腾 mac 的布局,之前肯定把 /usr/share/kbd/keymaps 里面的搞乱了。
zyguan
2016-03-22 21:19:09 +08:00
@redsonic 手动的真快,赞一个!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/265552

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX