Vim 映射Alt+;键移动到同一缩进

Vim 映射Alt+;键移动到同一缩进,vim,macvim,Vim,Macvim,我在映射我的vimrc上的以下键时遇到问题,但不确定原因。我已经检查过了,似乎没有使用相同键的其他映射,但出于某种原因,以下操作不起作用: " Move to next/previous line with same indentation nnoremap <A-k> :call search('^'. matchstr(getline('.'), '\(^\s*\)') .'\%<' . line('.') . 'l\S', 'be')<CR> nnoremap

我在映射我的
vimrc
上的以下键时遇到问题,但不确定原因。我已经检查过了,似乎没有使用相同键的其他映射,但出于某种原因,以下操作不起作用:

" Move to next/previous line with same indentation
nnoremap <A-k> :call search('^'. matchstr(getline('.'), '\(^\s*\)') .'\%<' . line('.') . 'l\S', 'be')<CR>
nnoremap <A-j> :call search('^'. matchstr(getline('.'), '\(^\s*\)') .'\%>' . line('.') . 'l\S', 'e')<CR>
“移动到具有相同缩进的下一行/上一行
nnoremap:调用搜索('^'.matchstr(getline('.'),'\(^\s*\))。\%.行('.'),'l\s','e'))
这里有明显的错误吗?
命令本身的工作方式与我测试的一样。

在OSX中,或者在其他操作系统中,alt+(某物)实际上会发送一个不同的键


在我的键盘中,alt+j和alt+k将分别实际发送“和”。因此,您需要使用实际发送的键或不同的键组合。

或者,您可以使用gnome调整工具来映射键。这是一个gui界面

要安装:


sudo-apt-get-install-gnome-tweak-tool

按下ALT+键会在“键”之前发送一个“ESC”。如果您处于插入模式,按下ALT+键后,您将返回到正常模式,然后您的键击将在正常模式下执行

试试看

如果(当然是在插入模式下)键入'abcde',然后键入ALT+0,您将在行首处发现自己处于正常模式

因此,有两件事:

  • ALT+k实际上是ESC+k,它在正常模式下只是'k'(对齐),但在插入模式下执行时也是'k'(对齐,在正常模式下)。这是您看到的
  • 如果您想从插入模式执行“将我更改为正常模式并执行keystoke'x'”操作,那么作为一种实践,这可能有点有用

  • 不确定是否是因为我的环境MacVim/OSX,但ALT+K没有将我发送到正常模式,它只是插入了我上面提到的奇怪字符。无论如何,目标是让这个动作在正常模式下工作,而不是插入。我没有看到你提到的这些奇怪字符被插入(编辑:啊,不,是的,现在我有了).ALT+key应该先发送ESC然后发送key-因此(除您之外)使用ALT-key进行映射时会出现问题。Jesus,我想不出您最后的评论。:)无论如何,在我的设置中,它似乎没有像您提到的那样发送ESC命令。我在OSX上安装了一个类似的工具来映射键。不过,我正在寻找一个需要这样做的解决方案。