gpt4 book ai didi

Vim:多种模式的重载映射

转载 作者:行者123 更新时间:2023-12-02 23:16:50 25 4
gpt4 key购买 nike

我使用正常模式命令的映射,我也想在插入模式下工作。这可以通过添加 <C-o> 来完成。插入模式映射:

nmap <C-Up> 10<Up>
imap <C-Up> <C-o>10<Up>

但这意味着每个映射重复两次。为了避免重复,我尝试“重载”其他一些键,然后将其用于特定于模式的部分:

" F12 selects prefix suitable for current mode
nmap <F12> <Nop>
imap <F12> <C-o>
" single mapping relying on "overloaded" F12
map <C-Up> <F12>10<Up>

由于某种原因,它不起作用。插入模式下的 F2 仅插入 <F2>作为文本。知道出了什么问题以及如何解决吗?如果您可以将解决方案扩展到视觉模式,则可获得奖励积分。

最佳答案

正如 ZyX 已经指出的那样,没有一个适用于所有模式的 :map 命令,因为它大多没有意义。如果您确实想为所有模式定义映射,请同时使用 :map:map!;请参阅:帮助 map 模式

由于您通常在 .vimrc 中只定义一次映射,所以我不会太担心小重复,但如果您这样做,您可以使用包装函数来避免这种情况:

function! MapBoth(keys, rhs)
execute 'nmap' a:keys a:rhs
execute 'imap' a:keys '<C-o>' . a:rhs
endfunction
call MapBoth('<C-Up>', '10<Up>')

关于Vim:多种模式的重载映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13850914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com