vim
在输入模式下设置按键映射
imap w p "按键w 映射p,按下w等同于按下p
imap k w "按键 k 映射成p
在输入模式下,当按下k键时按理说相当于按下w键, 所以应该输出w字母.
但由于 w又映射 了 p所以最终还是输出了p. 这是递归映射.
即 imap w p影响到其它和 w相关的按键映射.
如果不想被某个映射所影响可以使用关键字nore, 如下:
inoremap w p "按键w 映射p,按下w等同于按下p
imap k w "按键 k 映射成p
这样inoremap w p就不会被其它映射影响
映射延迟
下面是按下两次 w映射成 p的按键序列设置
inoremap ww p
当按下第一个w时 vim 会等待你按下第二个w. 这个等待时间就是延迟, 如果超过这个时间, 按键序列映射将重置,把这次的输入当成正常输入. 如果在没有超时按下第二个w就是映射输入.
当然这个延迟时间是可以设置 的(默认时间是1000毫秒), 下面把延迟时间设为300毫秒:
inoremap ww p
set timeoutlen=300
不同模式下的映射
vim有不同的模式, 如,插入(输入)、普通、命令模式等。
映射也有不同形式的map命令来对应上述模式,可以针对特定的模式设置键盘映射:
映射命令和有效模式的总览:
| 有递归的映射 | 无递归的映射 | 在什么模式下有效 |
|---|---|---|
| map | noremap | 普通,可视模式及操作符等待模式 |
| vmap | vnoremap | 可视模式 |
| nmap | nnoremap | 普通模式 |
| omap | onoremap | 操作符等待模式 |
| map! | noremap! | 插入和命令模式 |
| imap | inoremap | 插入模式 |
| cmap | cnoremap | 命令模式 |
键盘名称
几个字母组成的键盘按键需要用尖括号 <>
例如,esc表示连续按下 或 输出e、s、c、字母
<esc>表示键盘的Esc键,
在vim中一些按键说明:对于功能组合键
<A> 表示Alt(Alt键可以使用<M-key>或<A-key>来表示, 例子, <A-e>表示Alt + e
<S-F1>表示 Shift-F1
<Space>表示空格
<BS>表示 Backspace键
<Esc>代表Escape键:
<CR>代表Enter键;
<C-j>代表Ctrl + j.
<D>代表Command键.
例子
inoremap <C-j> <esc>: " 按Ctrl + j 等于按下Esc和:
inoremap <C-i> <CR> " Ctrl + j = 回车
inoremap <C-k> <BS> " Ctrl + k = 删除或退格键
nvim
init.vim 配置和vim一样,照上面搞就可以.
init.lua 有几种写法,还有很多功能 自己去看
github nvim-lua-guide-zh
gitee nvim-lua-guide-zh
我只记住觉得常用的
下面映射 需要neovim 0.7.0+版本
-- 默认是非递归的
vim.keymap.set('i', ']', 'ooo')
-- 想要递归 设置remap = true
vim.keymap.set('i', 'f', ']', {remap = true})
第一个参数 ‘i’ 表示起效模式,第二参数按什么键或组合键,第三参数,执行什么 可是函数,可以命令,或是输入 字符.
第四个参数设置为递归映射, 不设置默认为非递归。
第一个参数 是 和上面的vim表对应的
比如 'i'就是 inoremap, 'n'就是nnoremap
去 nvim-lua-guide-zh 看,里面有一张对应表
本文详细介绍了 Vim 编辑器中的按键映射原理和实践,包括如何在输入模式下设置按键映射,理解映射延迟,以及在不同模式下的映射。还探讨了如何避免映射的递归影响,并提供了具体的映射示例。此外,内容提到了 Neovim 的配置,以及使用 `vim.keymap.set` 进行非递归和递归映射的方法。
1万+

被折叠的 条评论
为什么被折叠?



