Macos MacVim(iterm2/tmux)绑定alt/meta

Macos MacVim(iterm2/tmux)绑定alt/meta,macos,vim,macvim,Macos,Vim,Macvim,我有一组很好的vim映射 " Drag Current Line/s Vertically nnoremap <M-j> :m+<CR> nnoremap <M-k> :m-2<CR> inoremap <M-j> <Esc>:m+<CR> inoremap <M-k> <Esc>:m-2<CR> vnoremap <M-j> :m'>+<CR>g

我有一组很好的vim映射

" Drag Current Line/s Vertically
nnoremap <M-j> :m+<CR>
nnoremap <M-k> :m-2<CR>
inoremap <M-j> <Esc>:m+<CR>
inoremap <M-k> <Esc>:m-2<CR>
vnoremap <M-j> :m'>+<CR>gv
“垂直拖动当前行
nnoremap:m+
nnoremap:m-2
inoremap:m+
inoremap:m-2
vnoremap:m'>+gv
我无法在Mac/iTerm2/Tmux/vim组合上工作。我想问题在于Alt键没有被映射

另外,在iTerm会话密钥首选项中,“左选项密钥充当”设置为
+Esc
,我已经这样做了。我的临时和非权威结论是使用
的映射在iTerm2中不起作用,应该使用替代解决方案


我使用了

在浏览了大量的SO问题和答案后,我在这里提出了这个问题。这个解决方案对我来说适用于iTerm2+Mojave

  • 在iTerm2中,转到首选项->配置文件->按键。在右下角,更改左(或右)选项键以触发Esc+序列,而不是元/正常序列
  • 将以下代码放入.vimrc中:
  • 执行“set=\ej”
    执行“set=\ek”
    nnoremap:m.+1<
    nnoremap:m.-2<
    inoremap:m.+1==
    inoremap:m.-2==
    vnoremap:m'>+1gv=
    
    vnoremap:m'我至少可以确认这对我使用OSX10.6/iTerm2/tmux/vim over ssh不起作用(来自putty),但在WindowsXP/GVim中确实对我有效。所以这没有意义-因为安装putty将是我的终端,而不是iTerm2。我确实在家中运行了iTerm2,但这不是我测试的一部分。我只是在没有iTerm2的情况下尝试了它。在tmux会话中使用putty到OSX10.6时,vim将不允许映射。这应该是有效的你的问题和另一个问题都是关于iTerm2中的Vim的,但是问题是Vim不能很好地使用shell发送的元密钥。
    execute "set <A-j>=\ej"
    execute "set <A-k>=\ek"
    
    nnoremap <A-j> :m .+1<
    nnoremap <A-k> :m .-2<
    inoremap <A-j> <Esc>:m .+1<CR>==
    inoremap <A-k> <Esc>:m .-2<CR>==
    vnoremap <A-j> :m '>+1<CR>gv=
    vnoremap <A-k> :m '<-2<CR>gv=gv