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 看,里面有一张对应表