【问题标题】:is it possible to mapping Alt-hjkl in Insert mode?是否可以在插入模式下映射 Alt-hjkl?
【发布时间】:2011-07-19 18:52:57
【问题描述】:

在描述我的问题之前,我先列出环境。应用在这里:

OS:linux 2.6.37-ARCH  (archlinux i686)
vim: 7.2.436
Terminal emulator: urxvt (with 256colors patch)

kent$ echo $TERM
rxvt-256color

screen: Screen version 4.00.03 (FAU) 23-Oct-06

我在终端中运行 vim。我想通过按ALT-hjkl在INSERT模式下移动光标,光标移动后,保持在INSERT模式,这样我就可以继续输入单词了。

我找到的文章:

http://vim.wikia.com/wiki/Mapping_fast_keycodes_in_terminal_Vim

http://vim.wikia.com/wiki/Get_Alt_key_to_work_in_terminal

我尝试了什么:

在 .vimrc 中使用 ttimeoutlen=50 进行 keyCode 映射,如下所示:(仅粘贴 alt-j 映射作为示例):

set timeout ttimeoutlen=50
set <F13>=^[j  "ctrl-v alt-j
imap <F13> <down>

有了这个配置,在 INSERT 模式下移动光标就可以了。如果我按&lt;ESC&gt; 和 j。 Vim 让我回到插入模式。我不知道为什么ttimeoutlen=50 不起作用。

也试过了:

set timeout ttimeoutlen=50
set <M-j>=^[j

使用此设置,当我按下 ALT-j 时,输入了一个带有重音符号的“e”。

你们能给我任何提示我应该如何在终端中映射 ALT-hjkl 吗?

提前致谢

肯特

【问题讨论】:

    标签: vim vi


    【解决方案1】:

    对于箭头键:

    首先查看您的终端发送到 vim 的关键代码:

    $ sed -n l
    ^[[1;9D 
    

    在上面的例子中,我运行了 sed 命令并按下了 Alt + Left

    ^[[1;9D 是发送到 vim 的转义序列,因此我们可以将其用于映射。

    将此添加到您的 .vimrc 中

    map <Esc>[1;9D :tabn<CR>
    

    现在我们可以使用 Alt + Left

    循环浏览 vim 选项卡

    【讨论】:

    • 谢谢,它对我有用。顺便说一句,在 cygwin ALT+Left 输出是 \033[1;3D$,这里 \033 是 ,我们需要删除 '$'
    • 不得不在 osx mavericks / iTerm / Vim 7.4 中使用这种方法。像冠军一样工作-感谢替代解决方案。
    • 你知道在 tmux 中使用类似的解决方案吗?请参阅stackoverflow.com/questions/35344479/…,了解我刚刚提出的一个使用您的建议的问题。
    • @George 让我和一位朋友核实一下,他可能有答案
    • @lfender6445:如果这是现实生活,我会为你提供啤酒:)
    【解决方案2】:

    更容易映射您的组合键的作用。 Alt+something 通常产生一个字符,与 Ctrl+something 不同。

    例如,在我的 Mac 上,Alt 加上 hjkl 生成 ˙∆˚¬。所以:

    imap ˙ <Left>
    imap ∆ <Down>
    imap ˚ <Up>
    imap ¬ <Right>
    

    会做的。

    【讨论】:

    • 如果我用我的 urxvt 终端在 INSERT 模式下输入 ctrl-v alt-h,j,k,l。我得到了 ^[j ^[h ^[k ^[l
    • @Kent,之前没有按ctrl-v,如果只按alt+h、alt+j、alt+k和alt+l,输出是什么?
    • 如果我输入 alt-j 例如,在 INSERT 模式下(在终端下),vim 将变为普通模式,光标将向下移动一行。这是因为,在终端“ALT-”中,终端键码是 ^[,如果我们谈论 vim 键码,^[ 是
    • @Kent,我想我现在理解正确了。在互联网上搜索,我在 Yahoo! 中找到了消息。描述相同问题的组。您可能还想查看其他消息,但包含解决方案的消息(实际上是其中 2 个!)在这里:tech.groups.yahoo.com/group/vim/message/55886 基本上,您想在映射中放置 &lt;C-V&gt; 或设置 @987654329 @到&lt;C-V&gt;&lt;alt-*&gt;。我希望它有效!
    • 对于遇到此问题的其他任何人,如果要与 mac 一起使用,您最好让 alt 像 alt 一样工作。对于 terminal.app:设置 -> 键盘 -> “将选项用作元”。对于 iterm:设置 -> 个人资料 -> 您的个人资料 -> 键 -> 将选项设置为“+Esc”
    猜你喜欢
    • 2020-12-04
    • 2017-06-18
    • 2014-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 2010-12-25
    • 2013-07-03
    相关资源
    最近更新 更多