neovim 鍵位映射
neovim的鍵位映射是指將鍵盤上的一組按鍵綁定到vim 插件的某一個(gè)功能。
7 種模式
官方文檔原文:
There are seven sets of mappings
For Normal mode: When typing commands.
For Visual mode: When typing commands while the Visual area is highlighted.
For Select mode: like Visual mode but typing text replaces the selection.
For Operator-pending mode: When an operator is pending (after “d”, “y”, “c”, etc.). See below: omap-info.
For Insert mode. These are also used in Replace mode.
For Command-line mode: When entering a “:” or “/” command.
For Terminal mode: When typing in a :terminal buffer.
- 正常模式,也是打開文件后的默認(rèn)模式。在此模式下,可以執(zhí)行vim的基本操作。其他的任意模式均可以通過esc鍵回退到正常模式。
- 可視模式,在正常模式執(zhí)行v命令選中對應(yīng)的文本,進(jìn)入此模式。
- 選擇模式,和可視模式類似,也是通過v命令先選中文本,然后可以對選中的文本進(jìn)行替換。
- 追加操作符模式,在正常模式執(zhí)行完"d", “y”, "c"等操作后可以追加一個(gè)操作符。
- 插入模式,在正常模式執(zhí)行 “a”, “i”, "o"等命令后對文本進(jìn)行操作。
- 命令行模式,在正常模式執(zhí)行 “:”, “/” 命令后進(jìn)入此模式。
- 終端模式,正常模式執(zhí)行":terminal"命令后進(jìn)入此模式,此模式模擬進(jìn)入shell 的操作。通過再進(jìn)入插入模式,即可執(zhí)行shell 操作。
11種映射命令
這11種映射命令可以在7種模式中進(jìn)行鍵位映射。
COMMANDS | MODES |
---|---|
:map :noremap :unmap | Normal, Visual, Select, Operator-pending |
:nmap :nnoremap :nunmap | Normal |
:vmap :vnoremap :vunmap | Visual and Select |
:smap :snoremap :sunmap | Select |
:xmap :xnoremap :xunmap | Visual |
:omap :onoremap :ounmap | Operator-pending |
:map! :noremap! :unmap! | Insert and Command-line |
:imap :inoremap :iunmap | Insert |
:lmap :lnoremap :lunmap | Insert, Command-line, Lang-Arg |
:cmap :cnoremap :cunmap | Command-line |
:tmap :tnoremap :tunmap | Terminal |
6種映射參數(shù)
6種映射參數(shù)如下。
-
<buffer>
此映射命令在當(dāng)前buffer中立即生效。
-
<nowait>
當(dāng)匹配到輸入的字符時(shí)立即執(zhí)行,不再等待可能出現(xiàn)的后續(xù)字符。
-
<silent>
讓映射命令靜默執(zhí)行,不在命令行打印回顯。
-
<script>
防止一個(gè)功能被多次綁定。
-
<unique>
防止一個(gè)鍵位組合被多次綁定。
-
<expr>
可以在{rhs}中使用表達(dá)式(函數(shù))。
2種鍵位映射方案
通過API設(shè)置映射鍵
API定義如下
nvim_set_keymap({mode}, {lhs}, {rhs}, {*opts})
Parameters:
- {mode} 模式簡寫
"n", "i", "v", "x" for nmap, imap, vmap, xmap
"!", "" for :map!, :map
"ia", "ca" or "!a" for abbreviation in Insert mode, Cmdline mode, or both
- {lhs} 要綁定的鍵位組合
- {rhs} 要綁定的目標(biāo)功能
- {*opts} 支持除了buffer之外的映射參數(shù),此外,還支持 "noremap","desc","callback","replace_keycodes" 等參數(shù)
此API的調(diào)用方式為,vim.api.nvim_set_keymap()文章來源:http://www.zghlxwxcb.cn/news/detail-516366.html
例子文章來源地址http://www.zghlxwxcb.cn/news/detail-516366.html
vim.api.nvim_set_keymap(
"n",
"<F6>",
[[<cmd>lua require('cscope_maps').cscope_prompt('s', vim.fn.expand("to find a string"))<cr>]],
{ noremap = true, silent = true }
),
在正常模式將功能鍵 F6 綁定到 cscope_maps 這個(gè)lua 模塊的某項(xiàng)功能上。
通過命令設(shè)置映射鍵
{command} {argument} {lhs} {rhs}
- {command} 11種映射命令
- {argument} 6種映射參數(shù)
- {lhs} 要綁定的鍵位組合
- {rhs} 要綁定的目標(biāo)功能
特殊鍵位
標(biāo)記法 | 描述 |
---|---|
<Nul> |
0 |
<BS> |
退格鍵 |
<Tab> |
tab鍵 |
<NL> |
換行 |
<CR> <Return> <Enter>
|
回車 |
<Esc> |
esc 鍵 |
<Space> |
空格鍵 |
<lt> |
小于號 |
<Bslash> |
\ |
<Bar> |
| |
<Del> |
delete 鍵 |
<CSI> |
主要用于檢測terminal類型 |
<EOL> |
根據(jù)系統(tǒng)不同可以是<CR> , <NL> 或者 <CR> <NL>
|
<Ignore> |
取消字符等待功能 |
<NOP> |
no-op: 什么都不做 |
<Up> <Down> <Left> <Right>
|
光標(biāo)上下左右移動鍵 |
<S-Up> <S-Down> <S-Left> <S-Right>
|
shift鍵 + 光標(biāo)上下左右移動鍵 |
<C-Left> <C-Right>
|
ctrl鍵 + 光標(biāo)左右移動鍵 |
<F1> - <F12>
|
功能鍵 F1 到 F12 |
<S-F1> - <S-F12>
|
shift鍵 + 功能鍵 F1 到 F12 |
<Help> <Undo> <Insert>
|
幫助、重做、插入鍵 |
<Home> <End>
|
home、end 鍵 |
<PageUp> <PageDown>
|
翻頁鍵 |
<kUp> <kDown> <kLeft> <kRight>
|
小鍵盤對應(yīng)鍵位 |
<kHome> <kEnd> <kOrigin>
|
小鍵盤對應(yīng)鍵位 |
<kPageUp> <kPageDown> <kDel>
|
小鍵盤對應(yīng)鍵位 |
<kPlus> <kMinus> <kMultiply> <kDivide>
|
小鍵盤對應(yīng)鍵位 |
<kPoint> <kComma> <kEqual> <kEnter>
|
小鍵盤對應(yīng)鍵位 |
<k0> - <k9>
|
小鍵盤對應(yīng)鍵位 |
<S-…> |
shift鍵 + 任意鍵 |
<C-…> |
ctrl鍵 + 任意鍵 |
<M-…> <A-…>
|
alt鍵 + 任意鍵 |
<D-…> |
command鍵 + 任意鍵 |
到了這里,關(guān)于neovim 鍵位映射的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!