Ruby学习笔记二帮助生成Vim添加代码头的代码

脚本语言真是太强了。

我的目的是把我的默认代码头功能加到Vim里面。

/******************************************************************************
*  COPYRIGHT NOTICE
*  Copyright (c) 2014 All rights reserved
*  ----Stay Hungry Stay Foolish----
*
*  @author  : Shen
*  @name   :
*  @file   : G:\My Source Code\DefaultCode.cpp
*  @date   : 2014/06/14 02:44
*  @algorithm :
******************************************************************************/

//#pragma GCC optimize ("O2")
//#pragma comment(linker, "/STACK:1024000000,1024000000")

#include <bits/stdc++.h>
#include <cmath>
#include <cstdio>
#include <string>
#include <cstring>
#include <iomanip>
#include <iostream>
#include <algorithm>
using namespace std;
template<class T>inline bool updateMin(T& a, T b){ return a > b ? a = b, 1: 0; }
template<class T>inline bool updateMax(T& a, T b){ return a < b ? a = b, 1: 0; }

/*//STL
#include <map>
#include <vector>
#include <list>
#include <stack>
#include <deque>
#include <queue>
*/

/*//Computational Geometry
#include <complex>
#define x real()
#define y imag()
typedef complex<double> point;
*/

typedef long long int64;

void solve()
{

}

int main()
{

 return 0;
}

用Ruby10行就搞定了字符串的处理。简直爽爆了。

def load( path )
 File.foreach(path) do |line|
  line["\n"] = ""
  str = "let l = l + 1 | call setline(l, \'#{line}\')"
  File.open("s.txt", "a") do |f|
   f << "#{str}\n"
  end
 end
end

load("DefaultCode.cpp")

最后人工把头尾一加,搞定了。

"F4 添加文件头
map <F4> :call TitleDet()<cr>
function AddTitle()
let l = 0
let l = l + 1 | call setline(l, '/******************************************************************************')
let l = l + 1 | call setline(l, '*  COPYRIGHT NOTICE')
let l = l + 1 | call setline(l, '*  Copyright (c) 2014 All rights reserved')
let l = l + 1 | call setline(l, '*  ----Stay Hungry Stay Foolish----')
let l = l + 1 | call setline(l, '*')
let l = l + 1 | call setline(l, '*  @author  : Shen')
let l = l + 1 | call setline(l, '*  @name   :')
let l = l + 1 | call setline(l, '*  @file   : '.expand("%:p:h")."\\".expand("%:t"))
let l = l + 1 | call setline(l, '*  @date   : '.strftime("%Y/%m/%d %H:%M"))
let l = l + 1 | call setline(l, '*  @algorithm :')
let l = l + 1 | call setline(l, '******************************************************************************/')
let l = l + 1 | call setline(l, '')
let l = l + 1 | call setline(l, '//#pragma GCC optimize ("O2")')
let l = l + 1 | call setline(l, '//#pragma comment(linker, "/STACK:1024000000,1024000000")')
let l = l + 1 | call setline(l, '')
let l = l + 1 | call setline(l, '#include <bits/stdc++.h>')
let l = l + 1 | call setline(l, '#include <cmath>')
let l = l + 1 | call setline(l, '#include <cstdio>')
let l = l + 1 | call setline(l, '#include <string>')
let l = l + 1 | call setline(l, '#include <cstring>')
let l = l + 1 | call setline(l, '#include <iomanip>')
let l = l + 1 | call setline(l, '#include <iostream>')
let l = l + 1 | call setline(l, '#include <algorithm>')
let l = l + 1 | call setline(l, 'using namespace std;')
let l = l + 1 | call setline(l, 'template<class T>inline bool updateMin(T& a, T b){ return a > b ? a = b, 1: 0; }')
let l = l + 1 | call setline(l, 'template<class T>inline bool updateMax(T& a, T b){ return a < b ? a = b, 1: 0; }')
let l = l + 1 | call setline(l, '')
let l = l + 1 | call setline(l, '/*//STL')
let l = l + 1 | call setline(l, '#include <map>')
let l = l + 1 | call setline(l, '#include <vector>')
let l = l + 1 | call setline(l, '#include <list>')
let l = l + 1 | call setline(l, '#include <stack>')
let l = l + 1 | call setline(l, '#include <deque>')
let l = l + 1 | call setline(l, '#include <queue>')
let l = l + 1 | call setline(l, '*/')
let l = l + 1 | call setline(l, '')
let l = l + 1 | call setline(l, '/*//Computational Geometry')
let l = l + 1 | call setline(l, '#include <complex>')
let l = l + 1 | call setline(l, '#define x real()')
let l = l + 1 | call setline(l, '#define y imag()')
let l = l + 1 | call setline(l, 'typedef complex<double> point;')
let l = l + 1 | call setline(l, '*/')
let l = l + 1 | call setline(l, '')
let l = l + 1 | call setline(l, 'typedef long long int64;')
let l = l + 1 | call setline(l, '')
let l = l + 1 | call setline(l, 'void solve()')
let l = l + 1 | call setline(l, '{')
let l = l + 1 | call setline(l, ' ')
let l = l + 1 | call setline(l, '}')
let l = l + 1 | call setline(l, '')
let l = l + 1 | call setline(l, 'int main()')
let l = l + 1 | call setline(l, '{')
let l = l + 1 | call setline(l, ' ')
let l = l + 1 | call setline(l, ' return 0;')
let l = l + 1 | call setline(l, '}')
endfunction

"更新最近修改时间和文件名
function UpdateTitle()
 call setline(8, '*  @file   : '.expand("%:p:h")."\\".expand("%:t"))
 call setline(9, '*  @date   : '.strftime("%Y/%m/%d %H:%M"))
endfunction

"判断前10行代码里面,是否有COPYRIGHT NOTICE这个单词,
"如果没有的话,代表没有添加过作者信息,需要新添加;
"如果有的话,那么只需要更新即可
function TitleDet()
 let n = 2
 "默认为添加
  let line = getline(n)
  let str = '^*  COPYRIGHT NOTICE$'
  if line =~ str
   call UpdateTitle()
   return
  endif
 call AddTitle()
endfunction
(0)

相关推荐

  • VIM中设置php自动缩进为4个空格的方法详解

    代码自然少不了文本编辑利器vim,自动缩进是用制表符的,即便自己删掉制表符改成4个空格,也会在下一层次缩进中继续用制表符,这就造成了空格和制表符混用 可以修改.etc/vimrc的信息: 其中相关变量含义:     变量名     缩写      含义 (no)autoindent  ai   自动缩进,即为新行自动添加与当前行同等的缩进. (no)cindent     ci   类似C语言程序的缩进 (no)smartindent si   基于autoindent的一些改进      变量

  • 在vim中添加perl注释时无法对齐问题的解决方法

    在.vimrc中加入如下几行,即可解决这个问题. 复制代码 代码如下: "Only do this part when compiled with support for autocommands.if has("autocmd")    filetype plugin indent onelse    set autoindentendif "has("autocmd")

  • ruby开发vim插件小结

    在开始编写插件之前,你需要确认 Vim 是否支持 Ruby,通过以下命令来判别: $ vim --version | grep +ruby 如果输出为空,则表示你当前的vim不支持Ruby,需要重新编译一下,并启用对Ruby的支持. 顺便说下我当前的环境是: vim 7.4 ruby 2.1.0 环境检查没有问题那么就开始吧. 在~/.vim/plugin目录下创建一个 demo.vim 文件. 在开头写上以下代码: if !has('ruby') echo "Error: Required v

  • 手把手教你将Vim改装成一个IDE编程环境(图文) 吴垠

    By: 吴垠 Date: 2007-09-07 Version: 0.5 Email: lazy.fox.wu#gmail.com Homepage: http://blog.csdn.net/wooin Copyright: 该文章版权由吴垠和他可爱的老婆小包子所有.可在非商业目的下任意传播和复制.对于商业目的下对本文的任何行为需经作者同意. 联系方式:lazy.fox.wu#gmail.com 1 写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人

  • Python 自动补全(vim)

    一.vim python自动补全插件:pydiction 可以实现下面python代码的自动补全: 1.简单python关键词补全 2.python 函数补全带括号 3.python 模块补全 4.python 模块内函数,变量补全 5.from module import sub-module 补全 想为vim启动自动补全需要下载插件,地址如下: http://vim.sourceforge.net/scripts/script.php?script_id=850 https://github

  • 使用Python编写vim插件的简单示例

    Vim 插件是一个 .vim 的脚本文件,定义了函数.映射.语法规则和命令,可用于操作窗口.缓冲以及行.一般一个插件包含了命令定义和事件钩子.当使用 Python 编写 vim 插件时,函数外面是使用 VimL 编写,尽管 VimL 学起来很快,但 Python 更加灵活,例如可以用 urllib/httplib/simplejson 来访问某些 Web 服务,这也是为什么很多需要访问 Web 服务的插件都是使用 VimL + Python 编写的原因. 在开始编写插件之前,你需要确认 Vim

  • PHP语法自动检查的Vim插件

    由于最近写PHP比较多,偶尔手误少写个分号之类的语法错误难免,一般的检查方式是回到命令行运行 php -l ,或者升级一下直接在Vim里运行 :!php -l % ,或者再将此绑定为快捷键,如 :map <F5> :!php -l %<CR> ,每当按F5便可立即执行语法检查.但还是觉得略有不爽,因为很多IDE是实时检查的,语法错误会提示在代码行的旁边.虽然实时检查未必有必要,但自动检查要比手动检查方便的多,比如在php文件保存时自动执行检查. 于是写了这个 phpcheck.vi

  • Windows下利用Gvim写PHP产生中文乱码问题解决方法

    首先:找出乱码产生的原因. 一直以为是浏览器的原因,结果我在chrome,firefox,IE9里面都出现了乱码,所以浏览器的因素可以排除.为了验证我猜测是Gvim的原因, 我用记事本(note)简单写了一个php文件 复制代码 代码如下: <?php echo "你好"; echo "世界"; ?> 结果没有出现乱码,所以问题就出在Gvim上,这个结论水到渠成. 于是,开始研究Gvim的配置文件(_vimrc), 现在给大家看一下我产生乱码之前的配置(

  • Vim命令高级用法

    1.启动-R  只读方式打开,但打开后如果有权限,可以强制执行保存.-c (command) 加载后执行命令,比如"vim -c /most myfirst" 打开该文件后直接向后搜索most.更多的可以参考 -h 2.同时编辑多个文件vim [file1] [file2] ... 此时 :ar 查看当前编辑的文件名 :n  切换当前编辑的文件 另外还有 :e  切换到新文件 :w  读取已存在的文件并将其内容放入正在编辑的文件中 :w [起始行][终结行] [文件名]  将当前文件部

  • 搭建Vim为自定义的PHP开发工具的一些技巧

    虽然 vim 本质上只是一个编辑器.但只要配合一些适当的插件, vim 也能变成一个全功能的 IDE .笔者使用 vim 已经有挺长一段时间了,经过反复的试验,配置了一个高效的 PHP 开发环境,实为居家旅行.谋财害命.杀人越货必备之良品. 安装 vim 鉴于大多数读者都是使用Windows 环境,所以本文就以 Windows 作为运行环境.不过由于 vim 出色的跨平台特性,配置文件只需简单修改就可以在 Linux 版本的 vim 中使用. 目前 vim 的最新版本是 7.2 ,如果没有特别原

  • 使用python开发vim插件及心得分享

    vim有各种强大的插件,这不仅归功于其提供的用来编写插件的脚本语言vimL,还得益于它良好的接口实现,从而支持python等语言编写插件.当vim编译时带有+python特性时就能使用python2.x编写插件,+python3则支持python3.x,可以使用vim --version来查看vim的编译特性. 要使用python接口,可以用:h python来查看vim提供的帮助文档,本文做一个简单的介绍.我们都知道在vim里可以执行bash命令,只需要:!command即可,那么vim里可以

  • PHP工程师VIM配置分享

    关于我的vim配置 经常在服务器上写代码,一个朋友提供了关于他的vim配置,在此分享给大家. 界面效果图: .vimrc 内容如下 "========================================================================= set nocompatible " be iMproved, required filetype off " required " git clone https://github.co

随机推荐