无插件Vim编程技巧
相信大家看过《简明Vim教程》也玩了《Vim大冒险》的游戏了,相信大家对Vim都有一个好的入门了。我在这里把我日常用Vim编程的一些技巧列出来给大家看看,希望对大家有用,另外,也是一个抛砖引玉的过程,也希望大家把你们的技巧跟贴一下,我会更新到这篇文章中。另外,这篇文章里的这些技巧全都是vim原生态的,不需要你安装什么插件。我的Vim的版本是7.2。
目录
浏览代码
缓冲区
窗口分屏浏览
分屏同步移动
Tab页浏览目录
保存会话
Quickfix
关键字补全
其它技巧
字符相关
缩进相关
复制粘贴相关
光标移动相关
读取Shell命令相关
vim的终级插件
浏览代码
首先,我们先从浏览代码开始。有时候,我们需要看多个文件,所以,传统的做法是,我们开多个tty终端,每个tty里用Vim打开一个文件,然后来回切换。这很没有什么效率。我们希望在一个Vim里打开多个文件,甚至浏览程序目录。
浏览目录的命令很简单:(你也可以直接vi ...
可视化编程
本文来自《Visual Programming Languages – Snapshots》,作者Eric Hosick收集了一堆关于可视化编程的工具,好多我都听都没听说过,我一股脑的全转过来,给大家看看,算是开开眼界了。本文也是参考了Wikipedia的 Visual Programming Language 词条。
另外,在原文有很多评论,其中也有很多正文没有提到的,你可以前去围观一下。
目录
SketchPad
Alice
App Inventor For Android
ArcGIS Model Builder
Automator
Blockly
Bounce
Copper Thoughts
DRAKON
Etoys / Squeak
Field
FL Studio
Flow Hub and NoFlo
FlowStone
GoDot Engine
Google Web Designer
Hopscotch
HyperCard ...
Lua简明教程
这几天系统地学习了一下Lua这个脚本语言,Lua脚本是一个很轻量级的脚本,也是号称性能最高的脚本,用在很多需要性能的地方,比如:游戏脚本,nginx,wireshark的脚本,当你把他的源码下下来编译后,你会发现解释器居然不到200k,这是多么地变态啊(/bin/sh都要1M,MacOS平台),而且能和C语言非常好的互动。我很好奇得浏览了一下Lua解释器的源码,这可能是我看过最干净的C的源码了。
我不想写一篇大而全的语言手册,一方面是因为已经有了(见本文后面的链接),重要的原因是,因为大篇幅的文章会挫败人的学习热情,我始终觉得好的文章读起来就像拉大便一样,能一口气很流畅地搞完,才会让人爽(这也是我为什么不想写书的原因)。所以,这必然又是一篇“入厕文章”,还是那句话,我希望本文能够让大家利用上下班,上厕所大便的时间学习一个技术。呵呵。
相信你现在已经在厕所里脱掉裤子露出屁股已经准备好大便了,那就让我们畅快地排泄吧……
目录
运行
语法
注释
变量
控制语句
while循环
i ...
GCC 用 C++ 来编译
GCC在2012年8月15日的时候,merge了一个patch – Merge from cxx-conversion branch,这意味着,以后在GCC的编译只能用C++的编译器了,也意味着,gcc的实现代码开始转向C++了。
你可能会有两个问题,
一个问题是为什么GCC要转成C++的实现?
没有C++的编译器,我怎么编译C++编译器的代码?这不是“鸡生蛋还是蛋生鸡”的问题么?
那,我们来看一看吧。
为什么要用C++
在GNU的C++ Conversion文档中,我们可以在Background中看到这样的描述:
Whether we use C or C++, we need to try to ensure that interfaces are easy to understand, that the code is reasonably modular, that the internal documentation corresponds to the code, that it is possi ...
28个Unix/Linux的命令行神器
下面是Kristóf Kovács收集的28个Unix/Linux下的28个命令行下的工具(原文链接),有一些是大家熟悉的,有一些是非常有用的,有一些是不为人知的。这些工具都非常不错,希望每个人都知道。本篇文章还在Hacker News上被讨论,你可以过去看看。我以作者的原文中加入了官网链接和一些说明。
目录
dstat & sar
slurm
vim & emacs
screen, dtach, tmux, byobu
multitail
tpp
xargs & parallel
duplicity & rsyncrypto
nethack & slash’em
lftp
ack
calcurse & remind + wyrd
newsbeuter & rsstail
powertop
htop & iotop
ttyrec & ipbt
...
Git显示漂亮日志的小技巧
原文:http://garmoncheg.blogspot.com/2012/06/pretty-git-log.html (墙)
Git的传统log如下所示,你喜欢吗?
看看下面这个你喜不喜欢?(点击图片看大图)
要做到这样,命令行如下:
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --
这样有点长了,我们可以这样:
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --"
然后,我们就可以使用这样的短命令了:
git lg
如果你想看看git log –prett ...
那些曾伴我走过编程之路的软件
收家的时候发现了一张VC++6.0的光盘,实然引发了我的怀旧情结。于是在微博上感叹了一下,看到一些朋友的回应,还有朋友提到了Turbo C 2.0,于是更回放大了我的怀旧情绪,让我回想了很多N年前伴我走过编程之路的软件。现在看下来,有些感叹,又有些可笑。感叹的是技术发展的变迁,可笑的是当时的一些想法。(Unix/Linux是在大四和毕业的时候接触的,虽然这是我的强项,但是这下面的编程这么多年来没什么变化,所以就不提了)注:图片较多,请稍等。
还记得第一次接触编程是在高中的时候,用中华学习机学Basic程序,后来到了大学,虽然学校的课程没有教Basic语言,但是DOS下有一个叫Quick Baisc的东西让我把高中时的知识又捡了回了。
大学里学的第一门语言是Pascal,所以,用的编程软件也就是Turbo Pascal,还记编译起来巨快无比,尤其是那个只有软盘和640K的基本内存的时代。
在这里还需要提一点的是当时的一个学习打字指法的软件,TT,呵呵。还记得当时整日整夜的去机房练打字,练指法速度。还记得当时能打到38分就算是相当的NB了。
这是当时TT中的一个游戏,很好玩。
...
给程序员的VIM速查卡
前几天酷壳发布过“vim简明攻略”,不知道大家练得怎么样了。如果你练了一下,那么这里这个速查卡就会对你有帮助了。以前本站也有过一个(vim速查卡),不过其太简单了。我觉得这个很不错,很全,很直观。这个速查卡来自这里。其用颜色标注了级别:
Green = 存活级
Yellow = 感觉良好
Orange / Blue = 高级
Red = 专家级
下面的图片点击可以看大图:
给程序员的VIM速查卡(点击看大图)
你还可以下载PDF版的和Excel版的,如果你是色盲的话,还有蓝色版PDF的。如果你不是很喜欢的话,这里还有几个:
http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html
http://tnerual.eriogerg.free.fr/vim.html
http://www.lagmonster.org/docs/vi.html
http://jrm ...
简明 Vim 练级攻略
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。
——————————正文开始——————————
你想以最快的速度学习人类史上最好的文本编辑器VIM吗?你先得懂得如何在VIM幸存下来,然后一点一点地学习各种戏法。
Vim the Six Billion Dollar editor
Better, Stronger, Faster.
学习 vim 并且其会成为你最后一个使用的文本编辑器。没有比这个更好的文本编辑器了,非常地难学,但是却不可思议地好用。
我建议下面这四个步骤:
存活
感觉良好
觉得更好,更强,更快
使用VIM的超能力
当你走完这篇文章,你会成为一个vim的 superstar。
在开始学习以前,我需要给你一些警告:
学习vim在开始时是痛苦的。
需要时间
需要不断地练习 ...
10个必需的iOS开发工具和资源
界面总不是一件很容易事,尤其是iPhone/iPad的界面,做过iOS开发的程序员,一定会感到开发iPhone/iPad的界面是一件多么不容易的事。下面的文章来自10 Essential iOS Developer Tools & Resources,这个文章介绍了十个iOS开发的基础性工具和资源,其一定会很有效地帮你做iOS的开发。(在这里,我再闲扯一句,虽然Android的开发好像整整XML文件界面就出来了,其明显比iOS的开发要容易很多,但是我还是觉得iOS的生命力要强过Android,看看Android今天的应用就知道,有时候入门门槛低不是一些好事,大多数的程序员搞出来的Android代码和软件简直令人作呕,就像不是每个人都能烧得手好菜一样。(“食客与大厨”,也许偏激,但值得你我思考),又把蛋扯远了)
目录
1. Omnigraffle + Ultimate iPhone Stencil
2. Glyphish Icons
3. teehan + lax iPhone 4 GUI PSD
4. Stanford Univ ...
狗日的开源软件许可证
你知道这个世上有多少种开源软件的许可证吗?GPL,BSD,MIT,Apache?GNU上有个网页,上面记录了几乎所有的开源软件的许可证,真TMD的多,有开源的,有商用的,有软件的,有文档的,多得你都不想看了,天杀的,程序员们还真能鼓捣啊。不过,主流的也就几种——GPL、BSD、MIT、Mozilla、Apache等等。
那么,你知道怎么区别他们吧?怎么选择他们吗?这里有一张比较复杂的图,在调侃这些纷繁的许可证(我不翻译了,这个图属于是发泄不满)
下面是另一个图,这个图来自这里,这个图并不恶搞,但其非常简单地说明了如何选择一个开源的许可证:
最后,正如那些BT雷人的程序语言一样,我想介绍两个比较独特的开源软件许可证给你,以辉映本文的标题——
1、WTFPL
WTFPL全称 What The Fuck Public License,这个许可证单从名字上就那么NB了,其许可证如下,相当的短,完全的自由,你的开源软件有自信用这个许可证吗?
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
...
版本管理器的发展史
以前本站发布过编程语言进化,Windows的达尔文进化图,今天在网上看到版本管理器的进化图,转过来,源文链接如下:
http://codicesoftware.blogspot.com/2010/11/version-control-timeline.html (墙)
这张图上分成了四个时期:
史前时期:1982年的RCS。现在你可能还能在Unix的发布包中找到它。
古典时期:1990年的CVS(经典的SCM管理器,可惜不能track目录和文件名的改变,今天这个东西已经过时了),1985年的PVCS,1992年的clearcase(价格贵,功能复杂,当然,今天也有很多公司在用),微软的VSS(Welcome to Hell),90年代中期的Perforce(P4,这个工具今天都还在被广泛地使用,尤其是那些中等大小却有着大量开发团队的公司,现在是Google内部最大的代码管理器)。
中世纪时期:SVN(Linus很不喜欢SVN,2006年引入了Git),AccuRev(强力支持branch和merge,其扮演了一个很重要角色帮助社区脱离clearcase和CVS),
文艺复兴时期: ...
Eclipse和Vim快捷键桌面
点击图片看大图
Eclipse 快捷键桌面
vim 移动快捷键桌面
浏览器正则表达式检查插件
以前本站介绍过一个在线的《正则表达式生成器》,下面是两个在浏览器中检查正则表达式的插件,Firefox的和Chrome的,希望对你有用。
1)Firefox:Regular Expressions Tester
Firefox正规则表达式检查插件Regular Expressions Tester
2)Chrome:Regular Expression Checker
Chrome正规则表达式检查插件Regular Expression Checker
Emacs配色在线生成器
http://alexpogosyan.com/color-theme-creator/
点击“Generate config file”,你可以看到生成的Emacs配色配置。
Coderun.com 在线开发IDE
相信大家都还记得我以前向大家推荐的《在线代码编译服务Codepad.org》吧。这回的这个更猛——在线的代码开发的IDE,可以编译,执行,调试。不过,主要针对Web方面的,主要是C#,ASP.NET,Javascript(JQuery)和PHP,很强大哦。那句话是怎么说来的——“如果一个软件可以用Javascript来写,那么这个软件的最终版本会是Javascript”。这个在线的IDE是:
http://www.coderun.com/ide/
有朋友在留言中说,这个项目可能不实用,没什么意思,而我想说,Google的Chrome OS项目可能非常喜欢这个东西。顺便说一下,这个Online的IDE是开源的,源码在这里:http://coderun.codeplex.com/。
正则表达式生成器
对正则表达式很头疼,是不是?每次看到都觉得像看天书似的,别说让人自己整一个出来了。下面这个网站可以帮你生成正则表达式,而且还可以根据不同的语言生成不同的代码示例,很强大。
http://www.txt2re.com/index.php3
打开上面那个网页,你会看到有三步。
第一步,输出你想匹配的一个文本示例,然后点“Show Machted”,于是进入第二点。
第二步,当你看到那花花绿绿的界面是不要头大(那个配色也太可怕了),那是这个会把你的这个字串每个字符都拆出来,并把单词分隔。于是,你可以点击那些花绿格子间的链接来组织你的正规表达式。,比如:c表示任意字符,还有什么int,day,string之流的东西。(相当ugly的界面)在这一步,你一点要点点什么,不然不会进入第三步。
第三步,选择一个编程语言,然后你可以看到相关的代码示例。语言支持:Perl PHP Python Java Javascript ColdFusion C&nbs ...
把ASCII图转成图片
我们都知道有很多软件帮我们把图片转成ASCII码图,这里这个工具是帮我们把ASCII图转成漂亮的图片。这个开源的软件是一个用Java写成的一个命令行的工具。对于这个工具的目的,我个人以为如下:
其一,可以把别人的ASCII图转成图片,于是更好看一些。
其二,你可以使用ASCII码画图,而不需要使用图片编辑器。
其三,因为是命令行,所以,你完全可以以脚本或程序的方法来作图了。
这个工具软件叫ditaa,其网址是:http://ditaa.sourceforge.net/。
这个小工具支持一些语法定义,可以帮你更好地产生图片,如下所示:
圆角矩形
/--+
| |
+--/
定义颜色
Color codes
/-------------+-------------\
|cRED RED |cBLU BLU |
+-------------+-------------+
|cGRE GRE |cPNK PNK |
+-------------+---------- ...
编译vim解决中文支持
最近开始抛弃Ubuntu折腾CentOS 5.3(注:无意挑起OS之争),每当换一个OS,第一个配置的就是VIM。
介于以前在MacOSX的编译经验,直接三部曲
./configue && sudo make && sudo make install
解决的问题。 但在CentOS之后发现无论如何都不支持中文。
通过文档的翻阅和google的搜索,发现了问题出现在编译上。vim支持中文需要2个基本feature:multi_byte和iconv。
在vim中输入 :version 发现这2个feature都是 – multi_byte 和 – iconv。看来编译的时候参数没有配置对。
于是重新执行以下代码
./configure –prefix=/usr –with-features=huge
sudo make
sudo make install
问题就解决了。
另外vim配置文件从第一行(我是unicode的统一论者),加上
set enc=utf-8
set tenc=ut ...
在线代码编译服务Codepad.org
Codepad.org是一个很有意思的网站,它的主页很简单,左边是可以编译并执行的程序语言,右边则是让你输入程序的输入框,输入框的下面是一个“Run Code”的复选钮和一个“Submit”的提交按钮。
其操作起来也非常简单,先选中你要编译并运行的程序语言,然后在输入框中粘贴或输入程序的原代码,然后,点击提交,你就可以看么你程序编译出错的提示,或是执行的结果。
也许,你会觉得很无聊天,但我觉得这在某些时候会非常有用,尤其是你找不到编译器而又想验证一段代码的时候,这种时候还是比较多的。特别是我们很难有一台可以运行所有语言的电脑,如果有的话,那一定是你自己的个人电脑,当你不使用你自己的电脑时,你就会着急了。而且,我觉得这项服务非常地有意思,因为,这样一来,你甚至可以在你的手机上写任何语言的程序了。
目前这个网站支持下面这样语言——C,C++,D,Haskell,Lua,OCaml,PHP,Perl,Plain Text,Python,Ruby,Scheme,Tcl。(没有Java)
当我打开这个网页的时候,我立马想到了《6个变态的C语言Hello World程序》,然后就取了其中一个上 ...