星期一, 八月 31, 2009

VIM学习笔记 编辑多个文件(Edit Multiple Files)

如果需要同时打开并编辑多个文件,可以使用以下几种方法:

  • 在启动vim时,可以指定多个文件做为参数(Argument)以同时打开多个文件;
  • 在Vim中,新建窗口(Window)用于打开文件;
  • 在Vim中,在任一窗口(Window)内,都可以新建多个缓冲区(Buffer)用于编辑不同的文件。

以下表格,简单列举了参数、窗口和缓冲区命令的对照关系:

参数和缓冲区命令对照
: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]

在不同文件之间拷贝文本

使用标记,在不同文件之间拷贝文本:

  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+Wp回到含有原始文件的前一个窗口
  4. 将光标移动到要拷贝文本的第一行
  5. 执行命令V进入可视化模式
  6. 移动到将要复制文本的最后一行,被选中的文本将会被高亮显示
  7. 执行命令y复制选中的文本
  8. 使用命令ctrl+Wp回到将要放置文本的文件
  9. 使用命令P将复制的文本粘贴到文件中

使用寄存器,在不同文件之间拷贝文本:

  1. 编辑第一文件
  2. 执行命令:split second_file打开另一个窗口并开始编辑第二个文件
  3. 使用命令ctrl+Wp回到含有原始文件的前一个窗口
  4. 将光标移动到要拷贝文本的第一行
  5. 执行命令"a3yy将需要复制的行放入寄存器
  6. 使用命令ctrl+Wp回到将要放置文本的文件
  7. 使用命令"ap将复制的文本粘贴到文件中

读入文件

使用:read filename(可简写为:r)命令,可读进一个文件并将内容插在当前行的后面。我们也可以在命令中,指明读取内容放置在文件中的特定位置。例如:0r filename命令,将读取内容放置在文件开头;而:$r filename命令,则会将读取内容放置在文件末尾。

写入文件

命令:write(可简写为:w)用来写入文件(也就是保存当前文件)。

使用以下命令将保存文本到文件collect.txt中:

:write collect.txt

如果这个文件已经存在,那么就会显示错误信息。如果要强行保存,那么需要使用!选项:

:write! collect.txt

我们也可以向已有文件中追加内容。使用以下命令将正编辑的文件内容追加到collect.txt中:

:write >> collect.txt

使用以下命令,将正编辑的文件的部分内容(第100行到文件末尾)追加到collect.txt中:

:100,$write >> collect.txt

如果这个文件不存在,那么就会显示错误信息。可以使用!选项,强行创建并保存新文件:

:write! >> collect.txt

我们还可以导出文件中的部分内容到其它文件中,以达到分拆文件的目的。以下命令将第10行到文件末尾的内容保存到collect.txt中:

:10,$write collect.txt

以下命令则会将当前行到第100行的内容保存到collect.txt中:

:.,100write collect.txt

在可视化模式下,选择内容,然后使用以下命令也可以写入其它文件:

:'<,'> write collect.txt

使用写入命令不仅可以保存文件,而且还可以将文件重定向到其他程序。在Linux系统中,我们可以使用以下命令将文件发送到打印机:

:write !lpr

注意:命令:write! lpr:write !lpr是不同的,前者是强行保存文件,而后者则是将文件发送到打印机。

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

退出文件

:quit可以退出当前文件。而:qall命令,则可以退出所有打开的文件。

如果文件已修改但没有保存,则会在窗口底部显示警告信息并禁止退出。可以使用以下命令,配置Vinm在此类情况下显示确认对话框:

:set confirm

set_confirm

如果想要放弃所做的修改并强行退出,可以使用:qall!命令。

使用命令:wqall组合,可以保存所有文件并退出。

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

星期一, 八月 24, 2009

VIM学习笔记 参数(Arguments)

启动参数

在启动vim时,可以指定多个文件做为参数,例如以下操作系统命令将打开多个文件,并显示第一个文件:

vim file1.txt file2.txt file3.txt

参数(Arguments)和缓冲区(Buffer)是不同的概念。早在Vi之中,就存在参数概念;而缓冲区则是在Vim之中新引进的。参数列表中的所有文件名,都会同时存在于缓冲区列表之中;但并不是所有缓冲区列表中的文件名,也都会出现在参数列表之中。

例如在启动vim之后,我们使用以下命令打开并编辑文件4:

:e file4.txt

此时显示以下3个参数:

args_3

而缓冲区则为4个:

args_4

参数列表

命令:args可以列示打开的多个文件,并用中括号“[]”标识出正在编辑的文件名。

args

切换多个文件

可以使用:argument命令,直接切换到指定的文件。例如以下命令,将切换至列表中的第三个文件:

:argument 3

需要切换到下一个文件时,可以输入:next命令,如果你没有保存当前文件的修改,vim将给出提示信息,不允许切换到下一文件。输入:write:next命令,则可以保存并切换到第二个文件(此命令也可简写为:wnext)。

使用:next!命令,可以强制切换到第二个文件,但所做改动也将会丢失。使用:set autowrite命令打开自动保存功能,可以避免数据丢失的意外情况;而命令:set noautowrite则可以关闭自动保存功能。

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

使用快捷键ctrl+^可以快速切换到上一个文件,以实现在#(current filename)和 %(alternate filename)文件之间快速切换的目的。

使用:first:rewind命令,可以快速切换到第一个文件;而:last命令,则可以快速切换到最后一个文件。

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

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

星期六, 八月 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命令,会将当前窗口水平分为两个,并且在这两个窗口中同时显示当前文件。如果你在其中一个窗口进行编辑,那么另一个窗口也会同步显示出你所做的更改。

默认情况下,每一个窗口都是独立滚动的。所以在编辑很长文档的时候,我们可以在不同窗口显示同一文档的不同部分。例如:一个窗口显示目录,另一个窗口显示正文。我们也可以使用:set scrollbind命令,绑定不同的窗口同步滚动。

如果想要在两个窗口中编辑不同的两个文件。使用:split file命令,就可以在另一个窗口中打开文件file了。

相对应的:vsplit命令,用于垂直分割窗口。

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

相对应的:vnew命令,用于垂直分割窗口并编辑新文件。

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

与窗口操作相关的命令,通常也有相对应的ctrl+W快捷键:

新建窗口命令
:new新建水平窗口并开始编辑新文件ctrl+Wn
:vnew新建垂直窗口并开始编辑新文件
:split新建水平窗口并显示当前文件ctrl+Ws
:vsplit新建垂直窗口并显示当前文件ctrl+Wv
:sview新建窗口并只读打开文件

Windows_Split

切换窗口

在gvim和vim中,使用命令:set mouse=a启用鼠标支持,就可以通过点击鼠标来进入不同的窗口。

你也可以使用以下ctrl+W快捷键在多个窗口中进行切换:

切换窗口命令
ctrl+Ww切换窗口
ctrl+Wj切换至下一窗口
ctrl+Wk切换至上一窗口
ctrl+Wh切换至左侧窗口
ctrl+Wl切换至右侧窗口
ctrl+Wt切换至顶部的窗口
ctrl+Wb切换至底部的窗口
ctrl+Wp切换至刚才所在的窗口

移动窗口

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

Wx

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

以上命令在调换窗口位置时,会维持现有的窗口尺寸和布局;而以下命令,则会同时改变窗口的位置、尺寸和布局:

移动窗口命令
维持
布局
ctrl+Wr向右或向下循环移动窗口
ctrl+WR向左或向上循环移动窗口
ctrl+Wx将当前窗口与下一窗口位置对换
改变
布局
ctrl+WK将当前窗口放到最顶端,并使用最大屏幕宽度
ctrl+WJ将当前窗口放到最底部,并使用最大屏幕宽度
ctrl+WH将当前窗口放到最左侧,并使用最大屏幕高度
ctrl+WL将当前窗口放到最右侧,并使用最大屏幕高度
ctrl+WT将当前窗口放到新的标签页

控制窗口尺寸

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

使用ctrl+W+命令增大窗口高度,默认增量为1行;ctrl+W-命令减小窗口高度,默认值为1行。命令countCtrl+W_可以使得当前窗口变为count指定的高度;如果没有指定count,则将当前窗口变得尽可能最大。

使用:resize命令,可以精确控制窗口高度。例如::resize +3将增大窗口高度3行;:resize -3将减少窗口高度3行;:resize 3则将精确指定窗口高度为3行。

命令ctrl+W=可以将几个窗口的大小变为相等。

使用ctrl+W>命令增大窗口宽带,默认增量为1列;ctrl+W<命令减小窗口宽度,默认值为1列。命令countCtrl+W|可以使得当前窗口变为count指定的宽度;如果没有指定count,则将当前窗口变得尽可能最大。

使用:vertical resize命令,可以精确控制窗口宽度。例如::vertical resize +3将增大窗口宽度3列;:vertical resize -3将减少窗口宽度3列;:vertical resize 3则将精确指定窗口宽度为3列。

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

控制窗口尺寸命令
:resize +n增大窗口高度ctrl+W+
:resize -n减小窗口高度ctrl+W-
:resize n最大化窗口高度Ctrl+W_
:vertical resize +n增大窗口宽度ctrl+W>
:vertical resize -n减小窗口宽度ctrl+W<
:vertical resize n最大化窗口宽度Ctrl+W|
ctrl+W=等分窗口

关闭窗口

可以使用以下命令来关闭窗口:

关闭窗口命令
:quit退出当前窗口ctrl+Wq
:close关闭当前窗口ctrl+Wc
:only关闭其它所有窗口Ctrl+Wo

帮助信息

使用:help CTRL-W命令,可以查看关于窗口操作的帮助信息。

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

星期一, 八月 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: , , , , ,