vim中各种map格式

在vim我们经常会碰到map,map就是快捷键,本来很好理解,但是在vim里面,事情就变得复杂了

最基本的map用法是:

:map c a

把c映射成了a,在map生效的情况下,按下c就等同于按下了a

但事情就这样结束了吗?天真了,还有各种各样的nmap, omap,noremap,nnoremap,这都啥意思?

其实这些乱七八糟的map写法,其实本质是前缀+map:

//n和nore分别代表map的前缀
nnoremap = n + nore + map

前缀代表着各种不同的意思,来源于两个概念,一个叫vim的模式,一个叫递归map。

模式

vim模式众多,设置一个map的时候,可以指定它在哪个模式下生效,这就是模式前缀,经常被使用的模式和前缀为:

模式map前缀
Normal Moden
Visual Modev
Insert Modei
Select Modes
Command-Line/Ex Modec

比如说nmap,就意味着该map在normal模式下生效

nmap = n[ormal] map

递归

map还可以递归,这个很好理解,比如:

:map b c   // c被映射到b键
:map a b  // b又被递归为a键,也就是最终按下a等于c

默认的map就是递归的,但是我们可以让其非递归,就得靠nore前缀

noremap = nore[cursive] map

小结

有了递归前缀和模式前缀,明白各种map的意思了吧?

//在normal模式工作,且非递归的map
nnoremap = n[ormal] + nore[cursive] + map

有时候设置了乱七八糟的map,想清除掉怎么办?

  • unmap
  • mapclear

这两个命令都可以用来清除设置的快捷键,且这两个map一样可以和前缀结合

这里列出常用的一些map命令,默认map命令影响到普通模式和可视模式。

:map :noremap :unmap :mapclear
:nmap :nnoremap :nunmap :nmapclear
:vmap :vnoremap :vunmap :vmapclear
:imap :inoremap :iunmap :imapclear
:cmap :cnoremap :cunmap :cmapclear

查看map的帮助:

:help mapping

Ref

  • https://vi.stackexchange.com/questions/10573/what-is-gained-by-the-extra-sid-level-of-map-indirection-recommended-in-help
  • http://haoxiang.org/2011/09/vim-modes-and-mappin/


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

About Me

一位程序员,会弹吉他,喜欢读诗。
有一颗感恩的心,一位美丽的妻子,两个可爱的女儿
mail: geraldlee0825@gmail.com
github: https://github.com/lisuxiaoqi
medium: https://medium.com/@geraldlee0825