预备知识
:echo $MYVIMRC得知.vimrc文件的位置
打印信息
:echo "Hello, world!,信息不会保存
:echom "Hello, world!,信息会保存
:messages,查看信息
设置选项
:set <name>,打开选项
:set no<name>,关闭选项
:set <name>!,切换选项
:set <name>?,查看选项当前值
:set <name>=<value>,改变非布尔选项的选项值
:set <name> no<name> <name>=<value> ...,设置多个选项的值
基本映射
:map 映射命令 原命令
<keyname>可用于特殊字符(按键)
模式映射
nmap,normal模式下有效
vmap,visual模式下有效
imap,insert模式下有效
精确映射
非递归映射,任何时候使用
noremap,任何模式下有效
nnoremap,normal模式下有效
vnoremap,visual模式下有效
inoremap,insert模式下有效
Leaders
let mapleader = ";",Leader
:let maplocalleader = ",",Local Leader
Abreviations
用于insert、replace和command模式下
iabbrev 输入字符 输出字符
Keyword Characters,输入非字母、数字、下划线的字符就会引发abbreviations替换
本地缓冲区的选项设置和映射
映射,e.g. :nnoremap <buffer> <localleader>x dd
设置,:setlocal <name> :setlocal no<name>
遮盖,本地缓冲区的映射会遮盖全局的映射
自动命令
autocmd <event0>,<event1>,... <pattern> :<command>
FileType事件,e.g. autocmd FileType python nnoremap <buffer> <localleader>c I#<esc>
本地缓冲区缩写
iabbrev <buffer> 输入字符 输出字符
自动命令组
为防止.vimrc中的autocmd ...自动命令被重复加载,需要将其放置在自动命令组中,并在自动命令组开头加上清除命令:
e.g.
1 | :augroup testgroup |
Operator-Pending映射
一个Operator(操作)就是一个命令,你可以在这个命令的后面输入一个Movement(移动)命令,然后Vim开始对文本执行前面的操作命令,这个操作命令会从你当前所在的位置开始执行,一直到这个移动命令会把你带到的位置结束。
常用Operator有d、y和c,e.g.
| 按键 | 操作 | 移动 |
|---|---|---|
| dw | 删除 | 到下一个单词 |
| ci( | 修改 | 在括号内 |
| yt, | 复制 | 到到逗号 |
Movement映射,:onoremap 映射命令 原命令
下面两条规则可以让你可以很直观的以多种方式创建operator-pending映射:
- 如果你的operator-pending映射以在可视模式下选中文本结束,Vim会操作这些文本。
- 否则,Vim会操作从光标的原始位置到一个新位置之间的文本。
e.g. :onoremap ah :<c-u>execute "normal! ?^==\\+\r:nohlsearch\rg_vk0"<cr>
execute用于替换字符串中的所有特殊字符串
normal!用于执行后面的字符
状态条
状态条中代码的通用格式:%-0{minwid}.{maxwid}{item},除了%和item外其他都是可选的
分割,可以使用+=来一条一条地定义要显示的代码