在使用 File/Open... 菜单的时候你会看到一个文件浏览器。这会使你更容易找到要编辑
的文件。但是如果你想把窗口分割并编辑另一个文件呢?没有一个菜单项是做这个的。你
当然可以先用 Window/Split 然后再用 File/Open...,但这样适得其反。
大多数时候你使用 Vim 都是键入命令的,同样,打开一个文件浏览器也可以。为了让
split 命令使用文件浏览器,在它前面加上 "browse" 就行了:
:browse split
选中一个文件后 ":split" 命令就会与其一起被执行。如果你取消文件对话框就什么都不
会发生。当前窗口也不会被分割。
你也可以指定一个文件名作为参数。这将告诉浏览器从那里开始查找文件。例如:
:browse split /etc
文件浏览器将以 "/etc" 作为起始目录。
":browse" 命令几乎可被添加在任何打开文件的命令前。
如果没有指定目录,Vim 会自己决定从哪里开始浏览。缺省情况 Vim 会从上次同样的
目录开始。这样当你用 ":browse split" 命令并选中了一个 "/usr/local/share" 里的
文件,下次你在用 ":browse" 时,浏览将从 "/usr/local/share" 开始。
用 'browsedir' 选项可以改变浏览的启动目录。可能的选项值包括:
last 使用上次的目录 (缺省)
buffer 使用当前缓冲区所在的目录
current 使用当前目录
例如,当你在 "/usr" 目录内编辑文件 "/usr/local/share/readme" 时,那么命令:
:set browsedir=buffer
:browse edit
会从 "/usr/local/share" 开始浏览,类似地:
:set browsedir=current
:browse edit
会从 "/usr" 开始浏览。
备注
:
为了避免使用鼠标,多数文件浏览器提供键盘操作。这些操作因系统而异,这里
不作解释。可能的情况下 Vim 使用系统的标准浏览器。请参阅你所用系统的文
档。
当你不是使用 GUI 版本时,你也可以使用文件浏览窗口来选择文件。然而,":browse"
命令就无效了。参阅 netrw-browse 。
Vim 会保护你的文件不被意外的覆盖或者其它的信息丢失。如果你要作一些可能有危险的
事,Vim 会以一个错误信息提醒你并建议在命令后加上 ! 来确认你希望进行该操作。
为了避免重新输入一个带有 ! 的命令,你可以要求 Vim 用一个对话框来向你询问。
你就可以选择 "OK" 或 "Cancel" 来告诉 Vim 你的要求。
例如,你正在编辑一个文件并做了一些改动。你要开始编辑另一个文件:
:confirm edit foo.txt
Vim 会弹出一个类似下面的对话框:
+-----------------------------------+
| |
| ? Save changes to "bar.txt"? |
| |
| YES NO CANCEL |
+-----------------------------------+
你可以作选择了。如果你希望保存变动,选择 "YES"。如果你想放弃变动: "NO"。如果你
想放弃编辑新文件的操作而返回来看看自己都做了那些改动用 "CANCEL"。 你会回到原来
的文件,你所做的改动也都还在。
就像 ":browse" 一样,":confirm" 命令也可以被加在多数编辑其它文件的命令之前。你
还可以把它们两个联起来用:
:confirm browse edit
如果当前缓冲区被改动的话这个命令会产生一个对话框。接着会弹出一个文件浏览器来选
择将要编辑的文件。
备注
:
在对话框中你可以使用键盘来作选择操作。通常来说 <Tab>
键和光标键可以改
变选项。键入 <Enter>
会确认选项。但这也跟你用的系统有关。
当你不是使用 GUI 版本的时候,":confirm" 也是有效的。Vim 不会弹出一个对话框,而
是将询问显示在 Vim 窗口的底部并提示你键入选择。
:confirm edit main.c
Save changes to "Untitled"?
[Y]
es, (N)o, (C)ancel:
你可以键入单键来作出选择。不用键入 <Enter>
,这和其它命令行的输入不同。
所有的 Vim 命令都是用键盘来完成的。在不知道命令名称的情况下,使用菜单会简单
些。但是你就得把手从键盘上移开去抓鼠标。
通常菜单用键盘也可以操作。这决定于你所使用的系统,但多数情况下是这样工作
的: 将 <Alt>
键和菜单项中带下划线的字母连用。例如,<A-w>
(<Alt>
加 w) 弹出
Window 菜单。
在 Window 菜单下,"split" 菜单项中的 p 下面划了线。放开 <Alt>
键然后按 p 就
可以选中它了。
在用 <Alt>
键选中菜单后,你可以用光标键来在菜单内移动。<Right>
选择一个子菜
单,<Left>
关闭之。<Esc>
也用来关闭菜单。<Enter>
选中一个菜单项。
使用 <Alt>
键来操作菜单和使用 <Alt>
键的映射会出现冲突。'winaltkeys' 可以用来
告诉 Vim 如何对待 <Alt>
键。
缺省值 "menu" 是一个明智的选择: 如果该键组合是一个菜单快捷键那么就不能被作
为映射。所有其它的键都可以。
"no" 表示不使用 <Alt>
键组合来操作菜单。这样你就必须使用鼠标。所有 <Alt>
键组合都可以被用作键盘映射。
"yes" 表示 Vim 会使用 <Alt>
键组合来操作菜单。另外的 <Alt>
键组合也可以用
作其它用途。
31.4 Vim 窗口位置及大小
要查看当前 Vim 窗口在屏幕上的位置可以用:
:winpos
这只对 GUI 有效。输出可能是这样的:
Window position: X 272, Y 103
位置是以屏幕像素为单位的。你可以通过数字来将 Vim 窗口移动到别处。例如,将其向
左移动一百个像素:
:winpos 172 103
备注
:
报告的窗口位置和窗口被移动的位置可能会有小的出入。这是由窗口周围的边框
引起的。边框是被窗口管理器加上的。
你可以在你的启动脚本中使用这个命令来将窗口定位到一个指定的位置。
Vim 窗口的大小是以字符数目计算的。因此它和所使用的字体的大小有关。你可以查看当
前的窗口大小:
:set lines columns
要改变窗口大小只要改变 'lines' 和/或 'columns' 选项的值即可:
:set lines=50
:set columns=80
取得窗口大小的操作在终端和在 GUI 上都可以。但是设定大小在绝大多数终端里都是不
可能的。
在启动 X-Window 版本的 gvim 时你可以在命令行指定窗口的位置和大小:
gvim -geometry {width}x{height}+{x-offset}+{y-offset}
{width}
和 {height}
的单位是字符。{x-offset}
和 {y-offset}
的单位是像素。例:
gvim -geometry 80x25+100+300
你可以使用 gvim 来编辑一个 e-mail。在你的 e-mail 程序里你得选择 gvim 作为其编
辑程序。当你尝试这种配置的时候,你会发现行不通: 邮件程序认为编辑已经结束了,可
实际上 gvim 还在运行着!
这里的情况是由于 gvim 启动时会将自己从外壳分离出来的缘故。如果你是从终端启
动 gvim 的话这当然没有问题,你还可以在外壳里作其它事。但如果你的确希望等待
gvim 结束的话,你必须阻止这个分离动作。"-f" 参数就是用来做这个的:
gvim -f file.txt
"-f" 代表前台 (foreground)。这样 Vim 就会挂起它启动所在的外壳,直到你编辑完毕
并退出为止。
推 迟 启 动 GUI
在 Unix 上你可以先在终端里启动 Vim。当你在一个外壳里完成各种不同任务的时候这很
有方便。如果当你在编辑某个文件时决定你想使用 GUI,你可以这样做:
:gui
Vim 就会打开 GUI 窗口并不再使用终端。你可以继续在终端里作其它事情。"-f" 参数在
这里也可以用来将 GUI 放置在前台: ":gui -f"。
GVIM 启 动 文 件
当 gvim 启动时,它会读取 gvimrc 文件。这和启动 Vim 时用到的 vimrc 文件类似。
gvimrc 文件可以被用来为 GUI 设定专用的选项和命令。例如,你可以设定 'lines' 的
值来指定窗口的大小:
:set lines=55
在终端里使用是没有用的,因为它的大小是固定的 (除了那些支持调整大小的 xterm)。
Vim 在 vimrc 文件相同的地方找寻 gvimrc 文件。通常来说在 Unix 上是
"~/.gvimrc"; MS-Windows 上是 "$VIM/_gvimrc"。$MYGVIMRC 环境变量设为该值,这样
你可以用下面的命令编辑此文件,如果有的话:
:edit $MYGVIMRC
如果出于某种原因你不想使用通常的 gvimrc 文件,你可以利用 "-U" 参数来指定另
外的一个:
gvim -U thisrc ...
这使你可以用 gvim 来做另外一类编辑。例如你可以用另外的字体大小。
要完全跳过读取 gvimrc 文件:
gvim -U NONE ...