Vim 学习手记(三) --- 状态与文件管理

 2010年01月12日 星期二 21:41 | 1992次浏览 | 2条评论

//挂起与恢复
象其它的Unix程序一样Vim也可以用CTRL-Z来挂起. 该命令停止Vim的
执行使你回到启动Vim的shell中去. 你可以做些别的事. 完了再用"fg"命
令回到Vim. 如果CTRL-Z不行, 你还可以用":suspend"命令. 别忘了等会再回到Vim, 否则你会丢失所有的改动.

CTRL-Z
{执行任何shell命令}
fg

:shell  打开一个新的shell , 这类似于用CTRL-Z挂起Vim. 不同之处在于这是一个新的shell

'0  ( 是数字0 不是字母O )回到你上次退出时的位置

//会话
假设你已在Vim中干了一整天了. 现在想退出来第二天接着干. 这时
可以把目前的状态以一个会话保存起来, 第二天可以据此恢复原样
:mksession ~/vimbook.vim
稍后如果你想恢复到此前的会话状态, 可以执行命令
:source ~/vimbook.vim
如果你想启动Vim时恢复某个会话, 可以直接使用命令行
vim -S vimbook.vim

会话的另一个用法是把你喜好的窗口布局保存为一个会话, 下次用会话文件恢复.

//文件浏览器
Vim有一个可以编辑目录的插件. 试一下:
:edit .
在自动命令和Vim脚本的魔力下, 显示出来的窗口中将是当前目录下的内容.
   你可以在这个特殊的缓冲区中使用Normal模式下的Vim命令来移动.
比如, 将光标移到一个文件上按<Enter>. 这将会打开该文件进行编辑.
要回到刚才的文件浏览器. 再次用":edit ."即可, 或者, 用CTRL-O也一样.

   你可以在文件浏览器窗口中使用?命令得到一个简短的帮助说明. 如下:

  <enter> : 打开一个文件或目录
  o : 为文件或目录打开一个新的窗口
  O : 在前一个被访问过的窗口中打开指定的文件/目录
  p : 预览文件/目录~
  i : 切换大小/日期的列表显示~
  s : 选择一个排序键          
  r : 逆向排序
  - : 进入父目录           
  c : 进入目录
  R : 文件重命名          
  D : 删除文件
  " :help help-explorer得到更多信息

//局部于窗口的工作目录
目前为止我们还没有用过":lcd"命令. 所有的窗口都共享同一个工
作目录. 一旦在其中一个窗口中用":cd"命令改变了工作目录, 其它窗口中的工作目录也将随之改变.

对一个窗口使用":lcd"后它的工作目录会被记录下来, 这样其它窗口中的":cd"或":lcd"命令就不会再影响到该目录了


//查找一个文件
假设你正在编辑一个C源程序, 其中有这样一行:
#include "inits.h"
  假设你想知道头文件"inits.h"中的内容. 只需将光标置于该文件上然后键入:
gf
Vim就会找到并编辑该文件


//隐藏缓冲区
假设你正在编辑文件"one.txt"现在需要转而编辑"two.txt"    同时你又不希望现在就保存文件"one.txt"的内容. Vim对此的解决方案是:
:hide edit two.txt

:buffers 显示缓冲区列表

//编辑一个缓冲区
你可以以缓冲区编号指定要编辑的缓冲区. 这可以免于键入其文件名:
:buffer 2
要在一个新窗口中打开一个缓冲区使用命令:
:sbuffer newNumber 或者 :sbuffer filename
要把一个缓冲区从列表中去除, 可以用命令:
:bdelete 3   //同样, 可以使用文件名

你可以用下面的命令来遍历整个缓冲区列表:

:bnext       跳转到下一个缓冲区
:bprevious   跳转到前一个缓冲区
:bfirst      跳转到第一个缓冲区
:blast       跳转到最后一个缓冲区


//灾难恢复  ------------------------------------------
多数情况下恢复文件是简单的, 如果你知道要恢复的文件名(当然也
要保证你的硬盘还会转), 就可以在启动Vim时指定一个"-r"参数:
vim -r help.txt

如果你在编辑一个没有指定文件名的缓冲区时死机了, 可以通过一个
空字符串作为要恢复的"文件名":
vim -r ""

Vim会读取交换文件(这正是存放你已编辑的文件的地方)以及你的原
文件的一些信息

如果你能确切知道要用的交换文件名, 你也可以在恢复时明确指定该
文件. Vim会根据交换文件名找出原文件名

//加密文件
要为新编辑的文件加密, 可以在启动Vim时使用"-x"参数, 如:
vim -x exam.txt
Vim会向你要一个密码用于加密/解密该文件
大写 X 参数能使密码输入时以星号显示

要停止对一个文件加密, 可以把'key'选项设置为一个空字串:
:set key=

你应该知道交换文件并没有被加密, 所以在你编辑时拥有超级用户特权的人还是可以从该文件中获取未加密的内容.
有一个避免别人读取你的交换文件的办法就是禁用交换文件. 如果在命令行上指定了-n参数, 就不会生成交换文件

 

//关于DOS, Mac 和Unix格式的文件 -----------------------------------------------------------
在计算机诞生之初, 存储设备十分昂贵. 于是有人就提出没有必要用两个字符来表示一行的结束. UNIX一族决定只用进纸一个字符<LineFeed>来表示行尾.来自苹果阵营的人则把回车<CR>作为换行的标准.MS-DOS(和微软的Windows)仍然决定沿用古老的回车换行<CR><LF>传统

这也意味着如果把文件从一个系统移到另一个不同的系统, 你就会遇
到与换行相关的问题. Vim编辑器则可以识别这些不同格式的文件
:set fileformats=unix,dos,mac

可以用下面的命令查看当前的文件格式
:set fileformat?
可以把"mac" 加到'fileformats'选项中:
:set fileformats+=mac

//强制指定文件格式
如果你用老版本的Vi去编辑一个MS-DOS格式的文件, 你会发现每行的
行尾都有一个怪怪的^M字符. (^M其实是回车). 有了自动格式检测就不会这样了. 如果你就是要编辑这样的文件, Vim也允许你强制指定文件格式:
:edit ++ff=unix file.txt
"++"字符串告诉Vim后面紧接着的是一个选项名, 对该选项的设置将覆盖它的默认值. "ff"代表的选项是'fileformat'. 你也可以指定为"++ff=mac"或"++ff=dos".

//格式转换
你也可以利用'fileformat'选项来转换文件的格式. 假如你有一个MS-DOS格式的文件README.TXT. 现在你想把它转换为UNIX格式:
vim README.TXT
:set fileformat=unix
:w


//二进制文件
你需要在启动Vim时使用"-b"参数:
vim -b datafile
二进制文件中很多字符都是不可打印字符. 设置下面的选项可以以十
六进制格式显示这些字符:
:set display=uhex
"ga"命令可以来查明当前光标下字符的本来面目

一个地道的二进制文件编辑器会以两种方式显示内容: 通常的文本显
示方式和十六进制格式. 在Vim中要收到这种效果你可以先用"xxd"程序
来做转换. 该程序随Vim一起发布
vim -b datafile
:%!xxd
编辑完成后再做一次逆向转换:
:%!xxd -r

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !
wolfmei

回复 wolfmei  2010年01月13日 星期三 12:54

学习了,我还不知道有个挂起的功能..

0条回复

李华堂

回复 李华堂  2010年01月13日 星期三 09:37

:sh可以在vim中,进入shell
:!ls 在vim中执行ls命令

0条回复

暂时没有评论

Zeuux © 2024

京ICP备05028076号