星期一, 八月 31, 2009

VIM学习笔记 编辑多个文件

拷贝

使用传统的Vi风格命令在不同窗口之间拷贝文本,可以使用如下方法:

  1. 编辑第一文件
  2. 执行命令:split second_file打开另一个窗口并开始编辑第二个文件
  3. 使用命令ctrl+Wp回到含有原始文件的前一个窗口
  4. 将光标移动到要拷贝文本的第一行
  5. 用命令ma标记这一行
  6. 移动到要拷贝文本的最后一行
  7. 执行命令y'a来复制当前光标位置到所做标记之间的文本
  8. 使用命令ctrl+Wp回到将要放置文本的文件
  9. 将光标移到将要插入文本的地方
  10. 使用命令P将复制的文本粘贴到文件中

使用可视化方式在不同窗口之间拷贝文本,可以使用如下方法:

  1. 编辑第一文件
  2. 执行命令:split second_file打开另一个窗口并开始编辑第二个文件
  3. 使用命令ctrl+Wpp回到含有原始文件的前一个窗口
  4. 将光标移动到要拷贝文本的第一行
  5. 执行命令V进入可视化模式
  6. 移动到将要复制文本的最后一行,被选中的文本将会被高亮显示
  7. 执行命令y复制选中的文本
  8. 使用命令ctrl+Wp回到将要放置文本的文件
  9. 使用命令P将复制的文本粘贴到文件中

读取

使用:read filename命令,可读进一个文件并将内容插在当前行的后面。

写入

命令:write用来写入文件,可以保存当前文件。我们也可以用命令:write newfile将当前的文件内容写入一个新的文件。一般情况下:write命令并不会覆盖已经存在的文件。我们可以用强制操作(!)选项,来覆盖已经存在的文件。而这个命令对于分拆文件也很有用。可以用可视化模式选定一个范围,然后将这个选定的范围写入新的文件,从而实现分拆文件的目的。

命令:write >> logfile将文本写入到目标文件的末尾。这样实现了文件添加功能,免去了拷贝,编辑的过程。

命令:wall可以保存所有已经修改过的文件(包括隐藏缓冲区中的文件)。

退出

:quit可以退出当前文件。如果同时打开了多个窗口,可以用:qall命令退出所有文件。如果文件进行了修改但是没有保存,在执行这个命令时会给出警告信息。如果想要放弃所做的修改而强行退出,可以使用:qall!命令。我们还可以将这个两个命令进行组合,实现对所有文件的保存并退出的命令:wqall

参数/缓冲区/窗口 命令对照

参数和缓冲区命令对照
:next切换到下一文件:bnext
:previous切换到上一文件:bprevious
:Next:bNext
:first切换到第一个文件:bfirst
:last切换到最后一个文件:blast
:args显示正在编辑的文件名:buffers
:argument [N]切换至第N号文件:buffer [N]

缓冲区和窗口命令对照
:snext分割并切换到下一文件:sbnext
:sprevious分割并切换到上一文件:sbprevious
:sNext:sbNext
:sfirst切换到第一个文件:sbfirst
:slast分割并切换到最后一个文件:sblast
:sall分割并显示所有文件:sball
:sargument [N]分割并切换至第N号文件:sbuffer [N]

Technorati Tags: ,,

星期一, 八月 24, 2009

VIM学习笔记 参数(Arguments)

你可以在启动vi时,指定多个文件做为参数,例如vi file1 file2 file3,这样就可以编辑多个文件了。在默认情况下,vi将显示第一个文件。

需要切换到下一个文件时,可以输入:next命令,如果你没有保存当前文件的修改,vi将给出提示信息,不允许你切换到下一文件。这时可以输入:write:next命令,保存并切换到第二个文件。此命令也可简写为:wnext。使用:next!命令也可以强制切换到第二个文件,当然这样你所做的改动也将会丢失。为了避免这种情况,我们可以用:set autowrite命令,打开vi的自动保存功能。相应的,关闭自动保存命令为:set noautowrite

如果想要回到上一个文件,可以使用:previous或是:Next命令。如果你要保存当前文件并切换到前一文件,可以使用:wprevious或是:wNext命令。

我们可以用:first或者:rewind命令快速切换到第一个文件;也可以用:last命令快速切换到最后一个文件。

如何确定我们在编辑哪一个文件呢?可以注意一下文件的标题。那里应该显示类似"(2 of 3)" 的字样。这表示你正在编辑三个文件中的第二个。命令:args可以显示我们所打开的文件,并用中括号标识出正在编辑的文件。

args

如果我们在一个文件中进行一些改动,再切换到另一个文件中进编辑,这时就可以用ctrl+^来切换这两个文件。

命令小结
:next切换到下一文件
:wnext保存后切换到下一文件
:previous切换到上一文件
:Next
:wprevious保存后切换到上一文件
:wNext
:first切换到第一个文件
:last切换到最后一个文件
:set autowrite打开自动保存功能
:set noautowrite关闭自动保存功能
:args显示正在编辑的文件名
:argument [N]切换至第N号文件

Technorati Tags: ,,

星期六, 八月 22, 2009

金融是艺术

金融就是将钱从一人传到另一人,直到钱不见了的艺术。

Finance is the art of passing currency from hand to hand until finally disappears.

--

沙诺夫

星期四, 八月 20, 2009

在Mac下压缩PDF

Preview

有些PDF文件会因为包含大量图片或随着不断编辑而变得越来越庞大,我们可以用Mac内置的预览(Preview)程序来帮这些臃肿的文件做个瘦身。

  1. 用Preview打开PDF文件;
  2. 选择“文件”菜单下的“存储为...”;
  3. 在“存储为...”对话框中的“Quartz滤镜”选项中,选择“Reduce File Size”;
  4. 保存文档。

Shrink_Using_Preview

Print

我们在初始生成PDF时,就可以缩减它的尺寸。

注意:在10.4 (Tiger)的打印对话框中默认存在“Compress PDF”选项,而在10.5 (Leopard)中却没有直接显示出来。因此,我们需要安装Compress PDF Workflow,以重新激活此功能。

  1. 在任意程序中,选择"Print"菜单;
  2. 在打印对话框中,点击"PDF"按钮,选择"Compress PDF";
  3. 保存文档。

Print_Compress

在10.4 (Tiger)下,还可以利用滤镜选项来压缩PDF文档:

  1. 在任意程序中,选择"Print"菜单;
  2. 在打印对话框中,点击"Copies & Pages"下拉列表,选择"ColorSync";
  3. 点击"Quartz Filter"下拉列表,选择"Reduce File Size";
  4. 保存文档。

Print_to_PDF_ReduceFileSize

警告:缩减文件尺寸,可能降低显示和打印质量,并可能丢失书签。

Tags: , , , ,

星期五, 八月 14, 2009

人类都在太空做了什么?

具体点说,我们花了近40年时间在近地轨道上“研究”失重下的不良反应和那深不见底的宇宙黑洞。我们用有史以来最美丽、最精密、不切实际得让人绝望的航天飞机完成了这些“研究”,再把这个唯美的庞然大物改造成“人货两用运输机”,往返于地面及“巨型玩具”--国际空间站,后者实际上乃冷战后国际主义者们心血来潮的产物,供不同国家的人体验在失重状态下合唱《世界多美妙》之用。

--查尔斯·克拉塔莫 Charles Krauthammer

星期三, 八月 12, 2009

VIM学习笔记 窗口(Window)

窗口(Window)被用来查看缓冲区(Buffer)里的内容。你可以用多个窗口察看同一个缓冲区,也可以用多个窗口察看不同的缓冲区。

Vim主窗口可以容纳多个分割的窗口。此外还有标签页(tab-page),每个标签页也能容纳多个窗口。

在默认情况下,与Vi类似,Vim启动后只打开一个窗口。参数 "-o" 和 "-O" 可以让Vim为参数列表里的每一个文件打开一个窗口。参数 "-o" 水平分割窗口;参数 "-O" 垂直分割窗口。如果 "-o" 和 "-O" 都用了,那么最后一个参数决定分割的方向。例如,下面的例子打开三个水平分割的窗口。

vim -o file1 file2 file3

分割窗口

:split命令,会将当前窗口平分为两个。并且在这两个窗口中同时显示当前文件。如果你在其中一个窗口进行编辑,那么另一个窗口也会同步显示出你所做的工作。

我们通常并不是要在两个窗口中显示同一个文件,而是要在两个窗口中编辑不同的两个文件。使用:split file命令,就可以在另一个窗口中打开文件file了。

命令:new可以直接打开一个新窗口,并对新文件进行编辑。

:sview是:split和:view两个命令的组合,它可以分隔出一个新窗口,并以只读方式打开指定的文件。

Windows_Split

切换窗口

在gvim中,只要用鼠标点击就可以进入不同的窗口。而在vim中,则需要用ctrl+Ww命令在多个窗口中进行切换。

命令ctrl+Wj可以将光标定位在下一个窗口中;ctrl+Wk可以将光标定位在上一个窗口中;ctrl+Wt切换到顶部的窗口;ctrl+Wb切换到底部的窗口。ctrl+Wp切换到进行切换操作以前所在的窗口。

移动窗口

ctrl+Wr命令可以使得窗口向下进行循环移动。这个命令可以带一个数字作为参数,指明向下循环移动所执行的次数。与其相类似的ctrl+WR命令,可以使得窗口向上循环移动。

命令ctrl+Wx,可以将当前窗口与下一窗口进行位置对换。如果当前窗口在底部,则没有下一个窗口,这时命令将当前窗口与上一个窗口进行位置对换。

利用ctrl+WK可以将当前窗口放到最顶端;而ctrl+WJ可以把当前窗口放到最底部。

关闭窗口

可以使用ZZ或是:q命令或ctrl+Wc关闭窗口。

命令ctrl+Wo可以使得当前窗口成为屏幕上的唯一窗口,而其他窗口全部关闭。系统会认为我们在其他的每一个窗口中都执行了:quit命令。

控制窗口大小

在输入split命令时,可以加入参数来指定打开窗口的大小。例如命令:3 split file,将在一个大小为三行的新窗口中打开文件file。我们也可以将这个命令中的空格去掉,写成:3split file

在多文本窗口中进行操作时,可以用ctrl+W+命令增大窗口,默认增量为1;用ctrl+W-命令减小窗口,默认值为1。ctrl+W=命令可以将几个窗口的大小变为相等。而命令countCtrl+W_可以使得当前窗口变得count这样高。如果没有指定count,将会使得当前窗口变得尽可能的最大。

当然,你也可以用鼠标上下拖动状态行来改变窗口的高度。

命令小结
:split新建一个窗口并显示当前文件
:new新建一个窗口并开始新文件
:sview新建一个窗口并只读打开文件
ctrl+Ww切换窗口
ctrl+Wj切换至下一窗口
ctrl+Wk切换至上一窗口
ctrl+Wt切换至顶部的窗口
ctrl+Wb切换至底部的窗口
ctrl+Wp切换至刚才所在的窗口
ctrl+Wr向下循环移动窗口
ctrl+WR向上循环移动窗口
ctrl+Wx将当前窗口与下一窗口位置对换
ctrl+WK将当前窗口放到最顶端
ctrl+WJ将当前窗口放到最底部
ctrl+Wc关闭当前窗口
ctrl+Wo关闭其他所有窗口
ctrl+W+增大窗口
ctrl+W-减小窗口
ctrl+W=等分窗口
Ctrl+W_最大化窗口

Technorati Tags: ,,

星期一, 八月 10, 2009

没什么大不了

一部高性能赛车能让你在5秒钟内从0加速到100公里/小时。你会感到在后背有巨大的推力。这么想,如果你的赛车这么持续加速8分钟,你就到太空了。

--查尔斯·西蒙尼 (第5位自费太空游客)

星期五, 八月 07, 2009

在Mac下拆分PDF

如果你需要将一个PDF文档拆分成几个文件,那么最简单的方法就是使用Mac内置的Preview程序。

首先,选择“编辑”菜单下的“删除选定的页面”,或者使用快捷键Command+Delete,删除页面;然后,将修改后的文件另存,就可以从原始文档中拆分出自己需要的部分。

Preview_Delete_Page

以上方法适用于抽取文档中的绝大多数页面。如果你只需要文档中的极个别页面,那么可以选择“显示”菜单下的“工具条”菜单项;在Preview的侧边工具条中,选择你想要导出页面的缩略图;然后用Command+C快捷键复制它们;再选择“文件”菜单下的“从夹纸板创建新文稿”菜单项,就可以获得一个仅包含你选中页面的新文件。

Split_Preview_Paste-2

利用免费软件PDFLab,可以选定文件中的某些页,然后生成一个新的文件。也就是说,可以将一个文件拆分成几个文件,每个文件中只包含奇数页、偶数页或指定的页面。

  1. 将PDF文件拖拽到PDFLab的主界面中;
  2. 取消选择指定页面;
  3. 点击“Create PDF”按钮,重建文件;

delete_page

利用Mac内置的Automator功能,你只需要依照下图鼠标拖拽,就可以制作自己的工作流--提取PDF文件中的奇数页、偶数页或全部页面。

Split_Automator

Tags: , , , ,

星期日, 八月 02, 2009

删除Mac的多语言资源

如果你不是一个语言学者的话,那么你的电脑上应该只需要两种语言:你的母语和英语。

免费软件iCleanLanguage,可以删除不需要的语言资源。只需要在“Clearning”页中,选择特定的应用程序或所有程序;然后在“Language List”页中,选择哪些语言将被移除;你还可以在“Exclude List”页中,选择某些程序不需要删除语言资源。最后回到Clearning页面,点击“Run”按钮,iCleanLanguage就将为你删除多语言文件,清理出可观的磁盘空间。

ICleanLanguage

iCleanLanguage运行之后,还会显示日志文件,告诉你有哪些文件被删除。如果你在Clearning页面中选择了“Dry run - no deletions”,那么将只是模拟运行,而不会真正删除文件。通过查看日志文件,你可以了解哪些文件将被删除?有多少空间将被释放?当你确认一切正常后,再让iCleanLanguage去做清理工作。这对于谨慎的用户来说,可以是一种更周全的考虑。

Monolingual是一个开源软件, 她可以删除Mac中不需要的多语言资源。你首先需要在列表中选择不需要的语言,然后点击“Remove”按钮,接着将弹出警告信息––“删除过程将无法恢复,除非你重新安装系统”,随后还要求你输入管理员的密码,最终你就会看到Monolingual在应用程序和系统资源中删除你选中的多余语言。这个过程是谨慎和安全的。

'Monolingual' von yyq123

可不要小瞧了这些多语言文件,它们可能已经占用了不少的磁盘空间。比如开源的媒体播放器Miro,就提供了多达63种语言,占用了22MB空间。即使对于Mac OS X标准安装进行整理,也可以释放超过100MB的磁盘。而我运行Monolingual后,竟然重获了1.3GB的空间,真是个不小的惊喜呀!

'Monolingual_Surprise' von yyq123

如果你不希望另外使用一个软件,那么Mac内置的Finder也可以轻松配置程序的多语言环境。在Finder里选中应用程序,然后从“文件”菜单中选择“显示简介”,在弹出窗口中的“语言”部分,可以取消选择不需要的语言或者干脆将那些语言文件“移去”。

比如,我蛮喜欢的开源浏览器Sunrise提供很多种语言支持,有中文,但是繁体的。我还是更愿意使用英文版。所以在简介窗口中取消选择除English外的所有语言,这样程序就只出现英文界面了。如果还希望省出点硬盘空间,那么选中不需要的语言,然后点击“移去...”按钮,就可以删除那些多余的文件了。

'GetInfo_RemoveLanguage' von yyq123

Youpi Optimizer是一个免费软件,她可以删除不需要的语言资源并释放其占用的磁盘空间。

好消息是,利用Youpi Optimizer下载)删除多语言资源是很安全的,并不会影响系统和程序的使用;坏消息是,Youpi Optimizer最近一次更新也是远在2006年3月。只能希望这个软件能够更活跃点了。

YoupiOptimizer

Tags: , , , , ,