VIM命令
2018-10-29 本文已影响0人
郁中道
打印信息
echo 打印信息,脚本运行完毕后打印的信息就会消失
echom 打印信息,信息会被存储在==messages==中,适合再次查看信息
设置选项
布尔选项
布尔选项都可以设置off或者on,都可以通过:
:set <name> 打开选项
:set no<name> 前缀no关闭选项
:set <name>! !切换布尔选项
:set <name>? ?查看选项当前值
键值选项
键值选项可以设置一个值。可以通过:
:set <name>=<value> 设置选项的值
:set <name? ?查看选项当前值
一次性设置多个选项
例如:
:set numberwidth=2
:set nonumber
:set number numberwidth=6 同时设置两个选项
基本映射
使用 map 命令可以同时映射 normal模式和visual模式 的键盘,如:
:map - x - 映射为 x
:map - dd - 映射为 dd
使用 <keyname> 映射一个特殊的按键
:map <space> viw 高亮选中整个单词
:map <c-d> dd ctrl+d 将执行dd命令
==注意 键盘映射后面无法使用注释:==,如
:map <space> viw "Select word
当按下空格键时,Vim认为是想执行命令 viw<space>"<space>Select<space>word
模式映射
- nmap normal模式的键盘映射
- vmap visual模式的键盘映射
- imap insert模式的键盘映射
- nunmap 删除normal映射
- vunmap 删除visual映射
- iunmap 删除insert映射
映射的递归特性
:nmap - dd
:nmap \ -
当按下 \ 时,Vim会解释其为 - 。但是因为映射了 - !Vim会继续解析 - 为 dd , 即它会删除整行。
:nmap dd O<esc>jddk
这个映射实际上是 递归 的!当你按下dd后,Vim解释为:
- dd存在映射,执行映射的内容。
- 新建一行。
- 退出insert模式。
- 向下移动一行。
- dd 存在映射,执行映射的内容。
- 新建一行。
- 退出insert模式。
- 向下移动一行。
- dd 存在映射,执行映射的内容。然后一直这样。
==这个映射永远不会结束!==
映射的递归特性存在危险,自定义的映射和插件极容易发生冲突
非递归映射
Vim提供另一组映射命令,这些命令创建的映射在运行时, 不会进行递归
:nnoremap
:vnoremap
:inoremap
:noremap
正常情况下应当优先使用这写不会产生递归的映射命令