编辑器之神VIM的使用及配置

做生信要写代码,写代码就需要编辑器,在linux系统下有一款编辑器不能被忽略,就是VIM,江湖人称编辑器之神。当然,在一堆程序员里面千万不要讨论语言的好坏,也不能突然冒一句perl是世界上最好的脚本语言,不能,千万不能,要不然死的很难看。

所以讨论编辑器时也不能随便说哪个最好,人们常说vim是编辑器之神,继而又说他的对手emacs是神的编辑器。绕来绕去就是为了一个名分,所谓树争一身皮,编辑器争一口气。
VIM用好了以后的状态是这样子的:

写过程序的人都知道,编程的时候双手大部分时间都放在键盘上,或编码、或插入、或移动、或定位、或查找,这种连续操作的时间和频率远远大于阅读、翻页、设置字体、摆弄样式等文案工作,而二者往往产生很多停顿和间隙,而编程时的停顿是非常影响编程效率的,所以 Vim 的设计理念就是通过模式的转换、命令的组合和不计其数的插件,保证程序员在编程的过程中,双手尽可能保留在键盘中央的区域,并且,不需要鼠标

大多人看不起VIM的原因可能有一个:VIM上手容易,但学习曲线陡峭,很多人没有学会就放弃了。这不是我说的,是池建强老师说的。VIM的故事和详细用法可以查看池建强老师写的VIM系列,最终他把这个系列写成了一篇长文,说,谁才是最帅的编程工具?十分精彩,我觉得可以去读一读。微信不能外部链接,我把他放在了阅读原文里面。
VIM内置在linux系统下,在命令行输入 vim 然后enter键,就可以看到vim
vim的上手很简单,他有四种模式

  • 普通模式:Vim 启动后的默认模式,用来移动光标、删除文本、覆盖输入文本、恢复操作、粘贴文本等等。
  • 插入模式:输入 i 或 a 进入插入模式,在这个模式下敲击键盘会往文字缓冲区增加文字,相当于普通编辑器的编辑模式。
  • 可视模式:选择文本,可以行选、块选和依次选择,选择后可以进行复制、删除、排序等操作。
  • 命令模式:执行内部和外部命令,通过「: / ? !」可以进入命令模式,分别对应的是:执行内部命令、向上或向下搜索、执行外部命令。

假设我们写个名字叫11的perl程序,直接在命令行输入vim 11.pl enter键就OK了

1
vim 11.pl

接着我们按一下a或者i就进入插入模式,这时候在就可以通过键盘随便输入了,你打字的时候看一下左下方会有insert字样
假设我们现在已经写完程序,想要保存退出怎么办呢?
按esc键切换到命令行模式,同时按shift+:,就是shift键和冒号一起按,这时候左下角会出现冒号标志
输入wq就是保存退出
输入q!就是不保存直接退出
注意,如果操作不了,一定要确定正在使用的是英文输入法
这样就已经学完了

这时候要想到vim是效率神器,而且不需要鼠标就可以方便的复制粘贴,跳跃,所以接下来会有很多命令要学,我自己掌握的也不好,就不献丑了,至少我已经在用了,perl程序全是使用vim写的。

现在有个问题就是vim不好看,虽然不需要鼠标,全键盘操作,但我觉得界面太丑,没有电影里面那种花花绿绿代码齐发的感觉,现在我知道那个叫语法高亮,所以我又查了一下vim的配置。

很多时候长大了那些执念就是为了完成小时候未完成的心愿。

##VIM的配置
切换到家目录

1
cd ~

创建.vimrc文件

1
vim .vimrc

进入插入模式,复制下面代码,右击鼠标粘贴,不能是使用ctrl+V

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
filetype on
syntax on
set nu
set cindent
set ruler
set tabstop=4
set softtabstop=4
set expandtab
set shiftwidth=4
set backspace=indent,eol,start
set completeopt=preview,menu
set cursorline
set magic
set autoindent
set smartindent
set showmatch
set history=1000
set nobackup
set noswapfile
set ignorecase
set hlsearch
set incsearch
inoremap ' ''<ESC>i
inoremap " ""<ESC>i
inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap < <><ESC>i
inoremap { {}<ESC>i
set guifont=Bitstream_Vera_Sans_Mono:h10:cANSI

好了现在使用编辑器就有那种花花绿绿的感觉了,这是我写的一个perl程序:
mark

------ 本文结束------