2012年6月我写了myproject这个插件,还只是个半成品,不过凑合着也能用,就这样一直用下去了。每次想完善一下的时候就想着先凑合着用,等有时间再改,就这样居然拖了近两年……这次终于下定决心,利用过年前的空闲时间完全重写了myproject。其实真的写起来一天就搞定了,剩下几天都是测试、修复bug。
更新内容 最开始的版本是纯vimscript的,后来因为在windows下更新tags时会弹出命令行窗口就加入了一部分python代码,现在为了兼容性还是改回了纯vimscript,不再依赖python。 增加 :MPCreate 命令,可以通过此命令创建项目。 增加 :MPProjectList 命令,可以浏览、删除、载入通过 :MPCreate 创建的项目。 保存、载入Session的命令从 :MPSaveSession、:MPLoadSession 改成了 :MPSessionSave、:MPSessionLoad。 :MPCreate、:MPLoad、:MPSessionLoad、:MPSessionSave等命令都可以补全了。 去掉几个实用性不大的选项。 修改了部分变量名。 命令说明 :MPCreate 直接输入 :MPCreate ,myproject会让你输入项目的路径及名称,然后会将该项目保存到项目列表中。当你用 :MPLoad 载入项目时就可以利用Tab自动补全项目路径了。 加入”template”参数(即:MPCreate template),myproject会在项目中的project.vim文件中写入如下内容: “let g:MP_Ctags_Enable = 1
“let g:MP_Global_Enable = 1
“set cscopeprg=gtags-cscope
“let g:MP_Cscope_Enable = 1
“let g:MP_Session_AutoSave = 1
“let g:MP_Session_AutoLoad = 1
“let g:MP_Write_AutoUpdate = 1
“let g:MP_Source_File_Ext_Name = “”
你可以按自己的需求去掉某个选项的注释。
加入”question”参数(即:MPCreate question),myproject会一一询问你是否需要开启某个选项,然后将结果保存到project.vim中。见下图:
阅读全文
首先安装mercurial ubuntu/mint的话安装很简单:
sudo apt-get install mercurial windows的话从这里下载安装: http://mercurial.selenic.com/downloads/
下载vim源码 打开shell/cmd,输入:
hg clone https://code.google.com/p/vim/ vim74 安装编译工具 ubuntu/mint下可以通过apt-get安装:
sudo apt-get install build-essential xorg-dev libgtk2.0-dev libncurses5-dev python-dev windows下可以利用mingw来编译。如果是64位的系统的话可以下载这个版本。解压后将mingw文件夹中的bin目录加入PATH变量中。
开始编译Vim linux 打开shell,cd到vim源码所在目录,执行如下命令:
./configure –with-features=huge –enable-fontset –enable-gui=gtk2 –enable-multibyte –enable-pythoninterp –enable-rubyinterp –enable-sniff –enable-cscope –prefix=/usr 然后:
make VIMRUMTIME=/usr/share/vim/vim74 && sudo make install windows 打开cmd,cd到vim源码所在目录的src目录中,执行如下命令:
mingw32-make -f Make_ming.mak GUI=yes FEATURES=BIG ARCH=x86-64 OLE=yes STATIC_STDCPLUS=yes PYTHON=D:/bin/Python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 USERNAME=jiazhoulvke USERDOMAIN=gmail.com 有几点需要说明:
阅读全文
加了自定义样式表的功能,没有定义的话默认使用仿github的样式。
项目地址: https://github.com/jiazhoulvke/MarkdownView
阅读全文
MarkdownView markdown可视化编辑插件,可以在编辑的同时看到最终效果。
安装需求 Vim编译了python支持 安装了python-webkit、python-gtk、python-markdown 安装 git clone https://github.com/jiazhoulvke/MarkdownView
使用 打开markdown文件 输入 :MarkdownView 效果展示
在Vim中对markdown文件进行修改会马上在右侧的窗口显示出来。
其他说明 本插件在Linux mint 14下测试通过。
阅读全文
先找到相册地址,比如 https://plus.google.com/photos/113638836970166422741/albums/5812010190409709377 ,里面很多妹子,很合我的胃口。
右键查看源代码,复制到vim中(当然你也可以直接用wget下载网页),然后执行
:%s/"/\r/g :sort u 按
/^https.*jpg$ 找到第一个图片链接,在它上面一行按dgg,再按N,反向查找最后一个图片链接,在它下面一行按dG,即可得到所有图片的地址。
由于留下的地址列表里包含两种缩略图,所以要删除缩略图,留下所有原图:
:g/w800-h800\//d :g/s300-c\//d 将最后的结果保存:
:w c:\mm.list 现在利用万能的wget批量下载。因为gfw的原因需要一个代理,我用的是goagent,在goagent已经运行的前提下输入:
wget -i c:\mm.list -e http_proxy=127.0.0.1:8087 –no-check-certificate 之后慢慢等它下载好就行了。一个vim的简单应用。
阅读全文
发个我自己写的项目管理插件myproject,目前实现了针对项目手动/自动更新tags及cscope数据库、在项目中递归搜索等功能,自己用着还挺舒服的。
项目地址:https://github.com/jiazhoulvke/myproject
最开始的版本是纯vimscript的,受不了更新tags时老是弹出命令行窗口,所以改成了python的,用vim的应该都装了python,所以应该不算什么大问题。
使用方法没project插件那么复杂,只要在项目的根目录下面放一个叫project.vim的文件就行了。该方法来源于这里: http://easwy.com/blog/archives/automatically_update_ctags_tag_cscope_database/#comment-10782 ,project.vim不仅仅是项目标识,同时也是项目的配置文件。
在vim里cd到项目目录中,或者直接打开项目中的文件,然后用“:MPLoad”载入project.vim及tags、cscope数据库(假如存在的话)。
用“:MPBuildTags”可以建立tags或cscope数据库
用“:MPUpdateTags”更新当前文件的tags或cscope数据库
用“:MPSearchInProject 字符串”在项目中递归搜索。grep可用的话会调用grep,否则使用内部的vimgrep。
假如安装了NerdTree,可以用“:MPNERDTREE”直接打开项目根目录
在vimrc里写上“let g:MP_Write_AutoUpdate = 1”就会在每次保存文件时自动更新tags,想临时禁用自动更新的话就输入“:let g:MP_Update_Enable = 0”
一些用于配置的全局变量:
" 项目文件名 let g:MyProjectFileName = ‘project.vim’ " 是否启用ctags let g:MP_Ctags_Enable = 1 " 是否启用cscope let g:MP_Cscope_Enable = 1 " 定义ctags的路径 let g:MP_Ctags_Path = ‘ctags’ " 定义cscope的路径 let g:MP_Cscope_Path = ‘cscope’ "设置grep的路径 " Tips: 如果是在windows下使用cygwin的grep的话,搜索结果中经常会出现警告,需要在系统中添加一个名叫CYGWIN,值为nodosfilewarning的环境变量 let g:MP_Grep_Path = ‘grep’ " 定义ctags参数,比如c++项目可以在project.vim中定义"–c++-kinds=+px" let g:MP_Ctags_Opt = “ " 在文件写入时是否自动更新tags let g:MP_Write_AutoUpdate = 0 " 是否自动载入项目文件 let g:MP_Bufread_AutoLoad = 0 " 是否允许更新tags(适合临时设置禁用或启用) let g:MP_Update_Enable = 1 " 是否允许载入tags(适合临时设置禁用或启用) let g:MP_Load_Enable = 1 " 需要建立tags的文件后缀名(可以针对不同项目在各自的project.
阅读全文
由于经常需要在vim里看一些英文帮助文档,又没有长年累月的运行一个翻译软件的习惯,所以还是写了个插件来搞定,用了python,所以windows下得确保安装了python。
使用方法有几种:
1.将光标移动到需要翻译的英文单词上,按<leader>e2c(把中文翻译成英文就是<leader>c2e,下面就不多说了)。
2.选中需要翻译的英文,按<leader>e2c。
3.输入
:E2C 想要翻译的英文 优点:因为是调用Google进行翻译,所以Google能翻译多少种语言,插件就能翻译多少种语言,不过默认只map了英译中和中译英的快捷键,其他的得自己定义了。
缺点:连不了网就死翘翘了。
快捷键定义方法举例:
nmap <silent> <leader>e2c :echo Google_Translate(‘en’,‘zh-CN’,expand(’<cword>’))<cr> en是原文的语言,zh-CN是要翻译的语言。
下载地址:http://code.google.com/p/jiazhoulvke/downloads/detail?name=googletranslate.vim
代码:
" googletranslate.vim: 利用Google翻译在vim中进行翻译 " Author: jiazhoulvke " Blog: http://jiazhoulvke.com " Date: 2012-4-10 " Version: 1.0 "————————————————- " Google_Translate: 谷歌翻译 function! Google_Translate(lan1,lan2,word) python << EOM #coding=utf-8 import vim,urllib,urllib2 word = vim.eval("a:word") word=word.replace(’\n’,“) rword = urllib.urlencode({‘text’:word}) lan1 = vim.eval("a:lan1") lan2 = vim.eval("a:lan2") headers = { ‘User-Agent’:‘Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.
阅读全文
一、过长的行显示不全 当一行字过长时,vim总是无法正常显示,会显示很多“@”符号,很久以前我以为是vim的一个bug,后来问了高手才知道是设置问题,在配置文件里面加上一句
set display=lastline 问题就解决了。
二、代码高亮不正常 当一个文件里的代码很长时,往往会出现这种问题:当你移动光标查看代码时,本来高亮显示的代码全部变成白色,严重影响阅读。滚动一下光标到上一页,又突然正常了,又是vim默认设置的问题。这个在帮助文档里有说明,输入
:h 06.2 看最后一段:
在自下往上滚屏的过程中颜色显示不对。 Vim 在分析文本的时候不对整个文件进行处理,它只分析你要显示的部分。这 样能省不少时间,但也会因此带来错误。一个简单的修正方法是敲 CTRL-L。 或者往回滚动一下再回来。要彻底解决这个问题,请参见 |:syn-sync|。有些 语法定义文件有办法自己找到前面的内容,这可以参见相应的语法定义文件。 例如,|tex.vim| 中可以查到 Tex 语法定义。
下面这句就能解决:
syntax sync fromstart
阅读全文
在之前的一篇文章中我推荐了几款vim比较实用的插件,其中第一款就是pathogen,是的,虽然只有短短两百来行的代码,但就像我给它的评分一样:Life Changing。
为了解决文件混乱的问题vim搞出了vba这种格式,想法很好,但实际应用中效果却不能尽如人意。因为并非所有的插件发布者都会把插件打包成vba格式,很多都只是简单的压缩成zip或者tar.gz之类的压缩包,假如插件只有一个vim文件的话连压缩都不用了……
而使用pathogen的话,则每个插件都会拥有一个自己的文件夹,这样要删除某个插件直接找到这个插件所在的文件夹,然后删掉它就行了。
好吧,前面说了一大堆废话来凑字数,就是为了引出下面的正题。
现在很多插件都只发布vba包,之前我不知道该怎么解压,用了一种很二的方法:先按照正常的方法安装这个vba包,然后在bundle目录里新建一个目录,再把刚才安装的那些文件移进去……我忘了有伟大的”:h”。……
用”:h vba”可以看到相关帮助,其实只需要几步就能安装:
1.先创建相应的文件夹。其中的plugin_name是实际的插件名
mkdir ~/.vim/bundle/plugin_name 2.用vim打开需要安装的vba包。
vim someplugin.vba 3.在vim中执行下面的代码:
:UseVimball ~/.vim/bundle/plugin_name 作为一个蛋疼得必须要治的人,我写了小插件,貌似会更方便一点:
"————————————————– " pathogen_install_vba.vim " Author: jiazhoulvke " Email: jiazhoulvke [AT] gmail.com " Blog: http://jiazhoulvke.com " Version: 0.1 "————————————————– if &cp; || exists("g:loaded_pathogen_install_vba") finish endif let g:loaded_pathogen_install_vba="v0.1" command! PathogenInstallVBA :call Pathogen_Install_VBA() function! Pathogen_Install_VBA() let jzlk_extname=expand("%:e") if jzlk_extname!="vba" echo ‘这个文件不是vba安装包哦。’ else let vba_dir_name=input("插件文件夹名: ") if has("win32") let vba_dir_path=$VIM . "\vimfiles\bundle\" . vba_dir_name call system("md " .
阅读全文
1.pathogen(http://www.vim.org/scripts/script.php?script_id=2332)
pathogen是用来管理插件的插件。vim的插件是混在一起的,这在插件少的时候没什么问题,但当插件数量达到两位数时,问题就出来了——当我们下载试用某个插件,发现并不适合自己或者此插件和自己原来的插件有某些冲突时,你会发现很难清理掉刚刚安装的插件,因为有的插件有多达上百个文件,分布在不同的文件夹中。如果此插件是个vba包,那倒没什么问题,它可以像你在系统里安装的软件一样,通过一句命令清除掉,但问题是有些插件就是一个压缩包而已,并没有安装记录。这时pathogen就派上用场了,它会把每个插件放到各自的文件夹中,不需要用的时候直接删掉这个文件夹就行了,实在是很方便。
2.fencview(http://www.vim.org/scripts/script.php?script_id=1708)
这个插件的功能就是识别文件编码,对国人来说很有用。安装后可以在菜单项里找到识别编码的选项,不过用vim到一定程度的人,应该都不会还保留着菜单栏的吧?我的vimrc里加了一句:
nmap <leader>fenc <esc>:FencAutoDetect<cr> 需要识别的时候通过快捷键就能识别了。还可以设置自动识别编码:
let g:fencview_auto_patterns=’.txt,.htm{l\=},.php,.c,*.py’ 3.neocomplcache(http://www.vim.org/scripts/script.php?script_id=2620) vim的补全插件里我最喜欢的一个。不像其他补全插件实时查找,而是在缓存中查找,用起来感觉很快。我的配置:
let g:neocomplcache_enable_at_startup=1 let g:neocomplcache_enable_smart_case=1 let g:neocomplcache_enable_camel_case_completion=1 let g:neocomplcache_enable_underbar_completion=1 let g:neocomplcache_min_syntax_length=3 let g:neocomplcache_manual_completion_start_length=3 let g:neocomplcache_enable_ignore_case=1 let g:neocomplcache_lock_buffer_name_pattern=’*ku*’ let g:neocomplcache_max_list=100 let g:neocomplcache_enable_auto_select = 1 imap <expr><c-y> neocomplcache#close_popup() imap <expr><c-e> neocomplcache#cancel_popup() 4.taglist(http://www.vim.org/scripts/script.php?script_id=273) 类似于一些IDE,会在左边显示一个函数、变量列表(当然通过配置也可以显示在右边),需要跳转到指定的函数时直接在函数名上面按回车即可。此插件需要ctags的支持。 我的配置:
map <silent><f6> <esc>:TlistToggle<cr> 5.nerdtree(http://www.vim.org/scripts/script.php?script_id=1658) vim里的文件管理器,以前我用的是winmanager,但这个nerdtree更好用。 我的配置:
nmap <silent><f8> <esc>:NERDTreeToggle<cr> 6.tabbar(http://www.vim.org/scripts/script.php?script_id=1338) 类似于以前常用的minibufexpl,可以在顶部显示出已打开的buffer的列表,就像现在浏览器上的标签栏一样。tabbar比起minibufexpl更强大的功能是,它可以通过alt+数字直接在各个buffer中切换,还可以通过ctrl+tab轮换。
7.mark(http://www.vim.org/scripts/script.php?script_id=2666,旧版:http://www.vim.org/scripts/script.php?script_id=1238) 此插件的功能很简单,将光标移动到你需要高亮显示的关键字上面,比如test,按下<leader>m,则该文件中的所有test都会高亮显示。也许你会说,vim搜索的时候不是也可以高亮吗?是的,但是它只能高亮一个关键字,而mark可以同时高亮多个关键字,并且每个关键字都有不同的颜色(当你标记的关键字多的时候看起来非常漂亮),这在阅读一些代码时非常好用。
8.project(http://www.vim.org/scripts/script.php?script_id=69) 用来管理项目的插件。手头有一些比较大的项目需要管理时,这个插件就显得非常有用。
9.zencoding(http://www.vim.org/scripts/script.php?script_id=2981) 一个可以快速编写html代码的插件。比如输入 html:xt ,然后按 <C-y>, ,就会生成一大段的html代码,类似于snip,但在某些方面来说比snip更灵活更智能一点,具体不太好说,要用过才能体会。
阅读全文