把一直使用中的vim配置做个GIT入库管理,也把之前积累在机器上的文档,做个汇总。

https://github.com/wujuguang/kyvim

1. 安装完整版vim

vi和vim的区别?
在Linux自带有vi编辑器,而vim是指vi improved,即vi升级版。区别在于vi指令和功能较vim简单,正因如此才有了vi improved。
Ubuntu自带的vi编辑器是vim.tiny,也就是vim最基本功能,几乎等同于vi。而在Ubuntu中vi命令指向的是vim。

如何使用apt安装vim?
Linux分支之Debian及其衍生版本中可以通过apt管理包,apt是advanced packaging tools的缩写。Ubuntu作为Debian分支,使用apt命令管理包是很方便的。
使用apt-get命令安装包时会发现有几个包可供选择:vim,vim-gnome,vim-gtk,vim-tiny。据说vim包其实就是vim.basic,该版本不支持GUI。建议安装的是vim-gnome。

apt搜索包:$ apt-cache search package_name
apt安装包:$ apt-get install vim-gnome
安装完成后,vi命令会指向vim.gnome。

2. 安装ctags
$ apt-get install ctags
ctags用于支持taglist,使用ctags可以在变量之间跳跃。

3. 安装pydiction
pydiction用来实现代码补全和语法提示功能。pydiction不能通过apt安装,需要自行下载安装。
在GitHub下载源码,可以使用Git迁出到本地,或者下载zip包自行解压,地址为:https://github.com/rkulla/pydiction
pydiction可以让vim自动补全Python代码,无论是关键字,标准库还是第三方库。它主要包含3个文件:
  python_pydiction.vim: vim插件文件。
  complete-dict: 一个字典文件,包含了Python的关键字和模块。插件引用的内容即来自于此。
  pydiction.py: 一个py脚本,运行此文件可以增加新的模块到complete-dict字典中。

如何安装?
Linux/Unix系统:将python_pydiction.vim文件复制到 ~/.vim/after/ftplugin 目录下。如果该目录不存在,则创建它,vim会自动在此目录下搜索。
Windows系统:将python_pydiction.vim文件复制到 C:\vim\vimfiles\ftplugin 目录下(假设你的Vim安装路径为C:\vim)
除此之外的另两个文件complete-dict和pydiction.py可以放置到任何你想放置的位置,但在ftplugin目录下最好只存放python_pydiction.vim而不应该还有其他文件。

以下为pydiction.zip解压后执行的安装命令(我的complete-dict和pydiction.py放置在~/.vim目录下):
进入解压后的pydiction目录
$ cp after/ftplugin/python_pydiction.vim ~/.vim/after/ftplugin
$ cp complete-dict ~/.vim
$ cp pydiction.py ~/.vim

4. 编辑配置文件:
编辑~/.vimrc文件,如果不存在则创建。添加以下内容:
let Tlist_Auto_Highlight_Tag=1  
let Tlist_Auto_Open=1  
let Tlist_Auto_Update=1  
let Tlist_Display_Tag_Scope=1  
let Tlist_Exit_OnlyWindow=1  
let Tlist_Enable_Dold_Column=1  
let Tlist_File_Fold_Auto_Close=1  
let Tlist_Show_One_File=1  
let Tlist_Use_Right_Window=1  
let Tlist_Use_SingleClick=1  
nnoremap <silent> <F8> :TlistToggle<CR>
   
filetype plugin on  
autocmd FileType python set omnifunc=pythoncomplete#Complete  
autocmd FileType javascrīpt set omnifunc=javascriptcomplete#CompleteJS  
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags  
autocmd FileType css set omnifunc=csscomplete#CompleteCSS  
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags  
autocmd FileType php set omnifunc=phpcomplete#CompletePHP  
autocmd FileType c set omnifunc=ccomplete#Complete

let g:pydiction_location='~/.vim/tools/pydiction/complete-dict'  
set autoindent
set tabstop=4  
set shiftwidth=4  
set expandtab  
set number
filetype plugin on:表示开启插件。
let g:pydiction_location='~/.vim/tools/pydiction/complete-dict' : 写入你存放complete-dict的绝对路径。

如果是Pydiction 1.0以前的版本,要确保vimrc不包含以下代码:
if has("autocm")
    autocmd FileType python set complete+=k/path/to/pydiction iskeyword+=.,(
endif " has("autocmd")

5. 进击的.vimrc
以上针对Python配置的vim算是基本完成,但事情可以做得更完善一点,进一步将你的vim变得更好用。(以下进击不仅针对Python,而是对vim自身的完善。)

# vi ~/.vimrc
添加:set foldmethod=indent
关闭开启时默认折叠命令,在.vimrc写入:set nofoldenable
这样,再编辑 python 文件时会发现代码已经作了折叠处理。下面是有关折叠的一些命令:

zo: 打开光标位置的折叠代码;
zc: 折叠光标位置的代码;
zr: 将文件中所有折叠的代码打开;
zm: 将文件中所有打开的代码折叠;
zR: 作用和 zr 类似,但会打开子折叠(折叠中的折叠);
zn: 作用和 zm 类似,但会关闭子折叠;
zi: 折叠与打开操作之间的切换命令;

6. 浏览文件
NERDTree提供了丰富的键盘操作方式来浏览和打开文件,我简单介绍一些常用的快捷键:
和编辑文件一样,通过h j k l移动光标定位
o 打开关闭文件或者目录,如果是文件的话,光标出现在打开的文件中
go 效果同上,不过光标保持在文件目录里,类似预览文件内容的功能
i和s可以水平分割或纵向分割窗口打开文件,前面加g类似go的功能
t 在标签页中打开
T 在后台标签页中打开
p 到上层目录
P 到根目录
K 到同目录第一个节点
J 到同目录最后一个节点
m 显示文件系统菜单(添加、删除、移动操作)
? 帮助
q 关闭

Disable/enable automatic checking of current file
:PyFlakeToggle

Run checks for current file
:PyFlake

Auto-fix pep8 errors for current file
:PyFlakeAuto

技巧:

1、搜索或者替换后取消高亮的关键词
搜索和替换后关键词会高亮显示,搜索结束后也不会消失,要取消高亮可以通过命令:noh
另类方法:你可以搜索一个不存在字符的来让高亮取消/asdasdasd

2、整体缩进一段代码
先得到要缩进的开始行号和结束行号(比如开始行3 结束行9)然后用
3,9>> 向右增加一个tab的缩进
3,9<< 向左减少2个tab的缩进

3、让VIM不生成备份文件(~文件)
:set nobackup
另外,也可以不关掉backup而是设置backupdir将备份文件统一存放到一个目录下,比如
set backupdir=d:\Vim\tmp

-u <vimrc>        使用 <vimrc> 替代任何 .vimrc
-U <gvimrc>        使用 <gvimrc> 替代任何 .gvimrc

VIM插件:
pathogen:插件管理,管理所有的插件。
首先,在vim runtime目录下创建两新目录 ~/.vim/autoload 和 ~/.vim/bundle。
$ mkdir -p ~/.vim/autoload ~/.vim/bundle
其次,拷贝源包中 autoload/pathogen.vim 到 ~/.vim/autoload 目录下。
$ cp autoload/pathogen.vim ~/.vim/autoload/pathogen.vim
要记得把以下内容加入到vimrc文件中:execute pathogen#infect()
此后所有vim插件目录可以解压到 ~/.vim/bundle 中, 它会被自动追加到"runtimepath"中。
项目地址:https://github.com/tpope/vim-pathogen

vim-pep8:python的 PEP8 语法检查插件,可以用用。
项目地址:http://www.vim.org/scripts/script.php?script_id=2914

vim-python-pep8-indent: vim-python-pep8-indent是一个PEP8的缩进插件,不用自己去调节缩进。
项目地址:https://github.com/hynek/vim-python-pep8-indent

supertab:功能增强,增强tab键的功能,建议安装。
项目地址:https://github.com/ervandew/supertab

supertab:让tab键可以飞起来。
syntastic:保存文件时检查语法的插件。
项目地址:https://github.com/scrooloose/syntastic
本来我之前一直是用 pyflakes-vim 这个python语法检查插件的,非常好用,不过最近在它的项目主页上发现 作者已经不推荐使用这个了。并给出了替代品syntastic。
syntastic支持很多语言的语法检查功能(python方面还是使用了pyflakes)。缺点是速度有点慢,每次保存文件 的时候都会有点卡,比单独使用pyflakes-vim速度要差一些。

neocomplcache-clang:解决clang_complete和neocomplcache的冲突。
neocomplcache:关键字补全、文件路径补全、tag补全等等,各种,非常好用,速度超快。
vim-powerline:超有爱的状态栏。
buferexplorer:方便浏览buffer的插件。
TagHightlight :根据生成的Tag文件,高亮类、变量、函数和关键字。
TagBar:该插件生成函数、变量列表。
下面是我在配置文件中关于tagbar的配置,让tagbar可以在加载代码时自动打开
nmap <Leader>tb :TagbarToggle<CR>
let g:tagbar_ctags_bin='/usr/bin/ctags'
let g:tagbar_width=30
autocmd BufReadPost *.cpp,*.c,*.h,*.hpp,*.cc,*.cxx call tagbar#autoopen()

以下两个淘汰,了解而已:
taglist
之前有一个插件叫TagList,有点不太好用,而TagBar是一个taglist的替代品,比taglist更适合c++使用,函数能够按类区分,支持按类折叠显示等,显示结果清晰简洁,强烈推荐,下载地址如下:http://www.vim.org/scripts/script.php?script_id=3465

python_fold
将Python代码折叠,Python的class,function,以及在{{{,}}}标记的内容将被折叠。
下载 python_fold 插件:http://www.vim.org/scripts/script.php?script_id=515 下载后得到 python_fold.vim。
# cp python_fold.vim  /usr/share/vim/vim70/plugin/

VIM配置相关记录的更多相关文章

  1. vim 学习相关记录

    VIM 相关内容****************** vim 的三个模式: 编辑模式 --> 输入模式 --> 末行模式 编辑模式: 通常键入键盘值被理解成一个操作; 如: dd(删除行) ...

  2. Vim配置持续记录

    1. 家目录创建.vimrc文件 set nu    # 设置行号 set tabstop=4 # tab制表符缩进 set autoindent # 自动缩进 set showmatch # 括号匹 ...

  3. Linux系列笔记 - vim相关记录

    一.常用到的vim命令 这里只简单记录常用到的命令,后面会有自己记录的命令,但有些可能不常用. 常规模式: gg 跳到文件头 shift+g 跳到文件尾 行数+gg 跳到指定行 如:123gg 跳到1 ...

  4. 我的vim配置记录

    一 总体介绍 配置路径,/etc/vim/vimrc,这个是系统的vim配置,假设一台PC多个用户使用,每一个用户的习惯不同的话,能够使用不同的配置.在用户文件夹下新建一个.vimrc的文件就能够了. ...

  5. Vim配置及使用技巧

    要说Linux下比较好用的文本编辑器,我推荐vim(当然很多人都用emacs,可我没用过),用vim也有一年左右,有些心得体会想与诸位分享.在我的学习过程中,借鉴了不少优秀的博客,其中有csdn大神n ...

  6. DRBD详细解说及配置过程记录

    一.DRBD介绍 DRBD(Distributed ReplicatedBlock Device)是一种基于软件的,无共享,分布式块设备复制的存储解决方案,在服务器之间的对块设备(硬盘,分区,逻辑卷等 ...

  7. kali2.0安装及使用笔记(附带vim配置,长期更新)

    作者:陈栋权 时间:16/08/19 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明, 且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 如有特别用途,请与我联系邮 ...

  8. 快速学习C语言三: 开发环境, VIM配置, TCP基础,Linux开发基础,Socket开发基础

    上次学了一些C开发相关的工具,这次再配置一下VIM,让开发过程更爽一些. 另外再学一些linux下网络开发的基础,好多人学C也是为了做网络开发. 开发环境 首先得有个Linux环境,有时候家里机器是W ...

  9. Env:VIM配置

    注:文章来自于http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html 花了很长时间整理的,感觉用起来很方便,共享一下. 我的vim配 ...

随机推荐

  1. Redis info参数总结(转)

    Redis官网对 info 已经讲解的比较清楚的,参考文档 . 可以看到,info的输出结果是分几块的,有Servers.Clients.Memory等等,通过info后面接这些参数,可以指定输出某一 ...

  2. android: SQLite删除数据

    删除数据对你来说应该就更简单了,因为它所需要用到的知识点你全部已经学过了. SQLiteDatabase 中提供了一个 delete()方法专门用于删除数据,这个方法接收三个参数,第一 个参数仍然是表 ...

  3. 关于PF_RING/Intel 82599/透明VPN的一些事

    接近崩溃的边缘,今天这篇文章构思地点在医院,小小又生病了,宁可吊瓶不吃药,带了笔记本却无法上网,我什么都不能干,想了解一些东西,只能用3G,不敢 开热点,因为没人给我报销流量,本周末我只有一天时间,因 ...

  4. RTTI的实现(vc)--转载

    RTTI (Run Time Type info) 这个神奇的东西用于存储类的相关信息,用于在运行时识别类对象的信息.C++ 里面只记录的类的名字和类的继承关系链.使得编译成二进制的代码,对象可以知道 ...

  5. 深入理解Openstack自动化部署

    前言 说实话,看到自己在博客园的排名感到惭愧,因为自己最近两年没有持续地在博客园上写技术博客了,有人私下问我是不是荒废了?翻翻15年和16年的博客,真的是少的可怜.一方面的确由于岗位的变化,导致了工作 ...

  6. win8 中使用第三方无线网卡出现无线连接受限解决办法

    无线路由  无线网络模式基本设置 模式改为 11bg mixed , 然后在 win8 的设备管理器中找到无线路由 不知道 win8 有些地方兼容性做的不是很到位,我的 xp不做任何配置可以正常使用.

  7. iis 故障导致网站无法访问

    服务器使用两三个月突然,昨天无法访问,重启后正常,第二次发生这样的事情了,打开  C:\WINDOWS\system32\LogFiles\HTTPERR  下的   httperr1.txt 201 ...

  8. GBK、UTF8、UNICODE编码转换

    string GBKToUTF8(const std::string& strGBK) { , strGBK.c_str(), -, NULL, ); WCHAR * wszUTF8 = ne ...

  9. 学习rabbitmq

    http://www.cnblogs.com/dubing/p/4017613.html elk+redis 搭建nginx日志分析平台 http://www.cnblogs.com/yjf512/p ...

  10. [ay原创作品]用wpf写了个模仿36Kr网站登录背景的效果

    这里我借鉴了,上周比较火的一个前端文章,人家用js去写的,地址 自己用wpf也写了一个,但是它的  粒子比较,然后连线算法真的很差,他创建了一个加入鼠标点的集合,2个集合进行比较,并且粒子会向鼠标靠近 ...