标签 Vim 下的文章

一个关于Vim扩展TAB键的问题

今天遇到一个奇怪的问题:明明我在.vimrc中开启了expandtab选项,但是当我编辑Makefile文件时,敲入的TAB就是无法被VIM自动转换为四个空格(已经设置tabstop=4,shiftwidth=4),通过":set expandtab?"查看该选项值也居然是"noexpandtab";编辑其他文件(如.c、.h文件甚至是无扩展名的文件)时expandtab却都是开启的,TAB也可被自动转换,百思不得其解!

最初怀疑是compatible的设置对expandtab产生了影响。打开我的.vimrc,发现我设置的是“set nocompatible”,“compatible”已经被关掉,不会对expandtab产生影响。又想了想,假设受影响,那么所有文件都应该受到影响才对,不应该只有Makefile这类文件受影响。

想到这里,突然开了窍!是不是我开启的文件类型检测导致的呢?我在.vimrc设置了"filetype plugin on"。又看了一下这个设置的相关Manual,虽然没有直接给出答案,但是顺藤摸瓜,我也找到了原因。

因为开启了文件类型检测,Vim在打开或新建一个文件时会自动判断文件的扩展名以确定文件类型,在$VIMRUNTIME/filetype.vim中搜索"Makefile",可看到如下脚本语句:
" Makefile
au BufNewFile,BufRead *[mM]akefile,*.mk,*.mak,*.dsp setf make

Vim将Makefile划归为"make"类型(setf make)。在$VIMRUNTIME/ftplugin下有一堆xxx.vim文件,我们从中可以找到make.vim,这个文件就是VIM针对make类型文件的设置,在打开或新建make类型文件时被VIM自动加载。

这个make.vim文件中有一行设置如下:
" Make sure a hard TAB is used, required for most make programs
setlocal noexpandtab softtabstop=0

见文知义!果不其然,就是这个问题。又试验了一下,将.vimrc中的“filetype plugin on”注释掉,再打开Makefile文件,TAB就可以被自动转换为四个空格了。

回头一想,VIM针对make类型文件设置了noexpandtab也不无道理,编写过Makefile的朋友都知道,Makefile的基本组成结构就是:
target … : prerequisites …
    command
    …
    …
其中Makefile语法要求command前面必须放置一个TAB!否则解析失败!

这回真相大白了^_^

初用TiddlyWiki

2008年末和一位同事在山西出差,发现那位同事在用TiddlyWiki写一些日记,那时候算是第一次知道TiddlyWiki,但不知是为什么,当时的我并没有被TiddlyWiki所吸引,也就失去了一次使用TiddlyWiki的机会。

近期新启动了一个产品版本的开发任务,该版本是对之前遗留系统版本的重构和优化,我们想趁此机会将梳理遗留系统时总结下来的东西以及一些新的设计想法记录下来,以便于后人参考并迅速上手。曾经使用Confluence搭建过一个Wiki,但是该系统因公司政策被取消了。公司一年多以前建立了一个知识管理系统,不过我们发现这个系统极其难用,完全不能满足我们需要,这时我们又想起了TiddlyWiki。

TiddlyWiki应该算是世界上最小巧、最简单的Wiki工具了,只有一个大概300多K的html文件,所有功能都内置在该文件里,你编辑的内容也会在文件中存储着。从官方站下载后,用Firefox打开即算安装完毕了。

-> 定制你的TiddlyWiki
使用TiddlyWiki第一步想必都是定制界面吧。如果你想用TiddlyWiki写日记,那起码应该把Wiki页面上方的"My TiddlyWiki a reusable non-linear personal web notebook"字样修改一下,改成"Tony's Diary"之类的描述文字。另外英文看起来比较费劲,至少都应翻译成中文,TiddlyWiki默认采用UTF-8编码,对中文的支持完全没有问题。

TiddlyWiki默认页面中的"GettingStarted"会引导你做一些页面元素信息修改和定制。
* SiteTitle: 页面的主标题,点击斜体的"SiteTitle",在延伸打开的"SiteTitle"编辑区域中找到"edit",点击它编辑SiteTitle,比如改为“XX Developer Guide"。

* SiteSubtitle:
页面副标题,修改方式同上。

-> 关于Tiddler
在Wiki页面上你会看到较多的提示说明中都有Tiddler一词,官方给出的术语解释是”A content pane inside TiddlyWiki“,实际上Tiddler就是我们输入内容、图片、链接的地方。我们可以新建、修改和删除一个Tiddler,我们的Wiki实际上也是众多Tiddler的聚合体。系统有很多内建的特殊Tiddler,比如SiteTitle、SiteSubtitle、MainMenu、DefaultTidders(记录在启动时自动打开的Tiddlers列表)等,对于这些内建的Tiddlers建议保留。Tiddlers是按照名字识别和组织的,在页面右侧的包含多个Tab的那个栏里有一个"all" Tab,那里记录着所有的Tiddlers。
       
-> Tiddler内容编辑
新建一个Tiddler,我们就可以编辑Tiddler的内容了,一般我们最常使用文字、图片和超链接来表达我们的想法。

文字没有什么特殊的地方,顶多是字体上的差异,关于字体语法在中文TiddlyWiki上有详尽的说明。

贴图编辑格式:[img[果果|images/果果.jpg]] ,其中“果果”是鼠标悬浮在图片上时显示的文字,“images/果果.jpg”是图片的本地地址或Web Url”。当使用本地地址时,当前目录为TiddlyWiki文件所在目录。

链接到某文件:[[安装方法|install_guide.txt]]中的xxxx,其中“安装方法”将在界面中以带下划线的超链接显示出来,点击后Firefox会自动打开install_guide.txt; 如果把install_guide.txt换成install_guide.odt,那么Firefox会弹出对话框让你选择是打开还是Save。

链接到另外一个TiddlyWiki的Tiddler: [[安装指南|user_guide.html#快速入门]]中的xxx,其中user_guide.html是另外一个TiddlyWiki文件,“快速入门”是user_guide.html中的一个Tiddler,用一个#号将两者联系起来,这样点击后,Firefox会自动打开user_guide.html并跳转到打开的“快速入门”Tiddler上。

TiddlyWiki有一些高级功能还待挖掘中,不过估计可能也用不上多少,毕竟我们更多是提供内容。

由于不能为TiddlyWiki搭建一个Web服务器,因为那可能又与公司策略抵触,因此我们用svn管理TiddlyWiki文件(必要时可采用lock-modify-unlock模式。 另外TiddlyWiki毕竟采用的是单文件格式,一旦内容过多会导致文件Size过大,所以在使用TiddlyWiki之前最好做好规划,采用多TiddlyWiki files配合使用的方式,充分利用TiddlyWiki file之间的超链接和自动识别功能。

最后建议设立专人定期负责内容的整理和重编排,使信息的组织逻辑更清晰合理,也算是对Wiki的“重构”了。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言精进之路1 Go语言精进之路2 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com

欢迎使用邮件订阅我的博客

输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦!

这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats