我的VIM入门
刚工作时搞过一段时间的VIM和EMACS,不过作为一个JAVA程序猿,用VIM来写JAVA代码还是不大现实(现在用IDEA),后面也就不了了之。最近在写前端代码和写博客时感觉VIM还是不错的,于是决定再把VIM拾起来。
裸的VIM并不是太好用,需要安装需要的插件,之前的玩法是下载对应的压缩包并修改配置,这个过程极其考验耐心和人品!
使用vundle管理插件
vundle让你不需要在纠结到哪里去找插件和配置,所有的插件都以相似的方式进行管理,很大程度上降低了使用成本!
~/.vim/bundle/,目录建好后下载vundle:
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
~/.vimrc里面完成:
set nocompatible " 关闭所有扩展功能
filetype off " 关闭对文件类型的自动检测
set rtp+=~/.vim/bundle/Vundle.vim " 加入运行时路径
call vundle#begin() " 初始化
" 插件列表开始
Plugin 'VundleVim/Vundle.vim'
" 插件列表结束
call vundle#end() " 完成
filetype plugin indent on " 打开文件类型检测
常用的插件来源配置有:
来源 | 说明 |
github.com | github上托管的插件(Plugin ‘tpope/vim-fugitive’) |
vim-scripts.org/vim/scripts.html | 在该站维护的插件(Plugin ‘L9’) |
配置完成后打开VIM就可以开始使用了,用到下面命令:
- :PluginList:打开插件列表
- :PluginInstall:安装插件
- :PluginSearch foo:搜索插件,找到之后可以选择安装
- :PluginClean:清理不用的插件(这个不是太懂)
winmanager插件时:
- 在.vimrc中添加
Plugin 'winmanager'
- 打开vim
- 执行
:PluginList
就可以看到winmanager插件 - 执行
:PluginInstall
进行安装
是不是比以前简单很多了?没有插件管理的繁琐,下面我们正式进入VIM之旅!
基本用法
刚从EditPlus切换到VIM时非常不适应,我只想简单地编辑文件而已,居然还要去考虑切换不同的模式:
- 命令模式
- 编辑模式
- 可视模式
命令模式可以通过一些简单的命令对文本进行快速的查看、修改,比用鼠标在EditPlus里面操作会更有效率。该模式用到的命令非常多,下面分类来看!
一、移动光标
可以在各个维度上进行随意地跳转:
命令 | 作用 |
h/j/k/l | 向左/向下/向上/向右移动 |
ctrl+f/b | 向上/向下翻页 |
ctrl+d/u | 向上/向下翻半页 |
$/0/^ | 行尾/行首/首字符 |
(/) | 上一句/下一句 |
w/b | 上一个词/下一个词 |
gg/G | 文档开始/文档结束 |
% | 括号对应的匹配处 |
ngg/nG/:n | 到第n行 |
H/M/L | 屏幕顶部/中间/底部 |
*/# | 当前字符下一次/上一次出现的位置 |
二、查找替换
命令 | 作用 |
:s/s1/s2 | 下一个s1替换为s2 |
:%s/s1/s2 | s1全部替换为s2 |
:s/s1/s2/g | 当前行的s1替换为s2 |
:n1,n2 s/s1/s2/g | 从n1到n2行的s1替换为s2 |
/xxxx | n向下继续查找、N则向上继续查找 |
mx | `x跳转到该书签处 |
`. | 上次编辑的位置 |
三、复制、剪切、粘贴、删除
在VIM中存在一些寄存器用来存放复制、删除的内容:
-
"
:最近删除或复制的内容 -
0
:最近复制的内容 -
1、2、、9
:最近一次的删除内容放入1,原先1的内容放入2,以此类推 -
%
:文件名 -
:
:命令 -
/
:查找的字符串
:reg来查看各寄存器中的内容!为了方便选取文本VIM中引入了可视模式,使用时先移动光标到开始位置,然后用下面命令进入可视模式:
-
ctrl+v
:块 -
v
:普通 -
V
:行
接着移动光标就可以选中文本并进行操作了!编辑时常用的命令有:
命令 | 作用 |
y | 复制选中文本,用 |
x | 剪切选中文本或者删除当前字符 |
d | 删除选中文本 |
p | 粘贴,用 |
dd | 删除当前行 |
dw | 删除光标后的一个词 |
dl | 删除一个字符 |
D/C | 删除到行尾 |
yy/Y | 复制一行 |
过程中可以使用u
和ctrl+r
来进行undo和redo。
四、宏
在造数据的时候常会遇到一些简单、机械的操作,这种一般是可以用宏来搞定:
-
px
:开始记录宏操作,x为小写字母 - 操作
-
q
:将操作记录到寄存器中 -
@x
:执行寄存器x中的操作 -
@@
:执行最近一次的录制
:reg来查看寄存器状态。
五、编辑
需要输入时通过下面命令进入插入模式:
命令 | 说明 |
i/a | 光标前/后插入 |
I/A | 在行首/尾插入 |
o/O | 后/前插入一行进行编辑 |
s/S | 删除一个字符/一行进行编辑 |
R | 替换模式,在画图的时候非常好用 |
多屏操作
写代码的时候通过搞几个文件是常有的事,分几个屏幕来做非常舒服,开启分屏方式有:
-
vim -On file1 file2 ...
:垂直分屏打开多个文件 -
vim -on file1 file2 ...
:水平分屏打开多个文件 -
ctrl+w s
:上下分割当前文件 -
ctrl+w v
:水平分割当前文件 -
:sp filename
:上下分割打开新文件 -
:vsp filename
:水平分割打开新文件
ctrl+w h/j/k/l/w,其中h/j/k/l是按照方向移动,w是移动到下一个屏幕!当你觉得屏幕的顺序有点不爽时可以使用ctrl+w H/J/K/L来移动分屏。另外也可以调整屏幕大小:
-
ctrl+w =
:所有屏幕都一样的高度 -
ctrl+w -
:降低高度 -
ctrl+w +
:增加高度
在编辑的时候可以在分屏中浏览目录:
-
:He
:上下分屏,在下面(:He!
则在上面)浏览目录 -
:Ve
:左右分屏,在左面(:Ve!
则在右面)浏览目录
:E在当前的屏幕中打开目录进行浏览,可以通过一些命令进行操作:
-
-
:到上级目录 -
s
:对文件排序 -
x
:执行文件 -
R
:修改文件名称 -
D
:删除文件 -
回车
:进入子目录
边看编写的时候需要在多个屏幕上同步滚动,使用:set scb
和:set scb
来绑定和解绑(这个功能还是非常好用的)!最后,编辑完成就可以用ctrl+w c
或ctrl+w q
(如果是最后一个屏幕则退出VIM)来关闭分屏!
总结
掌握了这些,简单的文本编辑应该问题不大了,后面会陆续针对更细节的东西来单独写。