星期二, 十二月 28, 2010

Goodby, Del.icio.us

新年将近,莫拉蒂忙着给国米球迷准备礼物,花点小钱送走贝秃;而Yahoo折腾地却是战略性地关闭网站(如果他们真的有战略)。美味的Del.icio.us看来保质期也不会太长了。所以,不得不说再见了,Goodby, Del.icio.us

delicious中,导出书签。

Delicious_Export

注册Zootool

Wallpaper 1440 x 900

在Settings的Sync页面中,导入先前从delicious中导出的htm文件。Zootool也提供了导出功能,可以将书签输出到浏览器,甚至重新导回到delicious中。

Zootool_Sync

导入完成后,将会收到邮件通知,并在Imported分类中看到所有导入的书签。

Zootool_Imported

而当你保存书签时,除了定义描述和标签之外,还可以将收藏分享到twitter和delicious等网络服务。

Zootool_Share

也就是说,我们在使用Zootool时,不但没有放弃delicious,而且增添了分享的便捷和悦目的体验。唯一的问题是,这网站会不会也被Yahoo收购呢?

星期日, 十二月 26, 2010

VIM学习笔记 比较文件(diff)

Vim通过调用外部的diff命令,可以对相似的文件进行比较。使用:help diff命令,可以查看关于比较文件的更多信息。

配置

在Windows系统下,请确认diff.exe已经存在于vim目录之下;并且在操作系统的PATH变量中,也包含了该目录:

diff

为了避免配色方案对比较结果显示效果的影响,我们可以在vimrc配置文件中,增加以下命令,以便在比较文件时使用默认的显示颜色:

au FilterWritePre * if &diff | colorscheme default | endif
if &diff
  colorscheme default
endif

比较

可以从命令行调用以下命令,来打开两个文件进行比较:

vim -d file1 file2

如果已经打开了文件file1,那么可以在Vim中用以下命令,再打开另一个文件file2进行比较:

:diffsplit file2

如果已经使用split打开了两个文件,那么可以分别在两个窗口里面输入以下命令,进行比较:

:diffthis

屏幕将被水平分隔,分别显示一个文件,其中不同的部分将被高亮显示。

  • 只在某一文件中存在的行,显示为蓝色
  • 而在另一文件中的对应位置的行,显示为绿色
  • 在两个文件中都存在的行,显示为紫色
  • 行中不相同的字符,显示为红色
  • 相同的行,没有高亮显示并且会被折叠。

如果想要垂直比较两个文件,可以使用以下命令:

:vert diffsplit file2

diff

折叠

使用zo命令,可以展开被折叠的相同的文本行;而zc命令,则可以重新折叠相同的行。

查看

比较文件时,经常需要结合上下文来确定最终要采取的操作。缺省情况下,是会把不同之处上下各6行的文本显示出来以供参考。其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数为3行,可以使用以下命令:

:set diffopt=context:3

滚动

如果你在一个文件中滚动屏幕,那么另一个文件也会自动滚动以显示相同的位置。你可以使用以下命令,取消联动:

:set noscrollbind

使用以下命令,将重新绑定联动:

:set scrollbind

利用以下命令,可以定义滚动方式:

:set scrollopt ver,hor,jump

其中:选项ver ,启用垂直同步滚动;选项hor ,启用水平同步滚动;而jump 选项,则在切换窗口时,使垂直滚动始终同步。

如果光标停留在两个文件的不同位置,那么可以使用下面的命令同步滚动:

:syncbind

更新

如果更改了某个文件的内容,vim又没有自动更新diff检查,那么可以使用如下命令更新:

:diffupdate

跳转

你可以用[c命令;跳转到前一个不同点;或者用]c命令,跳转到后一个不同点。

命令小结
:diffsplit分隔窗并比较文件
:diffthis比较文件
:diffupdate更新比较结果
zo展开
zc折叠
[c跳转到前一个不同点
]c跳转到后一个不同点

Ver: 2.0 | YYQ<上一篇 | 目录 下一篇>

星期二, 十二月 14, 2010

VIM学习笔记 缩写(Abbreviation)

利用:ab[breviate]缩写命令,我们可以用一个缩写来代替一组字符,此后只要输入缩写,就可以自动插入其代表的字符串以提高输入效率。

设置缩写

使用以下命令,将定义ad来代替advertisement:

:abbreviate ad advertisement

当想要输入advertisement时,只要输入ad,然后:

  • 如果按下Ctrl-]键,可以输入advertisement并停留在插入模式;
  • 如果按下Esc键,将插入扩展字符并返回命令模式;
  • 如果按下SpaceEnter键,那么将在插入扩展字符后,自动增加空格或回车,并停留在插入模式;。

不同模式下的缩写

使用下表中不同形式的abbreviate命令,可以针对特定的模式设置缩写:

Command
命令
Insert Only
插入模式
Command Line
命令行模式
:abbreviateyy
:iabbrevy
:cabbrevy

缩写实例

我们可以为多个单词设置缩写。例如以下命令,将设置Jack Berry的缩写为JB。

:abbreviate JB Jack Berry

如果你编写程序,那么利用以下设置,可以加快添加注释的速度:

:abbreviate #b /**********************

:abbreviate #e **********************/

如果你设计网页,那么利用以下缩写可以快速增加标签。其中<CR><LF>将在标签间自动插入换行,以方便你继续输入内容。

:iabbrev p <p><CR><LF></p>

利用以下命令,我们甚至还可以定位光标所处的位置:

:iabbrev icode <code class="inset">!cursor!</code><Esc>:call search('!cursor!','b')<CR>cf!

我们还可定义命令缩写。例如以下命令,将在新的标签页中显示帮助信息:

:cabbrev h tab h

我们可以将常用的缩写命令定义在vimrc配置文件之中,它们将在Vim启动时自动装载,而不需要再逐一重新定义。

查看缩写

abbreviate

使用:abbreviate命令,将列出所有缩写定义,其中第一列显示缩写的类型:

标记模式
!插入模式,命令行模式
i插入模式
c命令模式

取消缩写

可以使用以下命令,移除某个缩写:

:unabbreviate ad

针对不同模式下的缩写,需要使用与其相对应的unabbreviate命令。例如:使用:iunabbreviate命令,取消插入模式下的缩写,而:iabclear命令则会清除所有插入模式的缩写定义;依此类推,取消和清除命令行模式下的缩写,则需要使用:cunabbreviate:cabclear命令。

如果想要清除所有缩写,可以使用以下命令:

:abclear

命令小结
:abbreviate定义缩写
:unabbreviate取消缩写
:abclear清除所有缩写

Ver: 1.0<上一篇 | 目录 下一篇>

星期日, 十二月 12, 2010

从文字到语音 (TTS-Mac)

苹果早在1993年就为其电脑引入了文字到语音的合成能力,到了Mac OS X Jaguar和Panther两个发行版本,这种功能已经变得非常成熟和容易使用。

Text-to-Speech

如果你遇到某个单词不知道发音,或者希望用耳听代替疲劳的眼观,那么聪明的苹果电脑可以很轻松的帮助你。

Menu菜单

利用Mac内置的语音功能(这意味着你不需要再安装任何软件),在文本编辑器中,你可以利用上下文菜单选择“语音”和“开始朗读”来阅读整篇文字或选中的文字。

Text2Voice_TextEdit

Shortcut快捷键

如果你觉得从菜单中选择阅读还不够方便,那么可以设置快捷键来阅读文本。在“系统偏好设置”中,点击“语音”图标,选择“文本至语音”选项页,选中“按下按键时朗读所选文本”,在随后弹出的对话框中设置快捷键。按下设置的快捷键,Mac就将为你朗读选中的文本;再按一次快捷键就将终止朗读。

TTS_Options

如果你不喜欢默认的男声发间,那么还可以选择其它声音来为你朗读。Mac OS X Leopard共内置了24种语音,点击“系统嗓音”下拉列表,从男声Alex到女声Agnes,再到模拟机器人的Zarvox,你将获得丰富的选项。点击“朗读速率”滑块,你还可以降低和加快朗读速度。 进行设置之后,点击“播放”按钮,就可以收听到效果了。

Automator工作流

如果你还想保存语音文件,那么可以制作自己的工作流来自动完成。

注意:Mac OS X 10.6对Automator做了重大改进,操作方法也有很大不同。以下将分别介绍不同版本中的设置过程。

Snow Leopard10.6

  1. 打开Automator
  2. 选取“服务”模板;
  3. 增加“文本至音频文本”动作;
  4. 增加“导入音频文件”动作,选择使用“MP3编码器”,并勾选“编码后删除源文件”检查框;
  5. 选择“文件”菜单“存储”,在弹出的对话框中输入名称“选定文本到语音文件”;

Automator_1_Service

Automator_Service_2

现在应用程序(比如TextEdit或MacVim)中,选择想要朗读的文字;然后从服务菜单中,选择刚才设置完成的Automator;最后生成的语音文件将被自动加入到你的iTunes库中。

Automator_Service_2

Leopard10.5

  1. 打开Automator
  2. 增加“获得文本编辑文稿的内容”动作;
  3. 增加“文本至音频文件”动作;
  4. 增加“更改Finder项的名称”动作,在第一个下拉框中选择–使连续起来–,选择将数字添加至“现有项名称”,选择将数字添加至“名称之后”,选择分隔符为“破折号”;
  5. 增加“输入音频文件”动作,选择使用“AAC编码器”,并勾选“编码后删除源文件”检查框;
  6. 选择“文件”菜单“存储为插件...”,在弹出的对话框中输入名称“Text2Speech”,并选择插件用于“脚本菜单”

Text2Voice_Automator

Text2Voice_Automator_Save

现在用TextEdit打开你要朗读的.txt文件,然后从菜单的脚本图标调用你刚才设置完成的Automator。你将在菜单中看到Automator的执行状态,最后生成的语音文件将被自动加入到你的iTunes库中。

MenuBar_Script

Software软件

如果你还需要更丰富的功能和更简单的操作,那么在Mac下有很多免费软件可供你选择。比如CakeHole,她可以根据你输入的文字和选择的嗓音进行朗读,还可以将语音保存为AIFF文件。

CakeHole

附:AIFF(Audio Interchange File Format) 是在Mac系统中广泛使用的一种音频文件格式。1988年,由Apple公司在IFF(Interchange File Format)基础上开发,它以非压缩的方式存储音频数据,所以其文件尺寸远远大于压缩格式的音频文件。

Tags: , , , , ,

星期一, 十二月 06, 2010

VIM学习笔记 键盘映射 (Map)

设置键盘映射

使用:map命令,可以将键盘上的某个按键与Vim的命令绑定起来。例如使用以下命令,可以通过F5键将单词用花括号括起来:

:map <F5> i{ea}<Esc>

其中:i{将插入字符{,然后使用Esc退回到命令状态;接着用e移到单词结尾,a}增加字符},最后退至命令状态。在执行以上命令之后,光标定位在一个单词上(例如amount),按下F5键,这时字符就会变成{amount}的形式。

不同模式下的键盘映射

使用下表中不同形式的map命令,可以针对特定的模式设置键盘映射:

Command
命令
Normal
  常规模式  
Visual
可视化模式
Operator Pending
运算符模式
Insert Only
插入模式
Command Line
命令行模式
:map:noremapyyy
:nmap:nnoremapy
:vmap:vnoremapy
:omap:onoremapy
:map!:noremap!yy
:imap:inoremapy
:cmap:cnoremapy

Operator-pending模式,是指当你输入操作符(比如d)时,然后继续输入的移动步长和文本对象(dw)的状态。

第一列命令定义的映射,仍然可以被重新映射;第二列命令(包含noremap)定义的映射,是不可以被重新映射的。

键盘映射实例

使用以下命令,可以在Normal Mode和Visual/Select Mode下,利用Tab键和Shift-Tab键来缩进文本:

nmap <tab> V>
nmap <s-tab> V<
vmap <tab> >gv
vmap <s-tab> <gv

使用以下命令,指定F10键来新建标签页:

:map <F10> <Esc>:tabnew<CR>

其中:<Esc>代表Escape键;<CR>代表Enter键;而功能键则用<F10>表示。首先进入命令行模式,然后执行新建标签页的:tabnew命令,最后返回常规模式。

同理:对于组合键,可以用<C-Esc>代表Ctrl-Esc;使用<S-F1>表示Shift-F1。对于Mac用户,可以使用<D>代表Command键。

注意:Alt键可以使用<M-key>或<A-key>来表示。

关于键盘符号的详细说明,请使用:h key-notation命令查看帮助信息。

查看键盘映射

map

使用:map命令,可以列出所有键盘映射。其中第一列标明了映射在哪种模式下工作:

标记模式
<space>常规模式,可视化模式,运算符模式
n常规模式
v可视化模式
o运算符模式
!插入模式,命令行模式
i插入模式
c命令模式

使用下表中不同形式的map命令(不带任何参数),可以列出针对特定模式设置的键盘映射:

Command
命令
Normal
  常规模式  
Visual
可视化模式
Operator Pending
运算符模式
Insert Only
插入模式
Command Line
命令行模式
:mapyyy
:nmapy
:vmapy
:omapy
:map!yy
:imapy
:cmapy

取消键盘映射

如果想要取消一个映射,可以使用以下命令:

:unmap <F10>

注意:必须为:unmap命令指定一个参数。如果未指定任何参数,那么系统将会报错,而不会取消所有的键盘映射。

针对不同模式下的键盘映射,需要使用与其相对应的unmap命令。例如:使用:iunmap命令,取消插入模式下的键盘映射;而取消常规模式下的键盘映射,则需要使用:nunmap命令。

Command
命令
Normal
  常规模式  
Visual
可视化模式
Operator Pending
运算符模式
Insert Only
插入模式
Command Line
命令行模式
:unmapyyy
:nunmapy
:vunmapy
:ounmapy
:unmap!yy
:iunmapy
:cunmapy

可以使用以下命令,取消所有映射。请注意,这个命令将会移除所有用户定义和系统默认的键盘映射。

:mapclear

Ver: 1.0<上一篇 | 目录 下一篇>

星期六, 十一月 27, 2010

从语音到文字 (Express Scribe)

首先是一个坏消息:当前并不存在良好转换语音至文字的(商业或免费)软件。对!你没听错。我们制造出能杀死无数人的炸弹,能够把游客送到太空去小便,可是我们研制不出转换语音至文字的软件。可想而知,由于口音、方言、词组和语速等多方面的差异,语音至文字的转换技术显然并不简单,更显而易见的原因是:人类将大部分才智和资源都用于自相残杀和好大喜功,所以不能也不想发展真正有益的技术。

虽然不能直接获得从语音到文字的转换,但我们还是可能将这个过程便得相对容易些。

Express Scribe是一款帮助你纪录语音内容的跨平台的免费软件。她可以变换语音速度,利用全局快捷键控制播放操作,进行书签标记和文档管理,使用我们能够更轻松的收听和记录语音内容。

ExpressScribe_MainWindow

首先点击窗口顶部的“Load”按钮,载入需要转换的语音文件;然后利用窗口底部的控制按钮播放选中的文件;拖动“Speed”滚动条可以调节语音的播放速度。(当然,速度太快或太慢都将影响语音的清晰程度。)同时在下方的文本编辑框中可以记录文字脚本。你也可以调用自己熟悉的其它编辑器进行文字录入。

在你练习听力时,通常也需要翻阅些参考资料,或者查询些生僻的单词。这样不但要时常中断和继续播放,也需要在多个窗口间不断切换。有了Express Scribe,这些烦恼就不再成为问题。不管你在哪个窗口之中,利用自定义的全局快捷键,都可以很方便地控制播放、暂停、快进或后退,彻底摆脱手忙脚乱的尴尬。

ExpressScribe_Preferences_Control

你可以直接从Email或FTP下载需要翻译的音频文件,然后利用Express Scribe进行记录,最后点击“Dispatch”按钮,将录入的脚本用邮件发送给他人。这样方便的文件操作,也简化了与他人分享语音和翻译的过程。

ExpressScribe_DispatchIncoming

星期二, 十一月 09, 2010

VIM学习笔记 可视化模式 (Visual Mode)

可视化模式的种类

在可视化模式下,可以对一个文本块的整体进行操作。例如,首先高亮选中一部分文本,然后用d命令删除这个文本块。可视化模式的好处在于,你可以在做改动之前,就看到操作将影响的文本。可视化模式可以分为以下三种:

  1. v命令进入的字符可视化模式(Characterwise visual mode)。文本选择是以字符为单位的。
  2. V命令进入的行可视化模式(Linewise visual mode)。文本选择是以行为单位的。
  3. ctrl-V进入的块可视化模式(Blockwise visual mode)。可以选择一个矩形内的文本。(注意:在Windows中,ctrl-V可能已经被影射为粘贴操作,可以使用ctrl-Q进入块可视化模式。)

切换可视化模式

通过输入相应的可视化命令,就可以切换到不同的可视化模式。例如现在字符可视化模式下,如果想要切换到块可视化模式,那么只需要输入ctrl-V即可。当然,我们也可以先用ESC关闭当前的可视化模式,然后再进入其它可视化模式。

在可视化模式下选择

使用命令v进入字符可视化模式。在此模式下,用命令移动光标,光标起始位置和当前位置之间的文本将会以高亮显示。这时就可以对这些高亮显示的文本进行整体的操作。例如:在字符可视化模式中,首先用6l命令选中光标右侧的6个字符,然后输入d命令删除高亮显示的文本。

VisualMode_Char

使用命令V进入行可视化模式。在此模式下,我们使用2j命令,就可以选中当前行及其随后2行。

VisualMode_Line

使用命令ctrl-Q进入块可视化模式。在此模式下,我们使用2l命令向右移动,然后使用3j命令向下移动,就可以选中4行2列的文本块。

VisualMode_Block

命令gv可以重复前一次可视化模式时选中的文本。如果已经在可视化模式下,执行该命令会选中前一次选择的文本。如果重复行执gv命令,就会在当前选中的文本和前一次选中的文本之间进行切换。

在可视化模式下移动

如果你已经在可视化模式下选择了若干文本,并且希望移动到已选择文本的另一结尾处,那么可以使用o命令。

VisualMode_o_1

如果你使用的是块可视化模式,那么已选择的区域将有四个角落。o命令只能移动到对面的一个角落,这时你可以使用O命令移动到同一行的另一个角落。

VisualMode_o_2

在可视化模式下编辑

在可视化模式下,我们可以进行各种编辑操作。如d命令可以删除高亮显示的文本,而D命令则会删除一行,即使这一行中只有部分文本是高亮显示的。类似的,y命令将复制高亮显示的文本,而Y命令会复制整行。c命令可以将高亮显示的文本删除并进入编辑模式,而C命令会删除一行文本并进入编辑状态。

针对高亮显示的文本块,我们可以用命令~进行大小写转换。用命令>增加缩进,或用命令<减少缩进。

我们还可以利用可视化模式,来合并多行文本。J命令可以将高亮显示的文本内容合并为一行,同时以空格来分隔各行。如果不希望在行间插入空格,那么可以使用gJ命令。

使用g?命令,可以使用rot 13算法来加密高亮显示的文本。针对同一个文本再次执行加密命令,就可以进行文本解密。

在可视化模式下,按下:键就可以对选定范围进行操作。例如:我们先在可视化模式下选中文本,然后执行:write block.txt命令,就可以将文本块写入另一文件中。选择多行,然后执行:sort命令,则可以对选中的文本进行排序。

如果想要查看可视化相关的帮助信息,可以在所希望帮助的名称前加v_前缀。例如使用:help v_d命令,可以得到关于在可视模式下进行删除操作的帮助信息。

退出可视化模式

当我们想要退出可视化模式时,可以按ESC键或ctrl+c键。

命令小结
v进入字符可视化模式
V进入行可视化模式
ctrl-V进入块可视化模式
ctrl-Q
gv选中前一次可视化模式时选择的文本
o光标移动到选中文本的另一结尾
O光标移动到选中文本的另一角落

Technorati Tags: ,,

星期六, 十月 30, 2010

WRITING/TALK

Writing is the best way to talk without being interrupted

-- Jules Renard

星期六, 十月 23, 2010

VIM学习笔记 撤销 (Undo)

单线撤销

在Normal mode下使用u命令,或者在Command mode下使用:undo命令,可以撤销上一次的操作。

使用U命令,可以撤销所有针对当前行最近所做的修改。

Vim可以进行多次撤销,这个次数是由选项undolevels来指定的。例如我们可以使用以下命令,设置撤消次数为5000:

:set undolevels=5000

如果希望重做被撤销的操作,可以使用:redoCTRL-R命令。

分支撤销

以下述操作为例:新建文件并输入“大象”,然后在新的一行中输入“小牛”,返回Normal mode并按下u命令。这时输入“小牛”的操作被撤消,文件将只包含“大象”。接着输入“猩猩”,然后返回Normal mode并按下u命令,此时将撤消输入“猩猩”的操作,文件仍然只包含“大象”。所以你的“小牛”就再也找不回来了。而撤消分支(Undo branches)就可以解决这个问题。使用g-可以使文件重新包含入“大象”和“小牛”。此过程如下图所示:

Undo Branches

如果你先撤销了若干改变,然后又进行了一些其它的改变。此时,被撤销的改变就成为一个分支。我们可以使用:undolist命令查看修改的各个分支。

UndoBranch_list

  • "编号" 列是改变号。这个编号持续增加,用于标识特定可撤销的改变。
  • "改变" 列是根结点到此叶结点所需的改变数目。
  • "时间" 列是此改变发生的时间。

使用:undo命令并指定编号做为参数,则能够撤销到某个分支。

通过在不同的撤消分支间跳转,使用g-命令能够回到较早的文本状态;而g+命令则返回较新的文本状态。

我们还可以根据时间撤消操作:使用:earlier 10m命令退回到10分钟前的文本状态。也可以用:later 5s命令跳转到5秒以后的编辑状态。命令参数中的"s"代表秒,"m"代表分钟,"h"代表小时。

使用:help undo-tree:help usr_32.txt命令,可以查看撤消操作的帮助信息。

命令小结
u撤消
:undo
CTRL-R重做
:redo
:undolist查看撤消分支
g-返回较早的文本状态
g+返回较新的文本状态
:earlier退回到指定时间前的文本状态
:later退回到指定时间后的文本状态

Ver: 1.1<上一篇 | 目录 下一篇>

星期三, 十月 20, 2010

MEMORY & BOOK

Never memorize what you can look up in books.

---Albert Einstein

星期二, 十月 19, 2010

VIM学习笔记 缩进 (Indent)

手动缩进

在Normal Mode下,命令>>将对当前行增加缩进,而命令<<则将对当前行减少缩进。我们可以在命令前使用数字,来指定命令作用的范围。例如以下命令,将减少5行的缩进:

5<<

如果代码没有正确排版,那么我们可以使用==命令来缩进当前行;也可以进入可视化模式并选择多行,然后使用=命令缩进选中的行。

Indent_SampleCode

通过与文本对象组合,使用以下命令可以缩进{}括号内的代码。

=a{

如果需要缩进整个文件内的代码,则可以使用以下命令:

gg=G

在Insert/Replace Mode下,Ctrl-Shift-t可以增加当前行的缩进,而Ctrl-Shift-d则可以减少当前行的缩进。使用0-Ctrl-Shift-d命令,将移除所有缩进。需要注意的是,当我们输入命令中的“0”时,Vim会认为我们要在文本中插入一个0,并在屏幕上显示输入的“0”;然后当我们执行命令0-Ctrl-Shift-d时,Vim就会意识到我们要做的是减少缩进,这时0会就会从屏幕上消失。

缩进宽度默认为8个空格。我们可以使用以下命令,来修改缩进宽度:

:set shiftwidth=4

通过以下设置,每次点击Tab键,将增加宽度为8列的Tab缩进。

:set tabstop=8

:set softtabstop=8

:set shiftwidth=8

:set noexpandtab

使用以下设置,每次点击Tab键,增加的缩进将被转化为4个空格。

:set tabstop=4

:set softtabstop=4

:set shiftwidth=4

:set expandtab

其中,expandtab选项,用来控制是否将Tab转换为空格。但是这个选项并不会改变已经存在的文本,如果需要应用此设置将所有Tab转换为空格,需要执行以下命令:

:retab!

自动缩进

在Vim中还可以进行自动缩进,主要有cindent、smartindent和autoindent三种模式。

autoindent 在这种缩进形式中,新增加的行和前一行使用相同的缩进形式。可以使用以下命令,启用autoindent缩进形式。也可以点击==键进行缩进。

:set autoindent

smartindent 在这种缩进模式中,每一行都和前一行有相同的缩进量,同时这种缩进形式能正确的识别出花括号,当遇到右花括号(}),则取消缩进形式。此外还增加了识别C语言关键字的功能。如果一行是以#开头的,那么这种格式将会被特殊对待而不采用缩进格式。可以使用以下命令,启用smartindent缩进结构:

:set smartindent

cindent Vim可以很好的识别出C和Java等结构化程序设计语言,并且能用C语言的缩进格式来处理程序的缩进结构。可以使用以下命令,启用cindent缩进结构:

:set cindent

命令小结
>>增加缩进
Ctrl-Shift-t
<<减少缩进
Ctrl-Shift-d
:set shiftwidth=n设置缩进宽度
:set cindent启用cindent缩进结构
:set autoindent启用autoindent缩进结构
:set smartindent启用smartindent缩进结构

Ver: 1.1<上一篇 | 目录 下一篇>

星期三, 十月 13, 2010

VIM学习笔记 寄存器 (Registers)

将寄存器与各种删除、复制、粘贴命令组合使用,能够大大提高编辑文本的效率。

指定寄存器

在复制或删除文本时,可以使用"register命令将文本放入指定的寄存器中。例如以下命令,将复制的文本放到寄存器a中,同时文本也会被放入未命名寄存器中。

"ayy

如果再使用相应的大写字母来指定寄存器,那么会将当前行内容追加到寄存器a中,这时该寄存器中就有了两行文本。

"Ayy

查看寄存器

使用registers name命令,可以查看特定寄存器中的内容:

register_A

如果想要查看所有寄存中的内容,可以使用以下命令:

:registers

Registers

寄存器类别

寄存器可以分为以下9类:

类别符号描述
未命名寄存器"上一次复制或删除的文本
数字寄存器0-9文本删除历史
短删除寄存器-删除少于一行的文本
命名寄存器a-z,A-Z存放文本
只读寄存器%当前文件的名字
#交替文件的名字
.上一次插入的文本
:上一次执行的命令
表达式寄存器返回表达式结果
选择和拖拽寄存器*系统剪切板
+系统剪切板(X11)
~拖拽的文本
黑洞寄存器_永久删除的文本
搜索模式寄存器/搜索模式

未命名寄存器(The Unnamed Register) 当使用y命令复制文本,或使用d、c、s、x命令删除文本时,文本将自动被放入""未命名寄存器。即使你在复制或删除文本时,已经指定了寄存器(例如使用"xdd命令),这些文本也将会被同时放入"x和""寄存器。

数字寄存器(The Numbered Registers) "0始终存放最近删除的文本。"1也包含上次删除的文本。区别在于:"0不断被删除的文本所覆盖;而如果删除文本时,指定了寄存器或者文本小于一行,那么"1将不会被更新。 数字寄存器1-9可以看作是删除历史, 你可以从中找到早先删除的文本。比如你使用了三次dd命令,那么这三行文本被分别存放在寄存器1,2,3中,可以通过命令"1P,"2P,"3P将这些文本再粘贴回来。

短删除寄存器(The Small Delete Register) 当删除少于一行的文本时,除非指定了某个寄存器,否则这些内容将会被放入"-短删除寄存器中。

命名寄存器(The Named Registers) 当文本被放入以小写字母命名的寄存器(例如"a)时,该寄存器原有的内容将被覆盖;而使用以大写字母命名的寄存器(例如"A)时,将会把文本追加到原有内容之后。

只读寄存器(The Read-Only Registers) 你只能从4个只读寄存器中粘贴内容,而不能放入文本。"%包含当前文件名;"#包含交替文件名;".包含最近插入的文本;":包含上次执行的命令行。

表达式寄存器(The Expression Register) 当我们输入"=,就会在Vim底部显示一个以“=”开始的提示行,可以在这里输入表达式并按回车键确认。随后使用命令p将表达式的结果粘贴到文本中。例如要在文本中插入38*56的值,首先进入命令模式,输入"=,在屏幕底部的提示行中输入“38*56”并按回车,然后输入命令p,这样就可以将计算结果插入文本中了。在表达式寄存器中,不仅可以使用通常的算术运算符,还可以使用Vim特定的函数和运算符。例如通过表达式寄存器来得到环境变量的值(例如"=$HOME)。如果没有输入任何表达式而直接按回车键,那么Vim将执行最近使用过的表达式。

选择和拖拽寄存器(The Selection and Drop Registers) 有3个寄存器用于保存选中的文本:"*用于访问系统剪切板。在Windows下,"*和"+相同;在Linux下,"+包含选中的文本,"*包含复制的文本。使用"+y命令,可以将当前选中的文文本复制到系统剪切板中。而"+p命令,则可以粘贴系统剪切板中的内容。通过剪切板寄存器,能够在不同的Vim编辑器或者是其他应用程序之间,进行文本交换。"~包含上次从其它应用程序拖拽到Gvim中的文本。

黑洞寄存器(The Black Hole Register) 任何放入"_中的文本都将不复存在。如果想要永久删除某些文本而不是将他放入1-9中的某个寄存中,就可以使用黑洞寄存器。例如:命令dd将删除一行文本并将其放入寄存器1中;而命令"_dd则将该行文本放入黑洞寄存器中,这些文本也就会永久消失了,而寄存器1中的文本会保持不变。

搜索模式寄存器(Search Pattern Register) 当你通过/命令进行搜索时,所使用的模式将自动被放入"/寄存器。

粘贴寄存器

命令:put会将寄存中的内容粘贴到指定的文本行后面。使用以下命令,可以将寄存器中的内容粘贴到第五行的后面:

:5put a

如果要将文本放在这一行的前面,可以用以下命令:

:5put! a

你也可以使用p命令,将x寄存中的文本粘贴到光标之后:

"xp

而P命令,则将x寄存中的文本粘贴到光标之前:

"xP

如果直接使用pP命令,而没有指明特定寄存器,那么将粘贴未命名寄存器中的内容。

使用以下命令,可以粘贴上次插入的文本,方便你录入重复的内容:

".P

如果要粘贴系统剪切板中的内容,在Insert mode下可以利用快捷键Shift+Ins,而在Normal mode下,可以使用以下命令:

"*p

Ver: 1.0<上一篇 | 目录 下一篇>

星期五, 十月 01, 2010

从数据到智慧 From Data To Wisdom

毫无疑问,我们已经生活在知识经济的环境当中。每时每刻,我们身边都充满了各种各样的数据。但只有将这些杂乱无章的数据,转换为信息和知识,才能帮助我们做出聪明的选择。可见知识是从数据到智慧划分为不同层次的,如下图所示。

从数据到智慧的层次

Knowledge Hierarchy

从数据到智慧的定义

-DefinitionExample
Wisdom
(智慧)
运用知识,产出渴望的成果。如何减少库存
Knowledge
(知识)
是用于生产的信息(有意义的信息)。信息经过加工处理,应用于生产才能转变成知识。库存过多
Information
(信息)
是以有意义的形式加以排列和处理的数据。(有意义的数据)资产负债表
Data
(数据)
是未经组织的数字、词语、声音和图像等。总帐交易记录

上表列示了从数据到智慧的定义和举例。通过日常凭证的录入,我们得到了总帐记录,这些数据是离散的和难以阅读的;经过格式化后,总帐记录以资产负债表的形式显示出来,变成了有意义的信息;管理人员通过学习和分析信息,发现企业的经营状况--库存过多,信息被应用于生产成为了知识;人们在不断学习和应用知识的过程中,也结合自己的认知和经验提高知识,久而久之便形成智慧--使你能够正确地判断当前的形势,并做出最佳的决策。

从数据到智慧的转换

From data to wisdom

数据智慧的过程需要坚持不懈地学习,这个过程不是一次性的,而且不断往复进行的。数据经常以文字图片等形式存在,属于典型的显性知识;经过分析处理后,数据被逐步提升为信息知识;直到最终成为根植为头脑之中的极为个性化的智慧,升华为隐性知识;隐性知识经过总结后,又会以文档等形式转换为显性知识。通过这个不断循环往复的显性知识和隐性知识的相互转换过程,知识得到了不断提升和进化,而个人和企业学习利用知识的能力也得到了提高。

从数据到智慧--既是互相区别、逐步提升的层次结构,也是互相渗透、循环往复的转换过程。

星期日, 九月 12, 2010

VIM学习笔记 拼写检查(Spell Check)

从版本7开始,Vim内置了拼写检查功能,但是在默认情况下并没有打开。

启用

首先,你需要使用:echo &spelllang命令确认当前使用哪种语言。比如:“en”代表英语。如果想要改语言,可以使用:set spelllang=en_GB.UTF-8命令。也可以用逗号分隔制定检查set spelllang=en_us,nl,medical多种语言。

然后,你可以通过菜单:工具 -> 拼写检查 -> 打开拼写检查,来启用拼写检查功能。GVim将用红色的波浪线标识出错误的拼写。你也可以使用:set spell命令打开拼写检查,使用:set nospell命令关闭拼写检查。

检查

如果在文件中有很多拼写错误,可以用]s命令移动到下一个拼写错误处,用[s命令移动到上一个拼写错误处。

SpellCheck_1

纠正

如果想要纠正错误的拼写:首先将光标移至错误的单词上,然后执行z=命令列出一组相近的单词,你可以在其中选择正确的拼写。

SpellCheck_2

有些特殊单词(比如图中的"Gvim")也会被标识为错误拼写,如果你希望Vim能够承认它们为正确的拼写,可以使用zg命令。还可以用zw命令取消用户做的拼写识别。

命令小结
:set spell启用拼写检查
:set nospell关闭拼写检查
]s移动到下一个拼写错误处
[s移动到上一个拼写错误处
z=选择正确的拼写
zg添加用户拼写
zw删除用户拼写

Ver: 1.0<上一篇 | 目录 下一篇>

星期五, 九月 10, 2010

去他妈的教育

教育,我一直以为是及其恶心和丑恶的。

后来听到Pink Floyd的这首Another Brick In the Wall(II)

We don't need no education

We don't need no thought control

No dark sarcasm in the classroom

Teachers leave them kids alone

Hey! Teachers! Leave them kids alone!

All in all it's just another brick in the wall.

All in all you're just another brick in the wall.

后来又看到The Wall这部电影。所有的学生戴着相同的无表情的面具以同样节奏的步伐走向一个绞肉机,既不回头也不朝两边看。机器中有不停敲打的铁锤,看上去像军队一样整齐划一而且十分有力。经过绞肉机后, 所有的孩子都被榨干了灵与肉,从绞肉机另一端出来的是一群行尸走肉。

Brick2-4

Brick2-2

Brick2-6

再后来,又看到劳伦斯的在文明的束缚下

男人始终没有学会的一件事,就是不顾教育的约束,而遵从自己的本能感觉。问题是我们在很小的时候就被抓住了。小男孩在5岁时被赶着去上学。随之而来的便一场使小家伙成为奴隶的把戏。他被送到女教师的手中,送到那些年轻的、中年的、老年的女人们的手中,她们绝对相信自己的力量、正确性和权威,牢牢地控制住孩子,开始“塑造”那些可怜的小鬼。没有人对这些女人塑造年轻男人生活的能力表示过片刻的怀疑。耶稣会的人说:把孩子交给我,直至他7岁,我将能对他未来的一生负责。---可是,女教师并没有耶稣会会士那么聪明,也肯定没耶稣会的人那样清楚自己要做什么,但她们也参加这种把戏。她们把小男孩训练成一个开始成型的男子,今天的男子。

可怜的约尼,可怜的小鬼!开学的第一天总是这样:“约尼,亲爱的,现在你得好好坐着,象个乖孩子,象所有其他的乖孩子。”当他不堪忍受时,便是:“哦,约尼,亲爱的,如果我是你,我一定不哭。看看别的乖孩子,他们都不哭,是吗?亲爱的?做个好孩子。老师给你个小熊玩。约尼想玩小熊吗?好,别哭了!看看别的好孩子。他们在学写---写字!难道约尼不愿意做个好孩子,学习写字吗?”

其实约尼不想学写字。他从心底里不愿做个好孩子不愿学写字。但女教师煞有介事,完全控制了他。可爱的教师带着他进入那条他必须走的路,可怜的小鬼。而一旦进入,他就得乖乖地跟着走,做一个与其他好孩子毫无二致的好孩子。学校犹如一套精致的铁路系统,好孩子们在那儿受到训练,懂得怎样沿着轨道走,直到他们 14岁、16岁或其它什么年龄时才纳入自己的生活轨道。但到了那个年纪,顺着轨道走的习惯已经固定不变了。长大了的好男孩只是从一条轨道挣到另一条轨道而已。而且,沿着轨道走是如此顺当,他从来就没有想到自己是这条轨道的奴隶。好孩子们!

滑稽的是没有任何人,甚至没有一个明智的父亲,对那些学校的嬷嬷们的绝对正确性发生过怀疑。一切都是为了小约尼好。这些女教师们是知道什么对小约尼有好处的。那就是做一个同其他好孩子一样的好孩子。

然而,做个同其他好男孩一样的好孩子,说到底就是做一个奴隶,至少是一个循规蹈矩的机械人。这就意味着亲爱的小约尼将推动他所有的男子汉个性。男子气概的苗头一出现,就会被仔细地剔除。在剔除成长的小男孩的男子气概的嫩芽方面,没有什么能比老处女的手指更灵巧的了。她们把男孩子们变成一个个中性人,俯首听命的孩子。这是一种微妙的,以爱的形式出现的肢解活动,母亲们却对此深信不疑。“哦,我只希望他成为一个好孩子!”她忘记了自己对那个好孩子式的丈夫是多么的厌倦。好男孩对母亲和教师们都非常好。但是,作为男人,由他们构成的民族,只能是软弱无能的。

当然,没有人想让约尼做个坏孩子。人们史希望他是一个男孩,不带任何形容词的男孩。但那是不可能的。在那些条件最好的学校里,孩子们享有最大的“自由”,实际上教师们微妙而无声的强迫却最为厉害。孩子们被悄悄地、一步一步地、毫不放松被逼去做好孩子。他们长大后是好人,但却一无用处。

那么,这民说的“好”空间是什么意思呢?说到底,就是完全与别人一样,丝毫没有自己的灵魂。你当然不应有自己的感情,你必须做好人,必须具有别人预料你会有的感觉,即和其它人一样的感觉。也就是说,你最终什么也感觉不到,你所有的感觉都被扼杀了。所剩下的,只是人为的呆板感情,即每天早晨随着读报时产生的感情。

我永远忘不了上学第一天我哭得多么痛苦。我被人抓住了,套上了绳索。别的男孩也有同感。他们痛恨学校,因为在那儿,他们感到自己就像被抓起来一样;他们痛恨教师,因为他们觉得教师就像狱吏。他们甚至痛恨学习读书和写字。一遍又一遍重复的话是:“走着瞧,等我下矿井后,看我还做什么算术。”他们所期待的就是:下矿井,逃脱控制,做个真正的男子汉。躲进矿井的荒原中,脱离学校的狭轨。

校长是个白胡子、脾气暴躁的好老头。我母亲最尊敬他。记得有一次因为不想承认我的名字是大卫,他大光其火。“大卫!大卫!”他咆哮起来,“大卫是个伟大、优秀人物的名字。你不喜欢大卫这个名字吗?你竟不喜欢大卫这个名字!”他气得脸色发紫。而我却莫名其妙地讨厌大卫这个名字,如今依然如此,他无法强迫我喜欢。可他却想那么做。

事情就是这样。大卫是伟人,优秀人物的名字,所以我得被迫喜欢这个名字。而如果我们的名字是阿纳尼亚斯或亚哈,我就可能被放过。可大卫!不行!很幸运,我父亲并不懂得大卫和达维安全灯空间有什么区别。

grinder

人可能喜欢学习,但根本就不需要教育。教育只是一些泯灭人性,强调一致,着眼产出的加工厂。人类并没有因为教育而发展的如何先进,只是走过了几千的历史。而且是以无数无辜生命的牺牲做为代价。而造成这些灾难的人,普遍受过良好教育。而当某人小偷小摸时,我们就说他缺少教育。那不是很奇怪吗?监狱里的人,是因为没上学而进去的,还是因为上了学才进去的。教育本身应不应该为这些过失也付上责任。

好像坏人都是自学成才,而好人都是精心培养起来的呢?这也太过荒谬。

IT界的乔布斯、拉里森、盖慈,早就证明了,重要的是天份,和教育根本无关。应该考虑的如何减少对知识流动的阻碍,而不是盖几幢大楼,加几个大门,然后把人关进去。

在任何领域中,比如数据库有MySQL, DB2, SQL Server, Oracle, 浏览器有Firefox, Safari, Netscape, IE,这个世界上有很多东西都应该是个性化的,而老师就是把个人化的东西神圣化,这对人性是很可怕的。重要的并不是要找什么样的老师,建什么样的学校。而是要提供人们自由学习的机会和场地。为什么你找点纸印几个字在上面,我就要相信。如果把以色列和巴勒斯坦的教科书放在一起一定很行为艺术。教育被太多谎话和强迫所控制。不如不要。

星期五, 九月 03, 2010

从 Smultron 到 Fraise

Smultron

Smultron在瑞典语中是一种野生草莓的名字。她是一个开源的文本编辑器,味道纯美而且有益健康。

后来,她又移植成了法语草莓Fraise;现在,正结出新的果实。

Fraise_header

Fraise 编辑文本

  • 显示通常不可见的字符(Invisible Characters:换行符或Tab等);
  • 显示或隐藏行号;
  • 选择是否折行(Line Wrap)显示;
  • 大小写转换和首字符大写(Capitalise First Letter);
  • 快捷键Command+Option+F进入即时查找(Live Find)状态。在查找框中输入想要搜索的内容,就会高亮度显示匹配的内容。利用快捷键Command+G定位到下一匹配处。
  • 可以同时在多个文件中进行查找和替换,并支持正则表达式;
  • 可以仅打印选中部分的文本,并且可以打印语法着色;
  • 设置自动完成(Auto-completion),或者按功能键F5可以显示近似匹配的单词;
  • 全屏幕操作。这时屏幕上只会显示你正在编辑的文档,使你专心于当下的任务。

Smultron_LiveFind

Fraise 编辑网页

如果你和我一样喜欢手工编写XHTML代码,那么Smultron绝对会是你的好帮手:

  • 支持语法高亮度(包括HTML,CSS,Java,SQL等等编程语言);
  • 支持多种编码格式(GBK,UTF-8等);
  • 使用快捷键减少缩进;
    • Smultron: Command+[
    • Fraise: Tab
  • 使用快捷键增加缩进
    • Smultron: Command+]
    • Fraise: Shift+Tab
  • 快捷键Command+T自动补全匹配的标签(Close Tag)。
  • 利用“Prepare For XML”菜单,将选中的&,<和>转换为遵从XML标准的&amp;, &lt; and &gt;。
  • 调用颜色选择器,并将选中的颜色以RGB或HEX代码插入代码中。
  • 使用快捷键Control+Shift+D创建本行的副本,可加速编写列表,或重用类似的代码。
  • 储存代码片段(snippets)便于重复使用。
  • 预览(Preview)网页。
  • 验证(Validate)网页。

Smultron_Snippets

如果你希望获得更干净的代码,可以删除那些多余的空格和换行符。这适合像我一样,有“洁癖”的人。

  • 选择“文字”菜单下的“移除不需要的空白”;
  • 选择“文字”菜单下的“移除换行结尾”;
  • 选择“文字”菜单下的“移除Tab...”;
  • 预览网页;

Fraise 编辑多个文件

  • 文档列表(Documents List)。列示和切换正在编辑的多个文档。通过放大图标尺寸,可以预览文档内容。
  • 支持多页面编辑(Tabs)。快捷键Command+Option+Up移动到前一个页面,Command+Option+Down移动到后一个页面。
  • 窗口分隔(Split Window)。将程序界面划分为多个部分,便于阅读较长文档的不同部分或同时编辑多个文件。

Smultron_View

Fraise 对Mac的支持

  • 拖拽一个或多个文件到Smultron的文件列表,将直接打开它们。
  • 集成于系统的“服务”菜单。
  • 支持AppleScript。
  • 与.Mac同步。

Smultron_Service

Fraise 选择合适的版本

Tags: , , , , ,