译自 Vim [2005-10-09]
终于等来一个新的发布版了!该版本在 Vim 6.3的基础上加了大量补丁,还有runtime(运行时)文件也做了更新。这个版本绝大部分已经进行了一段时期的测试,因此你可以将该版本用在日常工作中。由于距上次发布版已经过了很长时间,现在发布这个BETA版本以检查发布文件中是否存在问题。如果你发现一些错误,烦请报告之!更多信息请参看 release message(发布消息)。(Bram Moolenaar)
Bram在该消息中写道,这只是一个bugfix BETA发布版,并没有增加新特性,只是修复了一些bug,更新了一些文件。如果一切顺利,将在一周内发布 Vim 6.4,它将成为有史以来最稳定的Vim版本。
玩了几天 FVWM ,简单写一下自己的感受:)
要玩好 FVWM :
首先、要理解其模块化组织方式,如FvwmTaskBar/FvwmPager/FvwmIconMan/FvwmButtons等等(其实其它的WM或桌面系统一般都采用模块化方法进行编写);
其次、要明白整个桌面完全可以在.fvwm2rc(对fvwm2而言)中进行定制;
三、找个现成的fvwm2rc(比如taviso的),开始你的fvwm之旅;
四、理解FvwmButtons,这个玩意儿几乎无所不能。
下面两个网址有对FvwmButtons的简单介绍。使用FvwmButtons时,一定要理解Rows和Columns,这两个值简单来说就是要把一块FvwmButtons(Geometry指定它的象素值大小)分成几份。比如:
DestroyModuleConfig FvwmYaBar: *
*FvwmYaBar: Geometry 1280×26+0-0
*FvwmYaBar: Font "Shadow=1 b bl r br rft:SimSun:size=10:encoding=iso10646-1"
*FvwmYaBar: Colorset 30
*FvwmYaBar: Columns 1280
*FvwmYaBar: Rows 26
*FvwmYaBar: BoxSize fixed
*FvwmYaBar: Frame 0
*FvwmYaBar: Padding 0 2
中,我指定了FvwmYaBar(作为具体的FvwmButtons)的大小1280×26(单位象素),放在屏幕底边。然后定义了Columns和Rows分别为1280、26,即把FvwmYaBar分成了1280×26个小块(即每小块大小为1×1象素),之后就可以在它里面随意放置icons、文字、或FVWM模块如FvwmIconMan等等,可以打造完全个性化的面板。当然你也可以把Columns和Rows值设定的更大或更小,全看你需要的定位精度。
下面两个网址有FvwmButtons的入门教程:
http://www.zensites.net/fvwm/guide/fvwmbuttons.html
这阵子开始玩 Ubuntu 和 FVWM ,上瘾了……。
我的FVWM桌面,从taviso那里直接拷来的,基本未做大的改动,只是增加了中文支持,以后要好好调教调教,算是边学边用。发现FVWM Beginners Guide还是挺适合初学者的。(点击查看我的桌面)
收集的 Ubuntu 相关站点:
- APT HOWTO – Basic Configuration
- Debian APT HOWTO
- Welcome to i18n.linux.net.cn
- Ubuntu
- Ubuntu中文
- Installer Terminal
- BusyBox
- BerliOS – The Open Source Mediator
- Beyond Linux From Scratch
收集的 FVWM 相关站点:
Vim Script分为utility、ftplugin、syntax等等,这里先介绍utility的top 10,主要参考 Vim 的top rated scripts,排列顺序也按rate的降序来;另也顾及自己的需求:主要集中在编程、记事等文本处理方面。所谓top 10只是一个概数,并一定恰好是10个。
1. taglist.vim : Source code browser (supports C/C++, java, perl, python, tcl, sql, php, etc)
| script karma |
Rating 3207/992, Downloaded by 27428 |
| created by | Yegappan Lakshmanan |
“Tag List” plugin是用于 Vim 的源代码浏览器,令你有效浏览各种不同编程语言的源代码文件。用 Vim 打开源代码文件后,:Tlist开启Tag List,就会在同一 Vim 程序里打开一个新window,分类列出对应源文件定义的tags,包括函数、类、结构、变量等。这个plugin的功能类似于Visual C++里workspace窗口ClassView页面,Eclipse里的Outline视图等等。
“Tag List” plugin提供了下列特性(译自taglist doc:taglist-intro):
- 在垂直或平行分割的Vim窗口中显示文件中定义的tags(函数、类、结构、变量等);
- 根据其类型将tags分组,并以可折叠树形式显示;
- 当你在不同文件/缓冲之间切换时,可以自动更新taglist 窗口。当你打开新文件时,新文件中定义的tags会添加倒现存的文件列表中,文件中定义的tags按文件名分组显示;
- 选中taglist窗口里的tag名时,光标能定位到源文件中该tag的定义处;
- 自动高亮显示当前tag名;
- 在GUI vim里,可以在Tags下拉菜单和弹出菜单显示tags;
- 可以显示tag的原型和作用域;
- 可以选择在taglist窗口里显示tag原型而非tag名;
- tag列表可以按名字或按行号排序;
- 支持下列语言文件:Assembly, ASP, Awk, Beta, C, C++, C#, Cobol, Eiffel, Erlang, Fortran, HTML, Java, Javascript, Lisp, Lua, Make, Pascal, Perl, PHP, Python, Rexx, Ruby, Scheme, Shell, Slang, SML, Sql, TCL, Verilog, Vim and Yacc;
- 可以方便加以扩展,以支持新语言。对现有语言的支持也可以方便的加以变动;
- 提供了获取当前tag的名字和原型的命令;
- 提供了在Vim状态行或窗口标题栏里显示当前tag名的函数;
- 显示在taglist窗口里的tags列表能被存储,供下次再次用Vim编辑时使用;
- 可运行在console/teminal和GUI版本的Vim中;
- 能和winmanager plugin一起工作。借助winmanager plugin,你可以同时使用下列Vim plugins,如file explorer, buffer explorer和taglist plugin,如同IDE一样;
- 既能用在Unix中,也能用在MS-Windows系统中。
2. minibufexpl.vim : Elegant buffer explorer – takes very little screen space
| script karma |
Rating 1380/422, Downloaded by 11239 |
| created by | bindu wavell |
当下流行的GUI编辑器或IDE一般都会支持同时打开多个文件进行编辑,这些文件以tabs显示在屏幕上下方;比如Visual Studio, Eclipse, ultraedit, editplus等等。 Vim 天生就支持同时打开多个文件,即多个缓冲区(buffer),并且能用:buffers命令浏览已打开的多个缓冲区(文件),用:b1, :b2…切换缓冲;但是眼下无论是消费产品还是软件,都在追求可用性、易用性,用户友好。
于是minibufexpl登场了,先来看看它的效果吧,screenshot。
把minibufexpl.vim拷贝至$VIM/vimfiles/plugin目录后便安装完毕。重新启动Vim,只要用single Vim 打开多个文件,就会在Vim菜单栏下新增一个名为-MiniBufExplorer-的窗口,在其中列出现有buffer(缓冲)的编号和名字(文件名)。只要鼠标双击buffer tab便能切换到对应文件,使其处于可编辑状态;如果光标处于-MiniBufExplorer-窗口,也可以用Tab或Shift + Tab在buffer之间来回移动,回车确认切换到光标所在的buffer。用键盘上的d键可关闭选中的buffer(当然此时光标在-MiniBufExplorer-窗口中)。
该plugin的作者是在Jeff Lanzarotta的BufExplorer.vim帮助下进入了这个领域。
另外我们可以把键盘上的上下左右四个方向键绑定到这个plugin的几个函数上,使buffer切换更加便捷:
1 map <right> <ESC>:MBEbn<RETURN> "右键,切换到下一个buffer窗口
2 map <left> <ESC>:MBEbp<RETURN> "左键,切换到上一个buffer窗口
3 map <up> <ESC>:Sex<RETURN><ESC><C-W><C-W> "向上键,打开当前buffer所在文件夹的文件列表窗口
4 map <down> <ESC>:Tlist<RETURN> "向下键,打开tag列表窗口
其中3、4行涉及了另外两个plugin。
coming soon
不久前曾看到有人在校内BBS里询问如何在 Vim 里高亮显示当前行(光标所在行),这会儿闲来无聊,上 Vim 的官方站点Tips栏里搜了一把,找到一小段还不错的设置脚本,#263。另外, Vim 可以通过:set nu[mber]显示行号,但并不是在文本里实际插入行号,而有时又有这方面的需求,如把代码片段插入网页,要求有行号,如何解决呢?见#65。下面详细介绍这两个tips。
Tip #263: color active line
| created: | June 18, 2002 7:05 | complexity: | basic | |||
| author: | Armin Rehm (rehm.armin@schwenk.de) | as of Vim: | 6.0 |
该tip作者推荐使用他提供的方法二,我试用后发现方法二最为直接有效,因此只对其加以解释。方法一请见原文。
1 :highlight CurrentLine guibg=darkgrey guifg=white (or whatever colors you want)
2 :au! Cursorhold * exe ‘match CurrentLine /\%’ . line(‘.’) . ‘l.*/’
3 :set ut=100
注意以上三句是在Ex command下逐条输入,如果要使 Vim 运行后即启动此项功能,必须将这三行加到vimrc(windows下即_vimrc)文件中,开头的三个”:“应去掉。
说明:该方法使用”match“来高亮显示一个字符串(match的用法在Ex下简单用法为 :match highlight-group-name string-match-some-pattern,如:match ErrorMsg "This" 会把文件里的”This“字符串都显示成红底白字),但并不会干扰当前搜索匹配。
行1,定义一个highlight group(此处用法为:hi[ghlight] [default] {group-name} {key}={arg} ..),名为CurrentLine,设定高亮文本背景色(guibg)和前景色(guifg),此处可自行设定高亮颜色。
行2,一有Cursorhold事件(:h Cursorhold查看详细解释,注意该事件在插入模式下不发生,故这个tip在插入模式无法工作:(),便在Ex command里执行(exe)match CurrentLine /\%’ . line(‘.’) . ‘l.*/,CurrentLine是行1定义的highlight group;第二个参数指定要高亮的字符串,先:h /\%l看看/\%{line-number}l的用法,而line(‘.’)则是取得光标所在行的行号,.*即该行的所有字符(包括控制符)。
行3,ut即updatetime,单位ms,表示经多少ms不按键盘即表明Cursorhold发生。
下列命令关闭该高亮功能,注意执行的顺序
1 :au! Cursorhold
2 :match none
Tip #65: Insert line number into the actuall text of the file.
| created: | April 5, 2001 16:59 | complexity: | basic | |||
| author: | Devin Weaver <ktohg@tritarget.com> | as of Vim: | 5.7 |
:set number虽然可以在 Vim 中显示漂亮的行号,不过并不会在文件中加入行号。在GNU Linux中可以借助cat -n file > new_file达此目的,那么 Vim 如何做到这点呢?
:g/^/exec "s/^/".strpart(line(".")." ", 0, 4)
说明::[range]g[lobal]/{pattern}/[cmd]可知,此处pattern为/^/,即全部文本;cmd为exec命令,其后部分都是exec的内容,:[range]s[ubstitute]/{pattern}/{string}/[&][c][e][g][p][r][i][I] [count]可知,pattern为/^/,即每行文本的起始处;string为strpart(line(".")." ", 0, 4)函数返回值。
line(".")." "返回当前行的行号,再加上4个空格,假定一具体值"123 "(双引号内的部分);strpart("123 ", 0, 4)返回前四个字符("123 "),"s/^/123 "即把每行开头部分替换成"123 "。
Vim 6中更简便的写法::%s/^/\=strpart(line(‘.’)." ", 0, 4),:h \=查看细节。
Visual模式下写法::s/^/\=strpart((line('.')-line("'<")+1)." ", 0, 4),其中line("'<")即Visual模式下,被选中文本首行的(在原文本中)行号。
PS:一个很不错的Windows自动化脚本工具Autoit,Tip #805: Windows: gvim as an external editor提及该工具。
浏览了 Donews 上Blog排行榜里的十几个blog,没发现多少令人激动或可借鉴,而不少则充斥着转载或拷贝。大概是不能指望在这浮躁的互联网上找到很多珍珠的,有几颗就应该满足了。最要紧的还是写好自己。
前两天在 HTML Dog 上看HTML教程时,见到下面这么一段话。
译自 HTML Dog HTML Beginner’s Guide Links
Note
标签a允许你在新开启的窗口中打开链接,而非替换用户当前浏览的web页面;这样一来用户就不会离开你的站点,初一想这个功能看似很不错。
但是,你不应该这么做,理由有一箩筐。
从可用性角度来看,这种做法破坏了导航(navigation)。浏览器上最常用的导航工具是“后退”(或“转到上一页”)按钮,而开启一个新窗口会使该按钮失效。
从更宽、更一般的可用性角度看,用户可不愿看到窗口四处弹出。如果他们想在新窗口中打开链接,那么他们可以自己选择那么做。
初看到这段说明,颇不以为然。因为自己浏览网页时,习惯在新窗口中打开(几乎)每个链接,尤其是正在浏览站点之外的链接。习惯几乎总会决定或影响下一步行动。所以自然而然,我本能的把blog或其它个人站点上的链接设置为在新窗口中打开(标签a的target属性设为_blank)。虽然这样做会给自己带来不少麻烦(一般缺省是在本窗口打开链接,总要做些额外设置才能如愿),还是乐此不疲。
冷静下来再读了一遍上面的说明,发现自己应该改改这个糟糕的习惯。是啊,给用户以最大的自由(虽然当下这个blog的主要用户是我自己,不过既然我都是其中一员,似乎更有理由改掉原来的习惯),让链接的target属性保持其缺省值(一般为_self)便是最好的选择。至于是否在新窗口中打开链接,交由用户去抉择吧。何况用户手头身为user agent的浏览器完全可以做到便捷的在新窗口中打开链接(Firefox中,在链接上按鼠标中键,或者安装鼠标手势插件)。
现在blog上还是有不少链接target属性设为_blank,日后修改。
Dive Into Accessibility 里也有此主题相关的论述,中文版为 第十六天:不要开出新窗口,jedi.org翻译。
经过多次的调整,差不多确定了blog的css。看着还算清新,色彩用的不是很多,主要的背景色为#F9F9F9,表格头行的背景色为#F4F4F4;强调突出的文本,标题背景色#E3EAF9,正文部分背景色为#F2F5FC;链接文字颜色不一一列举。
每篇blog开始处的(48X48-50X50大小)图标都取自互联网,除调整大小、从源图中剪切及细微调整外未作任何处理。其中数个图片截取自 Apple 公司网站。
皮肤(管理-选项-配置页面)为keso,自定义CSS样式中还有许多重复的定义,有待精简。
既已搞定blog的style,接下来就是灵魂和内容了。曾有过那么多个blog,却无一不半途而废,其中固然有些许客观原因,而自己的不坚持则更是主因。不为blog而blog,而是要努力成长,或许到现在这个年龄说这话有点不称,事实是许多方面——不管是技术、为人、做事种种——我都没有成长到足够令自己满意。而这个blog呢,至少今后不短的时间内,将扮演仆人的角色,忠实而用心的记录我成长的点滴。
生活琐事,交由MSN spaces负责。
PS:大致浏览了一下CSDN、BlogChina上自己的blog,居然找不到几篇有用的文章;在TechWeb上的blog也仅有两篇文章可以入目,一篇是 Vim 中窗口的分割同步,另一篇是标准模板库(STL)介绍。
又:BlogChina上居然找不到删除帐号的页面。
译自 Vim [2005-07-06]
Vim7中已加入拼写检查功能,在重绘时(redrawing)时起作用,这点和语法高亮功能一样。为了让拼写检查速度尽可能快,我们对代码和数据结构作了优化。Vim能够给你一些更正拼写错误的建议(提示)。这一点部分基于Aspell,效果相当不错:第一次建议的字三分之二情形下会满足你的更正要求。
也可以使用取自OpenOffice.org的单词(字)列表,这样便能即可支持多种语言。Vim使用了自己的拼写文件格式,它更加紧凑,载入速度更快。你可以构建自己的拼写文件或者直接从ftp站点获取。以上这些功能仍处于alpha版本!目前看来一切工作良好,不过注意,命令语法、选项名等仍有可能作一定变动。 (Bram Moolenaar)
嘿,要学习HTML吗?看了HTML Dog上大半HTML Beginner‘s Guide,我就忍不住一定要向你推荐这份教程,不管你是初学HTML还是个HTML熟客。英语解说简洁简单,耐心点看懂肯定没问题,不知是否已有中文翻译。PS:小结里不少内容(英文原文或翻译后)直接取自HTML Dog,未一一列出。
时刻牢记,HTML和CSS的使命在于使内容-content(HTML)和表现-presentation(CSS)相分离。HTML不过就是一块特别结构化了的内容,而这块内容的格式化输出/显示则要求诸CSS。
Getting into the frame of mind of doing things the RIGHT way from thestart will turn in to much better result in the end.
千里之行始于足下。良好的开端是成功的一半。在其它一些HTML教程中你可能会发现一些HTML Dog上未包含的内容,原因可能是这些书籍、教程中许多方法已经过时、不符合标准或做法不对。不知国内此类教材有多少符合W3C的各种标准,不过看看国内符合Web标准的网站数量也许能从某个角度折射出现状。
如果你从没写过HTML,从哪儿下手呢?如何纯手工,只用notepad或Vim打造自己的第一个网页呢?看看HTML Beginner‘s Guide的Getting Started吧。
要让自己打造的网页符合W3C标准吗?Ok,在(网页源代码)一开头加上
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
吧,让浏览器知道你要做什么,省得它老无端猜测,产生些让你意想不到的反应,令你抓狂。
标签(tag)是HTML文档的基本结构之一,由opening tag和对应closing tag把内容包裹起来。最新的标准要求所有标签必须是闭合的,如<html>…</html>、<br />,把那些陈旧的做法或者依赖特别浏览器的做法扔到垃圾堆里吧,当然你要乐意,也可以把它们作为反面教材或历史收藏着。
标签也可以有属性(attribute),以携带额外信息。属性位于opening tag内,其值由双引号括起来。如下
<tag attribute="value">Margarine</tag>
一般来说,标签只是为了标记元素(element)的开始和结束。多个元素组成了web页面。比如,<body>和</body>标签之间的一切(包括这两个标签)即body元素。另一个例子,因<title>和</title>是标签,故<title>Rumple Stiltskin</title>是一个title(标题)元素。
所有HTML页都应该有标题(title),显示在浏览器顶部(title bar处)。标题由title标签指定,并处于<head>和</head>内。头部(head)元素在body元素之前加载(当然由浏览器了),并不显示在浏览器窗口里。
| 标签 | 英文全称 | 注释 |
|---|---|---|
| p | paragraph | 段落 将内容分段,还记得小学作文吗,归纳这个那个段落的主旨,归纳整篇文章的中心思想……天哪 |
| em | emphasis | 强调、加粗opening tag和closing tag之间的内容 |
| strong | strong | 同上 |
| br | line break | 断行标签,Ok,<br /> |
| h1,…h6 | heading | 一层含一层,使内容能层次化展现,对比一下书籍的篇、章、节、小节。h1只能用一次 |
| ul | unordered list | 无序号列表 |
| ol | ordered list | 有序号列表 |
| li | list item | 列表项 |
| a | anchor | 锚,链接到其它页面,页面的地址由标签a的属性href指定,可以是absolute和relative,即绝对地址和相对地址 |
| img | image | 图片,<img src="http://www.htmldog.com/images/logo.gif" width="157" height="70" alt="HTML Dog logo" />地址可以是绝对或相对的,alt即alternative description,别名,图片无法显示时,出现在图片原本应出现的位置上。在最新版本的HTML中,标签img必须有alt属性。另标签img没有 closing tag,因此以/>结束 |
| table | table | 表格,唉,世界各地都在滥用HTML表格,用它进行页面布局(layout)。表格的正确用法是让表格履行它注定的使命——布局显示表格化的数据 |
| tr | table row | 表格里的行 |
| td | table data cell | 表格一行里的数据单元 |
| form | form | 表单,hoho,这个有的说了…… |




