我试图映射到.vimrc,将以下行添加到了它,但是它不起作用。我检查了.vimrc是由Vim加载的。
map <Alt-D> <C-D>
此映射中有任何错误吗?
我试图映射到.vimrc,将以下行添加到了它,但是它不起作用。我检查了.vimrc是由Vim加载的。
map <Alt-D> <C-D>
此映射中有任何错误吗?
encoding
在映射运行后所做的更改,从Alt键中得到的内容可能与您最初设置的内容不符。
Answers:
对于在那里的Mac用户:为了映射ALT + hjkl,请改用生成的真实字符(在INSERT模式下使用组合查找哪个字符),例如,使用键盘,我得到:
<ALT+j> ==> ª
<ALT+k> ==> º
等等。发现的解决方案在这里在计算器上。
我使用它在.vimrc上使用ALT + k \ j上下移动行:
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
如这里解释。
希望它有用,请享受Vim :)
Dylan_Larkin的补充(2019年):要在Mac上运行,必须在终端->首选项->键盘中关闭“使用选项作为元密钥”
cat
。只需cat
在猫窗口内键入所需的组合键即可。在我的Mac上发现alt +中括号是'和'。
nmap ˙ <C-w><Left> nmap ¬ <C-w><Right> nmap ˚ <C-w><Up> nmap ∆ <C-w><Down>
sed -n l
看的输出的<Ak>并在配置映射之前<AJ>。在我的情况下,<Aj>是∆
且<Ak>是˚
Use Option as Meta Key
在iTerm上进行设置或配置时,配置文件⌥ key to Esc+
将按照传统方式运行(例如在Linux / Unix上)。因此,您无需在Vim上将map设置为<^[j>
,只需将其映射到<A+j>
or即可<M+j>
。
:help key-notation
描述了用于映射不同键的格式。如果是alt,则可以使用<A-
或<M-
。所以你的映射是
map <M-d> <C-d>
我也建议您使用(例如)的nore
变体:map
,noremap
除非您明确希望允许重新评估右侧的映射。
<A-d>
。你可能需要更改终端设置,使其发出<A-d>
的<Esc>d
。
我不确定是否“可能”了。请阅读下面的更新。
是的,您甚至可以在终端vim中使用,但是并没有真正抓住所有答案的方法。您基本上必须遵循两个步骤:
确保<M-d>
符号存在,并准确映射终端输入的内容(^[
即转义字符):
$ cat
^[d
$
" in your .vimrc
execute "set <M-d>=\ed"
" you have to use double quotes!
将某些内容映射到您新创建的组合:
noremap <M-d> :echo "m-d works!"<cr>
了解了它是如何工作的,您可以将此“技巧”扩展为其他“奇怪”的组合,例如,我正在使用白蚁,而vim则无法识别<S-F1>
,使用cat I get ^[[1;2P
。然后,在我的vimrc中执行:execute "set <S-F1>=\e[1;2P"
,然后可以将其映射到任何内容。
注意:我不知道为什么,但是对于某些使用\<Esc>
work代替的人\e
。
更新(2016年2月)
根据您的终端运行的terminfo,也许您可以...在大多数终端中,例如,“ alt + h”被映射到^[h
,即:“ escape + h”。因此它可能会覆盖密钥。我刚刚尝试(再次),它似乎可以工作,但是我认为这是一个非常容易出错的错误实现。
不过,为了足够勇敢,这里有一个实验性插件:
在Mac OSx上的Vim中映射Alt键:
首先查看终端发送给vim的密钥代码:
$ sed -n l
^[[1;9D
在上面的示例中,我运行了命令并按Alt + Left。
将^[[1;9D
被发送到VIM逃脱的序列,因此我们可以通过用户对于我们的映射。
map <Esc>[1;9D
Option
(⌥
)Esc+
,我可以映射alt+q
到退出vim: nnoremap <silent> <Esc>q :qa!<cr>
我的终端会生成^[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
添加到.vimrc以修复所有alt键映射。