我的项目管理插件myproject

发个我自己写的项目管理插件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.
阅读全文

用iptables防止暴力破解ftp密码

最近一直有个傻逼黑客暴力破解公司的FTP服务器,虽然我有信心他50年内绝对猜不出密码,但看到日志里一大堆的登录信息还是挺烦的,于是便想用iptables屏蔽它,手工屏蔽肯定是不现实的,人家手上一堆的肉鸡呢,封完一个ip人家换一个ip就行了。解决方法就是写个脚本来分析系统日志,然后识别出属于暴利破解的ip,然后添加到iptables的屏蔽列表中。网上虽然有很多现成的脚本,但都是针对英文系统的,而我公司的系统里面日志是中文的,并不能匹配,只好稍加改变。 show代码: #!/bin/bash grep "pure-ftpd.*[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.*WARNING" /var/log/messages | awk ‘{print $5,$6}’ | sed "s/^.pure-ftpd.(.@(.)).*$/\1/g" | sort | uniq -c > /tmp/pureftpban.tmp cat /tmp/pureftpban.tmp | while read line do COUNT1=echo ${line}|awk '{print $1}' IP1=echo ${line}|awk '{print $2}' if [ $COUNT1 -gt 10 ] && [ -z "iptables -vnL INPUT|grep $IP1" ] then iptables -I INPUT -s $IP1 -m state –state NEW,RELATED,ESTABLISHED -j DROP fi done 以上代码保存到/root/checksys.sh,并添加可执行权限。 然后用vim编辑/etc/crontab vim /etc/crontab 添加如下内容:
阅读全文

必须先感叹一句,GO语言太强了,自带的库很丰富,语法够简洁,即使没接触过GO,稍微学习一下就能用几十行代码做出个简单的web服务器。 由于foobar2000可以通过命令行进行操作,比如: foobar2000.exe /command:Next 就是切换到下一曲。利用这个特性,就能很轻易的实现远程操控foobar2000。 下面是GO语言的代码,文件名为foobar2k_web.go: package main import ( "os/exec" "fmt" "io" "net/http" "os" ) var service_port = ":9527" var service_path = "/foobar2k" var foobar2k_path = "d:\bin\foobar2000\foobar2000.exe" var fbcmd_map = map[string]string{"prev":"Previous","next":"Next","vdown":"Down","vup":"Up","playpause":"Play or pause"} func FB2KServer(w http.ResponseWriter, req *http.Request) { io.WriteString(w, "") io.WriteString(w, "") io.WriteString(w, "") io.WriteString(w, "<style type="&amp;quot;text/css&amp;quot;">div.bt {width:100px;height:100px;float:left;text-align:center;line-height:100px;background-color:green;}div.bt a{font-size:72px;color:white;font-weight:bold;text-decoration:none;}</style>") io.WriteString(w, "") io.WriteString(w, "") io.WriteString(w, "<div style="&amp;quot;width:500px;height:100px;margin:100px" auto;&quot;="">") io.WriteString(w, "<div class="&amp;quot;bt&amp;quot;"><a target="&amp;quot;_self&amp;quot;" href="&amp;quot;&quot;+service_path+&quot;?fbcmd=prev&amp;quot;">《</a></div>") io.WriteString(w, "<div class="&amp;quot;bt&amp;quot;"><a target="&amp;quot;_self&amp;quot;" href="&amp;quot;&quot;+service_path+&quot;?fbcmd=next&amp;quot;">》</a></div>") io.
阅读全文

vim的Google翻译插件

由于经常需要在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总是无法正常显示,会显示很多“@”符号,很久以前我以为是vim的一个bug,后来问了高手才知道是设置问题,在配置文件里面加上一句 set display=lastline 问题就解决了。 二、代码高亮不正常 当一个文件里的代码很长时,往往会出现这种问题:当你移动光标查看代码时,本来高亮显示的代码全部变成白色,严重影响阅读。滚动一下光标到上一页,又突然正常了,又是vim默认设置的问题。这个在帮助文档里有说明,输入 :h 06.2 看最后一段: 在自下往上滚屏的过程中颜色显示不对。 Vim 在分析文本的时候不对整个文件进行处理,它只分析你要显示的部分。这 样能省不少时间,但也会因此带来错误。一个简单的修正方法是敲 CTRL-L。 或者往回滚动一下再回来。要彻底解决这个问题,请参见 |:syn-sync|。有些 语法定义文件有办法自己找到前面的内容,这可以参见相应的语法定义文件。 例如,|tex.vim| 中可以查到 Tex 语法定义。 下面这句就能解决: syntax sync fromstart
阅读全文

关于pathogen安装vba包的问题

在之前的一篇文章中我推荐了几款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 " .
阅读全文

Vim插件推荐

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更灵活更智能一点,具体不太好说,要用过才能体会。
阅读全文

vim里默认的复制粘贴系统剪贴板内容的按键非常的蛋疼,”+y(复制)和”+gP(粘贴)这种按键,光看就觉得别扭,于是一些人就把默认的剪贴板设置为系统剪贴板,有些人则是直接导入vim自带的那个windows按键配置文件,我以前也是一直用这个办法,但很快发现了一个弊端:C-V是用来进入列选择模式的,虽然可以用C-Q代替,但如果使用终端下的vim的话,C-Q通常是不起作用的(在vim输入:h ctrl-Q有解释)。于是我尝试着用<leader>vv这样的组合键来代替C-V,但用了一段时间,连我自己都受不了了,最终还是改回了C-V。然后突然想到,终端里不能按C-Q,那就给它映射个别的按键呗,于是: nmap vv <C-Q> 脑袋总算转过弯了……
阅读全文

上次的vim调色板给我很大的启发,利用这种调用图形程序的方式,完全可以将很多原本不能或者很难实现的功能轻易实现,比如这次我需要做一个图片的热点链接(就是在一张图片上划分出N块区域,每块区域都能使用不同的链接),当然不可能还在vim里手工写坐标,那也太逆天了,所以只好无奈的打开N年没用过Dreamweaver,这让我心有不甘,太不装B了!而且Dreamweaver的启动速度也慢得让人蛋疼。这就是我写这个小程序的原因。 本来是想用gtk开发,无奈目前gtk还刚刚入门呢,所以先用我相对比较拿手的C#来开发(开发工具是vs2008 express),等以后再写个gtk版的。 c#的代码比较分散,就不贴上来了,程序和源文件我都打包传到了我的googlecode上。直接下载链接:http://jiazhoulvke.googlecode.com/files/ImageMap%20for%20vim.7z 下载,解压,复制imagemap.vim到vim的plugin文件夹中,复制imagemap.exe到gvim.exe所在的目录(或者复制到windows系统文件夹下,如c:\windows),确保已经安装了蛋疼的.net framework(程序用的版本是2.0),在一个空行里输入一个图片名称,必须是有效的,然后在插入模式下按Alt+M(要改快捷键可以到imagemap.vim中改最后一行的代码),只要图片路径正确,会弹出一个窗口,直接用鼠标拖选一块区域,然后输入链接的属性,就成功添加了一个热点,添加了所有的热点后直接点关闭按钮,生成的代码就出现在vim里了。 下面是截图:
阅读全文

vim里的调色板

今天无意中看到了一篇文章《colorpicker: 给 Vim 加一个调色板!》,才知道原来vim里也能调用调色板,唉,火星了。 colorpicker需要一段vim代码和一个gtk程序的配合,作者给出了gtk程序的代码,但没有windows下的可执行程序,正好我前不久刚刚搭建了一个windows下的gtk开发环境,于是就派上用场啦。写了一个makefile,一次性编译通过,嘿嘿! 文件下载地址: googlecode:http://jiazhoulvke.googlecode.com/files/colorpicker_for_vim.7z 压缩包下载下来后,解压,将plugin文件夹里的colorpicker.vim复制到vim里的相应目录中,再把colorpicker文件夹中的colorpicker.exe复制到系统目录中,比如c:\windows。不过我比较喜欢把程序放到vim的安装目录里面,比如c:\program files\vim\vim73,vim一样可以访问到,而且更加绿色环保。 现在一切搞定了,打开vim,按Alt+C,就会弹出一个调色板了,hoho~~

update:回去看了一下依云同学(colorpicker作者)博客的更新,才想起用windows的人基本都没装过gtk运行库的,失策啊,没这玩意是用不了colorpicker,赶紧的,去下载个gtk运行库吧!http://gtk-win.sourceforge.net
阅读全文

作者的图片

jiazhoulvke


Coder

China