0%

vimscript笔记——0——单行命令

预备知识

: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
2
3
4
:augroup testgroup
: autocmd!
: autocmd BufWrite * :echom "Cats"
:augroup END

Operator-Pending映射

一个Operator(操作)就是一个命令,你可以在这个命令的后面输入一个Movement(移动)命令,然后Vim开始对文本执行前面的操作命令,这个操作命令会从你当前所在的位置开始执行,一直到这个移动命令会把你带到的位置结束。

常用Operator有dyc,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外其他都是可选的

分割,可以使用+=来一条一条地定义要显示的代码

Thank you for your reward !