Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3461949
  • 博文数量: 1450
  • 博客积分: 11163
  • 博客等级: 上将
  • 技术积分: 11101
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-25 14:40
文章分类

全部博文(1450)

文章存档

2017年(5)

2014年(2)

2013年(3)

2012年(35)

2011年(39)

2010年(88)

2009年(395)

2008年(382)

2007年(241)

2006年(246)

2005年(14)

分类: LINUX

2008-03-27 12:00:07

vim

Vim 是一个功能强大的编辑器,是一个非常好用的vi的后续版本。 记得有人说过在UNIX世界就编辑器的使用而言有两种人,一种是 用emacs的,另一种就是用vi的。Vi编辑器奉行的是经典的UNIX哲学 "Do one thing and do it well",通过程序的配合使用 来获得强大的功能。


与其它程序配合使用

想象一下下面这个编辑任务,看用你现在使用的编辑器你应如何 完成它。你要编辑一个网页,网页中要引用一段大约有20行的代码, 为了使用这个标签来格式化代码,你需要在每行代码 的末尾加入一个
标签。

我想对于大多数的编辑器而言都不会有什么方便的方法来完成 它,但对于vi而言这却是小菜一碟。vi具有调用其他的程序来对 正在编辑的文件的指定区域进行处理的能力,这是典型的UNIX哲学 的具体化。

对于上面的任务在vi中可以通过如下的步骤来实现:

  1. ma 来区域起始点,并将光标移到区域末尾
  2. 执行如下命令 :'a,.!sed -e "s/$/
    /"
通过上面的操作我们就对区域调用了外部sed程序进行了处理, 注意在vi中用 ! 表示调用外部程序。

编辑二进制文件

vim可以很方便地编辑二进制文件,个人认为它比emacs的二进制 编辑方式更好用。vim中二进制文件的编辑是先通过外部程序xxd来把 文件dump成其二进制的文本形式,然后就可以按通常的编辑方式对文件 进行编辑,编辑完成后再用xxd转化为原来的形式即可。

可分如下几步进行:
首先,以二进制方式打开文件,命令为

vi -b filename
然后,在Ex模式下执行下面的命令将其dump
:%!xxd
待编辑工作完成后,执行下面的命令即可将其转换回去
%!xxd -r

xxd程序是vim软件包自带的一个程序,其功能就是进行十六进制的dump 或者反之。这部分内容可以在vim自带的文档的usr_23.txt文件中找到。

vim的初始化问题

vim有一套灵活而又复杂的初始化机制,详情见:help initialization。 我在这里只谈一下一个容易出错的地方,那就是通过-u foo.rc来指定初始化 文件的问题。

vim规定一旦使用了-u foo.rc来指定了初始化文件,那么vim就不会执行系统 的初始化文件。在linux系统上默认情况下这个系统的初始化文件是 /etc/vim/vimrc。这就带来了问题,因为在大多数的情况下我们仍旧希望执行这 个系统初始化文件。解决的方法是在你的定制的初始化文件foo.rc中加入下面的 内容:

source /etc/vim/vimrc

系统的初始化文件做了许多事情,其中之一就是设置backspace键的行为。下 面内容摘自/etc/vim/vimrc文件:

set bs=2 " Allow backspacing over everything in insert mode
这句话的意思是让backspace能在插入模式下删除任何东西。

hilight

vim有一个功能就是对最后一个search pattern进行高亮显示,默认情况下这 个功能是在系统配置文件/etc/vim/vimrc中打开,其相应的选项如下:

set hlsearch "hilight the last search pattern
如果你想关闭这个功能,你可以在你的~/.vimrc中文件中加入下面的内容来实现:
set nohlsearch

顺便说一句,系统的配置文件/etc/vim/vimrc中含有许多有用的配置选项,很 可能你要改的东西就在其中。

将外部程序的输出包含在文件中

有时你会遇到想把某个命令的执行输出包含在文件中的情况,这是使用vim的 r!命令就可以很方便地做到。下面的命令将ls /home/的输出包含到文件中的当 前位置:

:r!ls /home

改变当前的工作目录

使用Ex命令cd来改变当前的工作目录,用pwd来查看工作目录。这些命令和 linux的shell命令类似。

:cd work/web/html

这些命令在使用gvim时十分有用。

关闭最后一个文件

以前,我在vi中要关闭一个文件,我会使用命令q来进行。但是,在使用gvim 的过程中我遇到了问题:那就是如果对最后一个打开的文件使用了q命令来关闭 ,那么 gvim也就退出了,这可不是我想要的结果。

在vi中有file、buffer、window的概念,实际上我想要的只是关闭buffer或 者是window即可。

:bd          关闭buffer
:bw 彻底关闭buffer
:buffers 查看buffer列表
:close 关闭窗口

这样通过使用:bd命令,我就可以实现即关闭了文件又不退出gvim。


Created by scwang, send any question to scwang
阅读(1757) | 评论(0) | 转发(0) |
0

上一篇:vi 关闭 buffer

下一篇:vi 左缩进 右缩进

给主人留下些什么吧!~~