Bru*_*tti 121
对于那里的Mac用户:为了映射ALT + hjkl,使用生成的真实字符(在INSERT模式下找出使用该组合的字符),例如我的键盘:
<ALT+j> ==> ª
<ALT+k> ==> º
Run Code Online (Sandbox Code Playgroud)
等等.发现的解决方案在这里在计算器上.
我使用它在ALT + k\j上上下移动线,在我的.vimrc上使用它:
nnoremap ª :m .+1<CR>==
nnoremap º :m .-2<CR>==
inoremap ª <Esc>:m .+1<CR>==gi
inoremap º <Esc>:m .-2<CR>==gi
vnoremap ª :m '>+1<CR>gv=gv
vnoremap º :m '<-2<CR>gv=gv
Run Code Online (Sandbox Code Playgroud)
为解释在这里.
希望它有用,享受Vim :)
ADDENDUM BY Dylan_Larkin(2019):为了在Mac上工作,必须在终端 - >首选项 - >键盘中关闭 " 使用选项作为元键 "
jam*_*san 39
:help key-notation描述了需要使用什么格式来映射不同的键.在alt的情况下,您可以使用<A-或<M-.所以你的映射就是
map <M-d> <C-d>
Run Code Online (Sandbox Code Playgroud)
我还建议使用(例如)的nore变体:map,noremap除非您明确希望允许重新评估右侧的映射.
Pab*_* C. 28
我不确定是否"可能"了.请阅读以下更新.
是的,你甚至可以在终端vim,但没有真正捕获所有的答案.你基本上必须遵循两个步骤:
确保<M-d>符号存在,并准确映射终端输入的内容(^[是转义字符):
$ cat
^[d
$
" in your .vimrc
execute "set <M-d>=\ed"
" you have to use double quotes!
Run Code Online (Sandbox Code Playgroud)将某些内容映射到新创建的组合:
noremap <M-d> :echo "m-d works!"<cr>
Run Code Online (Sandbox Code Playgroud)了解它是如何工作的,你可以将这个"技巧"扩展到其他"奇怪"组合,例如,我使用白蚁,而vim无法识别<S-F1>,使用我得到的猫^[[1;2P.然后,在我的vimrc中我做:execute "set <S-F1>=\e[1;2P"然后我可以将它映射到任何东西.
注意:我不知道为什么,但对于一些使用\<Esc>作品的人来说\e.
更新(2016年2月)
根据你的终端运行的terminfo,也许你可以...在大多数终端中,例如,"alt + h"映射到^[h,"escape + h".所以它可以覆盖密钥.我刚刚尝试(再次)它似乎工作,但我相信这是一个非常错误和容易出错的实现.
尽管如此,对于勇敢的人来说,这是一个实验插件:
lfe*_*445 20
在Mac OSx上映射Vim中的Alt键:
首先查看终端发送给vim的密钥代码:
$ sed -n l
^[[1;9D
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我运行命令并按下Alt + Left.
将^[[1;9D被发送到VIM逃脱的序列,因此我们可以通过用户对于我们的映射.
map <Esc>[1;9D
Run Code Online (Sandbox Code Playgroud)
axe*_*ung 10
作为 Bruno 针对 Mac 用户的回答的后续,请尝试确保您的选项键映射到Esc+.
A这将为您提供Vim 中选项 ( ) 键的“正常”行为。
例如,在 中iterm2,可以在以下位置找到此选项Preferences > Profiles > Keys:
您的终端可能无法"正确"传输Alt-D.您可以使用CV实际获取发送到Vim的实际转义序列,并使用它来创建映射.即,编辑.vimrc并通过键入以下序列"CV Alt-D"替换实际值,这样您就可以在vimrc中获得正确的转义序列.如果您的终端不向vim发送任何内容,那将无效.
我的终端会产生^[x命令(例如对于alt-x).在Vim内部工作的是来自vim.wikia.com的这个小脚本:
for i in range(97,122)
let c = nr2char(i)
exec "map \e".c." <M-".c.">"
exec "map! \e".c." <M-".c.">"
endfor
Run Code Online (Sandbox Code Playgroud)
添加到.vimrc以修复所有alt键映射.