Vi学习

趁着台风,在家学习学习vi

vim的配置

  1. .vimrc文件是vim的配置文件,位于~/.vimrc, vim的字体 快捷键 插件 均可通过配置文件配置
    前缀键;各类 vim 插件帮助文档中经常出现 <leader>,即,前缀键。vim 自带有很多快捷键,再加上各类插件的快捷键,大量快捷键出现在单层空间中难免引起冲突,为缓解该问题,引入了前缀键 <leader> , 默认的前缀键是\
  " 定义快捷键的前缀,即<Leader>
  let mapleader=";"
  1. 插件管理
    .vim/ 目录是存放所有插件的地方。vim 有一套自己的脚本语言 vimscript,通过这种脚本语言可以实现与 vim 交互,达到功能扩展的目的。一组 vimscript 就是一个 vim 插件,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

不论是直接拷贝插件到目录,还是通过 *.vba 安装,都不便于插件卸载、升级,后来又出现了管理插件的插件 vundle。

我希望每个插件在 .vim/ 下都有各自独立子目录,这样需要升级、卸载插件时,直接找到对应插件目录变更即可;另外,我希望所有插件清单能在某个配置文件中集中罗列,通过某种机制实现批量自动安装/更新/升级所有插件。vundle(https://github.com/VundleVim/Vundle.vim )为此而生,它让管理插件变得更清晰、智能。
vundle 会接管 .vim/ 下的所有原生目录,所以先清空该目录,再通过如下命令安装 vundle

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'
" 插件列表结束
call vundle#end()
filetype plugin indent on

其中,每项
Plugin 'altercation/vim-colors-solarized'
对应一个插件,后续若有新增插件,只需追加至该列表中即可;
需要安装插件,先找到其在 github.com 的地址,再将配置信息其加入 .vimrc 中的call vundle#begin() 和 call vundle#end() 之间,最后进入 vim 执行
:PluginInstall
便可通知 vundle 自动安装该插件及其帮助文档。

要卸载插件,先在 .vimrc 中注释或者删除对应插件配置信息,然后在 vim 中执行
:PluginClean

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

Vim操作

移动

  • hjkl
  • gg 文件第一行
  • G 文件最后一行
  • 123+G 跳转到指定行 ( 4% 数字+% 按百分比跳转 )
  • H/M/L 跳转到当前屏幕的 顶部/中间/底部
  • ^ 移动到行首第一个非空白, 0 移动到行首
  • $ 移动到行尾 (^ $ 和正则一样)
  • % 移动到当前代码区块的开始/结尾(匹配(),[],{})
  • ctrl + g 查看当前文件总行数
按单词移动
  • w / b 下一个/上一个 单词词首
  • W / B 下一个/上一个 字符串头
  • e / ge 下一个/下一个 单词词尾
  • E / gE 下一个/上一个 字符串尾部

上面这些命令都使用’iskeyword‘选项中的字符来确定单词的分界,还有几个命令,只把空白字符当做”单词“的分界。当然,这里说的”单词“已经不是传统意义上的单词了,而是由非空白字符构成一串字串

查找

  • /xxx 查找光标后的单词 xxx
  • ?xxx 查找光标前的单词 xxx
  • n / N 移动到下一个/上一个 匹配
  • ftext 在当前行向前查找text
  • Ftext 在当前行向后查找text
  • :g/text/command 在所有包含text的行运行command所表示的命令
  • :v/text/command 在所有不包含text的行运行command所表示的命令

vim保存了查找历史, 在输入 / 或 ? 后, 可以通过 <C-p> 和 <C-n> 或者上下光标键, 翻看历史记录, 再次查找

另外你还可以使用 q/ 和 q? 命令,在vim窗口最下面打开一个新的窗口,这个窗口会列出你的查找历史记录,你可以使用任何vim编辑命令对此窗口的内容进行编辑,然后再按回车,就会对光标所在的行的内容进行查找。

vim中有许多与查找相关的选项设置,其中最常用的是incsearch(输入内容时, 即对输入的内容开始匹配) ,hlsearch(高亮), ignorecase(忽略大小写)。

替换 ( :s 命令)

:[range]s/from/to/[flags]

range:范围,如果没有指定范围,则作用于但前行。

  • :1,10s/from/to/ 表示在第1到第10行(包含第1,第10行)之间搜索替换;
  • :10s/from/to/ 表示只在第10行搜索替换;
  • :%s/from/to/ 表示在所有行中搜索替换;
  • 1,$s/from/to/ 同上。

flags 有如下四个选项

  • c confirm,每次替换前询问;
  • e error, 不显示错误;
  • g globle,不询问,全部替换。如果不加 g 选项,则只替换每行的第一个匹配到的字符串;
  • i ignore,忽略大小写。

这些选项可以合并使用,如 cgi 表示不区分大小写,全部替换,替换前询问。

  • & 重复执行最后的 :s (替换)命令

执行Shell命令

:!ls -al

撤销

  • u 撤销上一次操作
  • Ctrl+r 恢复上一步被撤销的操作

删除

  • x 删除当前字符
  • X 删除光标前的字符, 前面可以加数字
  • dw 删除一个词
  • dd 删除当前行

复制, 粘贴, 剪切

选中文字
  • v+光标移动 (按字符选择)高亮选中所要的文本,然后进行各种操作(比如,d表示删除)。
  • V (按行选择)
  • v+选中的内容+c 更改选中的文字
复制 :y(ank)
  • y 用v命令选中文本后,用y进行复制
  • yy 复制当前行, 等同于(Y)
  • y0 复制当前位置到行首
  • y$ 复制当前位置到行末
粘贴
  • p 在光标位置之后粘贴
  • P 在光标位置之前粘贴
剪切
  • v + 选中的内容 + d 剪切

剪切板

  1. 简单的复制粘贴
    vim提供12个剪贴板,它们的名字分别为vim有11个粘贴板,分别0,1, 2 ... 9, a, "; 如果开启了系统剪贴板,则会另外多出两个 + 和 *。使用 :reg 命令,可以查看各个粘贴板里的内容。
    :reg
    在vim中简单用y只是复制到 " (双引号)粘贴板里,同样用p粘贴的也是这个粘贴板里的内容。

  2. 复制和粘贴到指定剪贴板
    要将vim的内容复制到某个粘贴板,需要退出编辑模式,进入正常模式后,选择要复制的内容,然后按 "Ny 完成复制,其中N为粘贴板号(注意是按一下双引号然后按粘贴板号最后按y),例如要把内容复制到粘贴板a,选中内容后按 "ay 就可以了。
    要将vim某个粘贴板里的内容粘贴进来,需要退出编辑模式,在正常模式按 "Np ,其中N为粘贴板号。比如,可以按 "5p 将5号粘贴板里的内容粘贴进来,也可以按 "+p 将系统全局粘贴板里的内容粘贴进来。

  3. 系统剪切板
    Vim支持系统剪贴板,需要打开clipboard功能。使用下面的命令,检查当前版本的Vim,是否支持clipboard。
    $ vim --version
    如果不支持的话,需要安装图形化界面的vim(即gvim),或者重新编译vim。
    $ sudo apt-get install vim-gnome
    另一种方法,是安装vim-gui-common。
    $ sudo apt-get install vim-gui-common

缩进文本

选项 作用
^i(ctrl+i)或tab 插入文本时,插入移动的宽度,移动宽度是事先定义好的
:set ai 打开自动缩进
:set sw=n 将移动宽度设置为n个字符
n<< 使n行都向左移动一个宽度
n>> 使n行都向右移动一个宽度,例如 3>> 就将接下来的三行每行都向右移动一个移动宽度

多窗口

参考:
[https://github.com/yangyangwithgnu/use_vim_as_ide#0.1]
[http://easwy.com/blog/archives/advanced-vim-skills-basic-move-method/]
[https://github.com/ruanyf/articles/blob/master/dev/vim/operation.md]
[http://tanqisen.github.io/blog/2013/01/13/vim-search-replace-regex/]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容