cfi*_*cfi 5 keyboard-shortcuts vim xterm
我正在尝试将两个不同的操作映射到 egCtrlShifta和Ctrla:
map <C-S-a> :echo "ctrl-shift-a received"<CR>
map <C-a> :echo "ctrl-a received"<CR>
Run Code Online (Sandbox Code Playgroud)
但是当按下这两个中的任何一个时,我得到的只是状态行中的输出“ctrl-a received”。显然,vi 看不到大写控制字符和小写控制字符之间的区别。
有没有办法改变这种情况?
我在 xterm (X.Org 6.8.99) 中运行 vi (v7.4)。
这是一个终端限制,因为 vi 认为键码是相同的。可以通过进入插入模式来验证这一点i,然后点击Ctrlv将 vi 置于一种模式以期待特殊字符的文字输入,然后点击 eg CtrlShifta。^A
将出现一个输出。现在执行序列Ctrlv,Ctrla,然后 a^A
将再次出现:两个输入序列都会导致 vi 看到相同的键码。
对于像xterm
你这样的终端,你可以改变它。对于gnome-terminal
它忽略 X 资源设置我不知道如何执行以下操作:
这个SO 问题涵盖了相同的主题,这个例子显示了它用于映射.Xresources
文件中的多个键。例如:
XTerm*vt100.translations: #override \
Ctrl ~Meta Shift <Key>a: string(0x1b) string("[65;5u") \n\
Ctrl ~Meta Shift <Key>b: string(0x1b) string("[66;5u") \n\
Ctrl ~Meta Shift <Key>f: string(0x1b) string("[70;5u")
Run Code Online (Sandbox Code Playgroud)
现在我们有不同的键序列进入 vi,用于Ctrlavs. CtrlShifta、Ctrlbvs. CtrlShiftb、Ctrlfvs. CtrlShiftf.
我们现在可以不同地映射它们~/.vimrc
:
map <ESC>[65;5u :echo "ctrl-shift-a received"<CR>
map <C-a> :echo "ctrl-a received"<CR>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3500 次 |
最近记录: |