2012-07-30 80 views
5

理想情况下,我想<A-left>执行:tabmove -1<A-right>来执行:tabmove +1。然而,当我把映射Alt +向右移动制表符

nnoremap <A-left> :tabmove -1<cr> 
nnoremap <A-right> :tabmove +1<cr> 

在我的.vimrc和尝试,或VIM蜂鸣声及以上,我按下方向移动我的光标一个字符。但是,直接输入:tabmove -1<cr>进入命令模式会产生所需的效果。我怎样才能解决这个问题?提前致谢。

+1

我不能用'重现预期的效果:tabmove -1 ' ,我得到E488,但是,请尝试将''改为'',看看它是否适合您。同''一样。 – 2012-07-30 15:00:31

+0

感谢@RandyMorris,Ingo下面提出了一个类似的解决方法。 – 2012-07-30 15:33:04

回答

6

由于键盘输入在内部处理的方式,这在今天在大多数终端中是不可能的,但应该在GVIM中工作。一些组合键,像按Ctrl +非字母不能被映射,并按Ctrl +信与按Ctrl ++信无法区分。这是一个已知的痛点,并且是关于vim_dev和#vim IRC频道的各种讨论的主题。

作为一种解决方法,使用不同的键,例如, <Leader><Left>/<Leader><Right>

+0

很高兴知道。我会在未来记住这一点。谢谢! – 2012-07-30 15:33:24

8

开始通过查看的终端发送到VIM关键代码:

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

在上述例子中,我跑sed命令并压Alt +左​​

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

添加到您的.vimrc

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

现在我们可以通过vim的标签循环使用Alt +左​​

+0

这实际上是正确的答案。我想知道为什么它没有被选为答案。 – 2018-01-04 22:26:39