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系 ...
随机推荐
- AJAX原理及优缺点
1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...
- 由css属性:vertial-align想到的。。
我的笔记本:型号 acer4750G-2412g50mnkk 分辨率:1333*768,点距:0.25933mm; 12px下的font-size: 默认line-height减去font-size: ...
- Ubuntu启动项设置——之update-rc.d 命令使用
http://blog.csdn.net/typ2004/article/details/38712887 apache2.nginx.redis这些服务安装之后,会随开机启动,当这些服务并不需要时, ...
- C#读取Excel几种方法的体会
(1) OleDb: 用这种方法读取Excel速度还是非常的快的,但这种方式读取数据的时候不太灵活,不过可以在 DataTable 中对数据进行一些删减修改 这种方式将Excel作为一个数据源,直接用 ...
- Laravel 安装记录
系统环境:ubuntu-14.10-server-i386(32) LAMP 系统默认安装 根据:http://laravel.com/docs/5.1 官方文档,准备通过 Composer 安装 ...
- 数据结构练习 02-线性结构3. Pop Sequence (25)
Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and p ...
- Android动画总结#补间动画(Tween Animation/View Animation) #帧动画(Frame Animation/Drawable Animation)#属性动画(PropertyAnimation)
1.共有三种动画,英文名字多种叫法如下 第一种动画:补间动画(Tween Animation/View Animation) 四个:RotateAnimation旋转. AlphaAnimation透 ...
- 【技术帖】解决 Hudson jenkins 连接等待中 - Waiting for next av
今天构建项目发现如下问题: jenkins 连接等待中 - Waiting for next available executor 左下角那块一直不运行构建,一直在连接等待. 于是,进入一级页面, 右 ...
- 运行 Docker 容器时的安全风险:别丢了你的套接字
我们都遇到过这种情况:你只是想尝试一段命令行,但安装进程却如同抵押贷款申请那般繁琐.如果不是强制要求完成这么多步骤,你的开发环境会被永远不会再使用的库弄乱.自然, Docker 来了以后,你惊异地发现 ...
- xapian安装
xapian安装:$ su enter your root password # rpm -ivh http://rpm.eprints.org/rpm-eprints-org-key-1-1.noa ...