vim

配置文件

/etc/vimrc 整体配置文件
~/.vimrc 用户配置文件,需要自己建立
使用『 set hlsearch 』或『 :set hlsearch 』,亦即最前面有没有冒号『 : 』效果都是一样的! 至于双引号则是批注符号!

"这个档案的双引号 (") 是批注
set hlsearch            "高亮度反白
set backspace=2         "可随时用退格键删除

基本操作

鼠标

查看鼠标相关帮助

:help 'mouse'

设置开启鼠标,使用a模式

set mouse=a

光标移动

  • 光标移动前边可以加数字
    10j
  • 翻页
    ctrl+ f(下翻一页)、b(上翻一页)、d(下翻半页)、u(上翻半页)
  • 行首
    0,行尾:$
  • 光标向后面移动 20 个字符
    20 数字加空格
  • 跳行移动(以屏幕为单位)
    H、M、L、G,屏幕移动到这个屏最上方的那一行的、中央那一行的、最下方那一行的、档案的最后一行的第一个字符
  • 指定行数跳行
    nG,gg=1G

搜索和替换

shift+# 在文件中搜索当前光标所在单词
/word
向光标之下寻找一个名称为 word 的字符串
?word
向光标之上寻找一个字符串名称为 word 的字符串
n
重复前一个搜寻的动作
:n1,n2s/word1/word2/g 在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 。如果在s前边有“%”则是全文替换,没有就只替换一个。如果后边没有“g“没一行就只替换一个。
%s/word1//c 加”c"提示用户确认替换
如果在当前文件内替换,[range] 不用指定,默认就在当前文件内;
如果在当前选中区域,[range] 也不用指定,在你键入替换命令时,vim 自动将生成如下命令:
:'<,'>s/{pattern}/{string}/[flags]
你也可以指定行范围,如,第三行到第五行:
:3,5s/{pattern}/{string}/[flags]

大小写设置

:set ic (ignore case) 忽略大小写
:set noic 不忽略大小写

/\CWord : 区分大小写的查找
/\cword : 不区分大小写的查找

vimgrep

vimgrep /匹配模式/[g][j] 要搜索的文件/范围 
g:表示是否把每一行的多个匹配结果都加入
j:表示是否搜索完后定位到第一个匹配位置

vimgrep /pattern/ %           在当前打开文件中查找
vimgrep /pattern/ *             在当前目录下查找所有
vimgrep /pattern/ **            在当前目录及子目录下查找所有
vimgrep /pattern/ *.c          查找当前目录下所有.c文件
vimgrep /pattern/ **/*         只查找子目录

cn                                          查找下一个
cp                                          查找上一个
copen                                    打开quickfix
cw                                          打开quickfix
cclose                                   关闭qucikfix
help vimgrep                       查看vimgrep帮助

复制删除

剪切其实也就顺带删除了所选择的内容,所以既可以当剪切命令用,也可以当删除命令使用

x, X 支持加n x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 键)
dd 支持加n 删除游标所在的那一整行
dw 删除光标后单词部分
daw 删除光标所在的单词
dG 删除光标所在到最后一行的所有数据
d$ 删除游标所在处,到该行的最后一个字符
yy 支持加n 复制游标所在的那一行 加n后(复制光标所在的向下 n 行)
yG 复制游标所在行到最后一行的所有数据
y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
p, P p 粘贴在下一行,P 为贴在游标上一行
u 撤销
[Ctrl]+r 重做

一般模式切换到命令行模式

:w [filename] 另存为
:r [filename] 将 『filename』 这个档案内容加到游标所在行后面
:n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个档案
:! command 暂时离开 vi 到命令行模式下执行 command 的显示结果

进阶

我们在使用 vim 编辑时, vim 会在与被编辑的档案的目录下,再建立一个名为 .filename.swp 的档案,防止同时操作和意外退出

区块选择

v 会将光标经过的地方反白选择
[Ctrl]+v 区块选择,可以用长方形的方式选择资料
y 将反白的地方复制起来
d 将反白的地方删除掉

多档案编辑

:n 编辑下一个档案
:N 编辑上一个档案
:files 列出目前这个 vim 的开启的所有档案

多窗口功能

:sp {filename} 如果没有fielname,则是打开同一档案
[ctrl]+w+ j
[ctrl]+w+↓ 按键的按法是:先按下 [ctrl] 不放, 再按下 w 后放开所有的按键,然后再按下 j (或向下箭头键),则光标可移动到下方的窗口。
[ctrl]+w+ k
[ctrl]+w+↑ 同上,不过光标移动到上面的窗口。
[ctrl]+w+ q 其实就是 :q 结束离开啦! 举例来说,如果我想要结束下方的窗口,那么利用 [ctrl]+w+↓ 移动到下方窗口后,按下 :q 即可离开, 也可以按下 [ctrl]+w+q 啊!

vim插件

.vim/ 目录

是存放所有插件的地方。vim 有一套自己的脚本语言 vimscript,通过这种脚本语言可以实现与 vim 交互,达到功能扩展的目的。一组 vimscript 就是一个 vim 插件

插件安装

vim 插件目前分为 *.vim 和 *.vba 两类
前者是传统格式的插件,实际上就是一个文本文件,通常 someplugin.vim(插件脚本)与 someplugin.txt(插件帮助文件)并存在一个打包文件中,解包后将 someplugin.vim 拷贝到 ~/.vim/plugin/ 目录,someplugin.txt 拷贝到 ~/.vim/doc/ 目录即可完成安装,重启 vim 后刚安装的插件就已经生效,但帮助文件需执行 :helptags ~/.vim/doc/ 才能生效,可通过 :h someplugin 查看插件帮助信息。
传统格式插件需要解包和两次拷贝才能完成安装,相对较繁琐,所以后来又出现了 *.vba 格式插件,安装便捷,只需在 shell 中依次执行如下命令即可

vim someplugin.vba
:so %
:q

安装管理插件的插件 vundle

vundle 会接管 .vim/ 下的所有原生目录,所以先清空该目录,再通过如下命令安装

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

接下来在 .vimrc 增加相关配置信息:

" vundle 环境设置
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
" vundle 管理的插件列表必须位于 vundle#begin() 和 vundle#end() 之间
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'altercation/vim-colors-solarized'
Plugin 'tomasr/molokai'
Plugin 'vim-scripts/phd'
Plugin 'Lokaltog/vim-powerline'
Plugin 'octol/vim-cpp-enhanced-highlight'
Plugin 'nathanaelkane/vim-indent-guides'
Plugin 'derekwyatt/vim-fswitch'
Plugin 'kshenoy/vim-signature'
Plugin 'vim-scripts/BOOKMARKS—Mark-and-Highlight-Full-Lines'
Plugin 'majutsushi/tagbar'
Plugin 'vim-scripts/indexer.tar.gz'
Plugin 'vim-scripts/DfrankUtil'
Plugin 'vim-scripts/vimprj'
Plugin 'dyng/ctrlsf.vim'
Plugin 'terryma/vim-multiple-cursors'
Plugin 'scrooloose/nerdcommenter'
Plugin 'vim-scripts/DrawIt'
Plugin 'SirVer/ultisnips'
Plugin 'Valloric/YouCompleteMe'
Plugin 'derekwyatt/vim-protodef'
Plugin 'scrooloose/nerdtree'
Plugin 'fholgado/minibufexpl.vim'
Plugin 'gcmt/wildfire.vim'
Plugin 'sjl/gundo.vim'
Plugin 'Lokaltog/vim-easymotion'
Plugin 'suan/vim-instant-markdown'
Plugin 'lilydjwg/fcitx.vim'
" 插件列表结束
call vundle#end()
filetype plugin indent on

其中,每项

Plugin 'dyng/ctrlsf.vim'

对应一个插件(这与 go 语言管理不同代码库的机制类似)。后续若有新增插件,只需追加至该列表中即可。vundle 支持源码托管在 https://github.com/ 的插件。以 ctrlsf.vim 为例,它在 .vimrc 中配置信息为 dyng/ctrlsf.vim,vundle 很容易构造出其真实下载地址 https://github.com/dyng/ctrlsf.vim.git ,然后借助 git 工具进行下载及安装。
此后,需要安装插件,先找到其在 github.com 的地址,再将配置信息其加入 .vimrc 中的call vundle#begin() 和 call vundle#end() 之间,最后进入 vim 执行

:PluginInstall

便可通知 vundle 自动安装该插件及其帮助文档。比如,我在 .vimrc 中添加了 4 个插件:

Plugin 'VundleVim/Vundle.vim'
Plugin 'altercation/vim-colors-solarized'
Plugin 'Lokaltog/vim-powerline'
Plugin 'octol/vim-cpp-enhanced-highlight'

当前,.vim/ 为空,当我在 vim 中执行 :PluginInstall 时,整个自动安装过程便开始了
要卸载插件,先在 .vimrc 中注释或者删除对应插件配置信息,然后在 vim 中执行

:PluginClean

插件更新频率较高,差不多每隔一个月你应该看看哪些插件有推出新版本,批量更新,只需执行

:PluginUpdate

vim剪切板

  1. vim有12个粘贴板,分别是0、1、2、...、9、a、“、+;用:reg命令可以查看各个粘贴板里的内容。在vim中简单用y只是复制到“(双引号)粘贴板里,同样用p粘贴的也是这个粘贴板里的内容;
  2. 要将vim的内容复制到某个粘贴板,按"Ny完成复制,其中N为粘贴板号(注意是按一下双引号然后按粘贴板号最后按y),例如要把内容复制到粘贴板a,选中内容后按"ay就可以了,有两点需要说明一下:
    * “号粘贴板(临时粘贴板)比较特殊,直接按y就复制到这个粘贴板中了,直接按p就粘贴这个粘贴板中的内容;
    * +号粘贴板是系统粘贴板,用"+y将内容复制到该粘贴板后可以使用Ctrl+V将其粘贴到其他文档(如firefox、gedit)中,同理,要把在其他地方用Ctrl+C或右键复制的内容复制到vim中,需要在正常模式下按"+p;
  3. 要将vim某个粘贴板里的内容粘贴进来,按"Np,其中N为粘贴板号,如上所述,可以按"5p将5号粘贴板里的内容粘贴进来,也可以按"+p将系统全局粘贴板里的内容粘贴进来。
posted @ 2016-08-11 23:37  jcuan  阅读(240)  评论(0编辑  收藏  举报