效果图来一个:

http://vim.spf13.com/

这个网站里面的vim配置非常全,推荐.

下面是对这个vim快捷键总结:

<Leader> 是","

打卡一个二进制文件:
      输入':', 然后输入'%!xxd'

调整窗体大小:变大Ctrl+Shift+'=',变小Ctrl+w+'-'

复制粘贴:
  系统拷贝: " + y

  系统粘贴: ctrl + shift + v

  复制一行:  0y1y:  0跳转到行首,y1y复制一行,

  复制一个单词: ye :从当前位置复制到单词的末尾.

  复制某一部分: y2/foo 会一直复制到第二个foo出现的地方

只删除不剪切: 将删除的内容放入 black hole register "_ 中如 "_dd 就可以将当前行内容删除并且不会放在任何寄存器中。

删除: d0 删至行首。
    d$ 删至行尾。

插入模式:

  • a → 在光标后插入
  • o → 在当前行后插入一个新行
  • O → 在当前行前插入一个新行
  • cw → 替换从光标所在位置后到一个单词结尾的字符

Nerd Tree: ctrl + e只是显示nerdtree, 但是如果需要显示当前文件的nerd tree: ,nt

      r – 刷新当前目录及所有子目录
      R – 刷新当前根路径及所有子目录

关闭或开启缩进的dark/light模式: <leader>ig

窗口: ctrl + w切换窗口,  先键入ctrl + w然后再键入c:关闭窗口,

翻页:  ctrl + u向上翻页, ctrl + f 向下翻页

跳转: 首先需要安装:sudo apt-get install exuberant-ctags , ctrl+ ]跳转到定义,ctrl + t反向跳转,

    ctrl+d 向下翻页 d(down) , ctrl+u 向上翻页 u(p)

    0:跳到当前行首, ^:跳到当前行的第一个字符.

    fa→ 跳到这行a字母的下一个出现的地方。(对比 ; )会查找下一个(上一个)地方. 3fa→ 在这行中查找a出现的第三个位置.

    gg: 回到顶部, shift + g 回到底部.

    w: 跳转到下一个单词的开头,W:下一个单词(跳过标点), b: 跳到上一个单词, B:跳到上一个单词(跳过标点)e: 跳转到下一个单词的结尾.

    %:跳转对应的"([{" 处.

    *(对比#) : 跳到当前光标的下一个(上一个) 相同单词的地方
    ctrl +o/i : 向后跳转,向前跳转.

    如果有多处文件定义,首先实行":ts",然后选择定义的地方即可进入

区域选择:

    J→ 让所有行连接在一起

    <(对比>) → 向左(右)对齐.

    注释多行: 先用^跳转到行首,然后Ctrl-v进入列编辑模式,然后往下到你要注释段的末行,按I,这时光标会跳回选区的第一行,输入注释符,然后按Esc,完工。

    所选择的行的末尾添加一些东西: 

        • <C-v>
        • 跳到目的行 (jjj 或者 <C-d> 或者 /patternor%等等…)
        • $跳到行末尾
        • A, 写入一些文本,[按] ESC 键.

    行选择: shift + v

    选中{}里面的内容: 把光标放在{或}上面,按回车键即可以选中括号里面的内容. 另外选中(), [] 还有ifdef 宏定义体内的内容都是使用回车键选中即可

展开折叠:

    zm 关闭所有
    zr 打开
    zR 打开所有
    zc 折叠当前行
    za 打开当前折叠,再执行一次关闭当前折叠
    zd 删除折叠
    zD 删除所有折叠

NERD Commenter :

    ,ca :切换注释方式,比如C/C++ 的块注释/* */和行注释//

    ,cc :注释当前行

    ,c+空格  :切换注释/非注释状态

    ,cs  :以”性感”的方式注释

    ,cA :在当前行尾添加注释符,并进入Insert模式

    ,cu :取消注释

TagBar :

        <leader>tt打开当前文件的tag目录

surround: 修改包围符号,举例: 'hello'

                  输入cs'" 变成"hello"

              输入 cs'<q>变成  <q>hello</q> , 然后再输入 cst' 变回'hello'

              输入ds'删除包围符号,变成hello

              输入ysiw'添加包围符,变成'hello'

              输入yss' 整行添加包围符,变成'hello,world' 

修改配色:  

    echo colorscheme 256-jungle > ~/.vimrc.local,  所有的配色保存在~/.vim/bundle/vim-colors/ 以及 ~/.vim/bundle/vim-colorschemes/ 两个目录中.

    也可以直接在打开的vim中输入:color molokai 切换色彩主题.

    我主要用到是C,推荐几个:kruby

查找文件: ctrl + p 启用ctrlp插件,可以查找当前目录的,

      Press <c-f> and <c-b> 切换模式,Files, Buffers 和 MRU
      Press <c-d> 文件名查找.
      Press <c-r> 正则表达式模式查找.

替换命令:

  1:  s/old/new/    把当前行中模式old的第一次出现替换为new

   2:  s/old/new/g   把当前行中的每一个old替换为new

   3:  50,100s/old/new/g   把第50-100行之间的old替换为new

   4:  1,$s/old/new/g   把整个文本中的old替换为new

   5:  %s/old/new/g     把整个文本中的old替换为new

   6:  1,$s/old/new/gc 替换前要进行确认(想替换输入 y ,不想替换直接 回车)

  1. 删除行尾空格::%s/\s\+$//g
  2. 删除行首多余空格:%s/^\s*// 或者 %s/^ *//
  3. 删除沒有內容的空行:%s/^$// 或者 g/^$/d
  4. 删除包含有空格组成的空行:%s/^\s*$// 或者 g/^\s*$/d
  5. 删除以空格或TAB开头到结尾的空行:%s/^[ |\t]*$// 或者 g/^[ |\t]*$/d

  去除windows编辑过的文件的换行符^M, "%s/\r/ ":

少量替换的推荐方法

其实很多时候可能仅仅需要对几个变量做更改,范围不大,调用这么销魂的命令明显得不偿失。这种情况下,最快捷的方法还是将光标移动到要修改的变量名前(最好是通过search),cw键入新的变量名Esc,然后n跳转到下一个match,然后.重复替换操作……

当然如果你对Vim命令情有独钟,下面的命令一样解决问题
:bufdo %s/pattern/replace/ge | update
针对所有的buffer(所有打开的文件)进行替换。还有更狠的:

:arg *.cpp	 #当前路径下的所有cpp文件
:argadd *.h #加上所有h头文件
:argdo %s/pattern/replace/ge | update #对arg中定义的所有文件执行替换操作

 \=也是一个好用的工具:

This is number X

This is number X

This is number X

This is number X

This is number X

This is number X

This is number X

然后冒号进入Command-line模式 (关于Vim的几种模式)

:%s@X@\=line('.')

就得到了

This is number 1
This is number 2
This is number 3
This is number 4
This is number 5
This is number 6
This is number 7
This is number 8
This is number 9
This is number 10

\=其实就是对\=之后的表达式求值用来做替换。line('.')是一个返回数值的函数,返回当前行的行号,所以每一行的行号被作为\=的返回值,用来替换X,就得到了需要的结果。

其他方法比如做一个宏(Macro)来逐行递增也可以达到效果,但是不如用这个\=方便。
因为\=后面的部分是作为表达式来处理的,所以更复杂一些的替换都可以很简单的得到实现,比如 (先撤销掉之前的改动,下同):

:%s@X@\=line('.')*line('.')

就可以得到

This is number 1
This is number 4
This is number 9
This is number 16
This is number 25
This is number 36
This is number 49
This is number 64
This is number 81
This is number 100

我个人觉得最好用的是这个功能

:%s@X@\=printf("%03d", line('.'))

可以得到

This is number 001
This is number 002
This is number 003
This is number 004
This is number 005
This is number 006
This is number 007
This is number 008
This is number 009
This is number 010

自动补全snippet:
      比如,输入"for" 然后按tab键,用光标下键选择匹配的snippet,然后键入"ctrl + k"选择想要的snippet。snippet的格式中$1,$2分别表示按tab匹配$1,再按一次tab匹配$2.

surround插件操作:

    "helloworld" -> ds"(删除"surrounding) -> helloworld

      "helloword" -> cs") -> (helloword)

      "helloword" -> cs"( -> ( helloword ), 所有surrounding符号左边的替换都会加上空格,右边的不会。

       if *x>3 {      -> ysW) ->if (*x>3) {,        ys添加一个surround, w表示word, W表示WORD(被空格隔开的连续的字符串), p代表paragraph

fjdskfjkj fdjskfl fdskajfkl fdsaaf  -> yss" -> " fjdskfjkj fdjskfl fdskajfkl fdsaaf"

       ci[ ci( ci< ci{ 删除一对surrounding并进入插入模式继续编辑。

di: 剪切surrounding之间的文本;  yi复制。 ca:同ci,但修改内容包括surrounding符号本身。 da, ya同, a均表示包含surrounding符号本身。

      t 表示html/xml 的一对标签, 比如  <div>abc</div> ->dst -> abc

TAB替换为空格: 
    :set ts=4
    :set expandtab
    :%retab!
显示空格:

:b 27   --  buffer 切换跳转, 这个就是切换到编号27的buffer, 显示buffer可以使用ls命令。 27和b之间可以不加空格,另外加入27是test.c 输入"te"也是可以跳转过去的。

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

.  重复上一次操作

自动补全选择:首先用光标键选中需要补全的内容,然后ctrl + j,即可

显示变量和函数tag: <Leader>tt

nnoremap,inoremap,vnoremap

前缀代表生效范围
inoremap就只在插入(insert)模式下生效
vnoremap只在visual模式下生效
nnoremap就在normal模式下(狂按esc后的模式)生效
这样可以减少快捷键所用到的键位组合的个数
一个组合可以有多种用途 就不用费劲心思思考 该映射哪个没被绑定过的键了

出现的问题:

1. 升级到spf13 3.0版本,编辑模式 光标键变成 ABCD?

解决: 修改 .vimrc.before文件: let g:spf13_no_omni_complete = 1

2. 升级到spf13 3.0版本,提示:

neocomplete does not work with this version of Vim.
It requires Vim 7.3.885 or later with Lua support ("+lua").

解决: vim-nox
vim-gtk
vim-gnome
vim-athena   根据自己的系统类型安装其中的一个

vim spf13的更多相关文章

  1. Vim插件安装

    一.常用的插件 sudo apt-get install vim vim-scripts vim-docsudo apt-get install ctagssudo apt-get install v ...

  2. spf13-vim – The Ultimate Distribution for Vim Editor

    spf13-vim is a cross platform and highly customizable assortment of vim plugins and various resource ...

  3. Vim完全教程

    一.简介 世界上只有三种编辑器,EMACS.VIM和其它.   我们所处的时代是非常幸运的,有越来越多的编辑器,相对于古老的VIM和EMACS,它们被称为现代编辑器.我们来看看这两个古董有多大年纪了: ...

  4. linux下开发c第一弹--相关环境需求

    我用的是mac,mac和linux一般集成了一定的开发环境,基本上需要gcc.vim.gdb之类的,linux下需要apt-get,mac下homebrew的brew install都可以解决问题.同 ...

  5. Mac应用推荐

    知识管理 Outline Curio Together 开发 Clion Vim + spf13 Transmit 辅助应用 Moom PopClip Timing AppClean Markdown ...

  6. centos7(debian,manjora,freebsd)命令及安装mysql、git、gpg、gogs,安装docker,zsh,chrome

    最小安装: 1. 选择English 2. DATE & TIME 修改好本地时间 SOFTWARE SELECTION默认的Minimal Install就好 INSTALLATION DE ...

  7. macvim/babun+spf13-vim

    mac: macvim brew install macvim --with-cscope --with-lua --with-override-system-vim brew linkapps ma ...

  8. fedora kde桌面系统配置

    本文向大家分享个人将fedora操作系统作为工作生活首选桌面系统的一些配置经验,系统版本与fedora最新版本保持一致,当前为fedora 25. #添加rpm源su -c 'dnf install ...

  9. linux桌面发行版简介

    本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/linux_desktop_distribution linux系 ...

随机推荐

  1. As3 里的正则相关

    用正则的时候 不要用if(content.match("test").length > 0) ...; 改成 if(content.match(/test/g).length ...

  2. C# Thread多线程学习

    自我学习理解:一个程序中包括多个进程,每个进程包括多个线程,多个线程可同时做不同的事情(说是同时,但它是交换执行的,人感觉像是同时罢了). 优点:提高CPU的使用率. 线程同步:同步就是指一个线程要等 ...

  3. jquery中的 .html(),.val().text()

    .html(),.text(),.val(),.html()用为读取和修改元素的HTML标签,包括标签内的内容.text()用来读取或修改元素的纯文本内容,去除 html 标签.val()用来读取或修 ...

  4. DOM Ready 详解

    DOM Ready 概述 熟悉jQuery的人, 都知道DomReady事件. window.onload事件是在页面所有的资源都加载完毕后触发的. 如果页面上有大图片等资源响应缓慢, 会导致wind ...

  5. Python学习笔记——面向对象基础

    1.类和实例 1.1类的定义 类的定义使用class关键字,其后紧跟类名(通常大写开头),紧接着是(object),object是该类继承的类名,没有就继承object类. 实例化时就是类名+(),有 ...

  6. Windows使用Apache2配置Git服务器

    Windows使用Apache2配置Git服务器 本文地址:http://www.cnblogs.com/cnscoo/p/3373095.html Git下载: 网站:https://code.go ...

  7. 最浅显、易懂的Linux 硬链接与软链接的理解

    正文: Linux上的文件可以这么理解:文件-->文件名.文件是一个Object,也就是磁盘上的二进制数据.一个文件可以有多个文件名,平时我们都是通过文件名访问文件Object. 这样,硬链接可 ...

  8. MySQL安装(以程序的方式启动)zip版

    电脑环境 win10 64位 企业版 1.解压zip文件到某路径下. 2.复制目录下的my-default.ini 改名字(my.ini) 3.打开my.ini [mysqld]下面加上charact ...

  9. bzoj 3784: 树上的路径 堆维护第k大

    3784: 树上的路径 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 88  Solved: 27[Submit][Status][Discuss] ...

  10. CAS单点登录配置[1]:准备工作

    关于CAS是什么这里就不在赘述,网友将它比喻成旅游景点的套票,买了一个套票就可以观看所有景点,不需要一个景点买一次票...我们重点介绍CAS单点登录的配置. 工具/原料 1.配置好JDK环境,否则不方 ...