• Home
  • About
    • Road to Coding photo

      Road to Coding

      只要那一抹笑容尚存, 我便心无旁骛

    • Learn More
    • Email
    • Github
  • Posts
    • All Posts
    • All Tags

VimScript的学习(二)

18 Oct 2017

编辑Vimrc配置文件

有的时候会发现一些很容易提高效率的技巧

但是,且切来切去的打开Vimrc会打断你的思路

那么,怎么办呢?

设置特殊映射即可

let mapleader=","
nmap <leader>ev :vsplit $MYVIMRC<cr>
name <leader>sv :source $MYVIMRC<cr>

即可通过使用简短的快捷键完成修改并且重新加载vim的配置文件的功能

使用变编辑的这两个映射

可以快速完成,映射,加载的功能

Abbreviations(缩写)

在Vim这么强大的编辑器面前,有着各种各样的方便特性

比如说,我们现在要谈到的缩写,

缩写,这个特性的作用类似于映射

但是,与映射又不尽相同,

因为映射逐一扫描,不会考虑上下文环境,直接替换

但是,缩写会考虑上下文环境,进行合理的处理

一般情况下,缩写用于:

  • 解决平时一些经常出现的小问题,比如我自己经常写incldue

  • 处理一些,因为键位的问题,比如@fujie的:Q

而且,缩写有三种模式,替换模式暂不讨论

iabbrev 关键词 替换内容 (insert mode)
cabbrev 关键词 替换内容 (command mode)

输入要替换的内容后,直接空格就会进行替换

或者,输入 < cr > 也是可以进行缩写替换的

更多的时候,我们还可以使用”缩写替换”的功能来进行文本标签的书写

iabbrev @@ Evilcrow486@gmail.com
iabbrev ccopy Copyright.....

很方便的功能,不是吗?

更强大的Mappings


如果要使自己进步就需要做出一些改变

首先,从改掉之前的快捷键开始

noremap <esc> <nop>
nnoremap jk <esc>

首先从禁止掉< Esc >及一系列的方向键开始

强迫自己习惯新的,高效的,工作习惯

本地缓冲区及设置

这里,要钱车道的一个概念就是:本地缓冲区

即之前常用到的local

在,Mappings,Abbreviations,Options中可以使用< buffer >来指定缓冲区

在leader中,可以使用< localleader >*,简单来讲,就是一个本地的,局部变量的问题

第三点,某些布尔选项也是支持setlocal的

最后强调一点,相对而言,本地的设置会覆盖全局的,因为本地的更为具体

自动命令(Auto-command

映射,缩写,自动命令是使Vim可以高度定制化必不可少的强力工具

自动命令简单的讲:在Vim中触发某种事件的时候,让Vim去执行提前规定好的内容

举个例子:

autocmd BufNewFile * :write

这个例子,可以这样解释:

当Vim中新文件创建的事件触发时,执行 :w进行保存

(这些文件是任意文件,*进行匹配)

总结一下:

autocmd + 事件 + 匹配 + 操作处理

这解决了,我们经常处理到的,Vim在第一次保存前,并没有实际创建文件的问题

同时,autocmd可监控多个事件

多个事件使用 , 进行分隔

同时,Vim中有个不成文的规定,

所有的文件应该用BufRead与BufNewFile一起打开

autocmd BufNewFile,BufRead *.c setlocal nowrap

这样,不论何时,打开的C文件,都不能自动卷曲换行

而在所有的事件中,最有用的就莫过于FilType文件了

FilType文件会自动识别文件类型,然后执行autocmd

结合FilType事件与< buffer >,或者local的设定,就很棒,可以针对不同的缓冲区进行不同的配置,Perfect!

**切记,切记,使用FileType事件时,一定不要大写,一定要时小写! ! ! **



VimScript Share Tweet +1