vim spf13
效果图来一个:

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 ,不想替换直接 回车)
- 删除行尾空格:
:%s/\s\+$//g - 删除行首多余空格:
%s/^\s*//或者%s/^ *// - 删除沒有內容的空行:
%s/^$//或者g/^$/d - 删除包含有空格组成的空行:
%s/^\s*$//或者g/^\s*$/d - 删除以空格或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的更多相关文章
- Vim插件安装
一.常用的插件 sudo apt-get install vim vim-scripts vim-docsudo apt-get install ctagssudo apt-get install v ...
- spf13-vim – The Ultimate Distribution for Vim Editor
spf13-vim is a cross platform and highly customizable assortment of vim plugins and various resource ...
- Vim完全教程
一.简介 世界上只有三种编辑器,EMACS.VIM和其它. 我们所处的时代是非常幸运的,有越来越多的编辑器,相对于古老的VIM和EMACS,它们被称为现代编辑器.我们来看看这两个古董有多大年纪了: ...
- linux下开发c第一弹--相关环境需求
我用的是mac,mac和linux一般集成了一定的开发环境,基本上需要gcc.vim.gdb之类的,linux下需要apt-get,mac下homebrew的brew install都可以解决问题.同 ...
- Mac应用推荐
知识管理 Outline Curio Together 开发 Clion Vim + spf13 Transmit 辅助应用 Moom PopClip Timing AppClean Markdown ...
- centos7(debian,manjora,freebsd)命令及安装mysql、git、gpg、gogs,安装docker,zsh,chrome
最小安装: 1. 选择English 2. DATE & TIME 修改好本地时间 SOFTWARE SELECTION默认的Minimal Install就好 INSTALLATION DE ...
- macvim/babun+spf13-vim
mac: macvim brew install macvim --with-cscope --with-lua --with-override-system-vim brew linkapps ma ...
- fedora kde桌面系统配置
本文向大家分享个人将fedora操作系统作为工作生活首选桌面系统的一些配置经验,系统版本与fedora最新版本保持一致,当前为fedora 25. #添加rpm源su -c 'dnf install ...
- linux桌面发行版简介
本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/linux_desktop_distribution linux系 ...
随机推荐
- x264_param_t结构
typedef struct x264_param_t { unsigned int cpu; // CPU 标志位 int i_threads; // 并行编码多帧; 线程数,为0则自动多线程编码 ...
- Nginx(一)初始环境的安装(php5.3+mysql5.1+fastcgi…)
关参考资源http://www.lnmp.org/index.html \\LNMP一键安装包http://www.howtocn.org/nginx \\Nginx模块参考手册中文版http://b ...
- Sublime Text3 个人使用心得
sublime与webstorm的比较: webstorm真心很强大,强大到能够几乎满足所有前端开发者编程的需求,方便的快捷键操作.代码提示.浏览器查看.工程管理.历史记录(可以找到之前编辑的内容,即 ...
- 【转】Spring事务管理
原文链接 在 Spring 中,事务是通过 TransactionDefinition 接口来定义的.该接口包含与事务属性有关的方法.具体如清单 1 所示: 清单 1. TransactionDefi ...
- js异步脚本
1.延迟脚本 HTML4.01为<script>标签定义了defer属性,为了表明脚本在执行时不会影响页面的构造.也就是说,脚本会在整个页面都解析完毕后再运行.因此在<script& ...
- LeetCode【第217题】Contains Duplicate
题目: ''' Given an array of integers, find if the array contains any duplicates. Your function should ...
- 传感器 -UIAccelerometer
// ios 4 之前 UIAccelerometer // ios 5 <CoreMotion/CoreMotion.h> #import "ViewController.h& ...
- ios:如何将自己编写的软件放到真正的iPhone上运行(转)
想要将自己编写的软件放到真正的iPhone上去运行,首先你需要成为Apple Developer计划的成员.其次,你需要设置程序ID和认证书,在这之后你就可以在你指定的iPhone上运行你的程序了.下 ...
- Memcached(一)在Windows上安装和测试memcached
1)下载memcached的windows安装程序 memcached-1.2.4-Win32-Preview-20080309_bin.zip 或其他版本 2)解压memcached 用管理员身份 ...
- C语言写解一元二次方程程序心得
前言:在网上看到不少解一元二次方程的小程序,在使用时总得出一大堆小数,感觉很不爽,遂自己重新写了一遍. 首先,先回忆一下一元二次方程的求根公式: 分别读取二次项.一次项和常数项系数并且求出delta ...