shell之vi分屏

最简单的打开新窗口命令是如下(vim已打开一个窗口的情况下):

        :split

这个命令把屏幕分解成两个窗口并把光标置于上面的窗口中:

    这两个窗口允许你同时显示一个文件的两个部分。例如,你可以让上面的窗口显示
变量定义而下面的窗口显示使用这些变量的代码。

CTRL-W w 命令可以用于在窗口间跳转。如果你在上面的窗口,它会跳转到下面的窗口,
如果你在下面的窗口,它会跳转到上面的窗口。(CTRL-W CTRL-W 可以完成相同的功能
这是为了避免你有时按第二次的时候从 CTRL 键上缩手晚了。)

关 闭 窗 口

以下命令用于关闭窗口:

        :close

实际上,任何退出编辑的命令都可以关闭窗口,象 ":quit" 和 "ZZ" 等。但 "close"
可以避免你在剩下一个窗口的时候不小心退出 Vim 了。

关 闭 所 有 其 它 窗 口

如果你已经打开了一整套窗口,但现在只想编辑其中一个,如下命令可以完成这个功能:

        :only

这个命令关闭除当前窗口外的所有窗口。如果要关闭的窗口中有一个没有存盘,Vim 会
显示一个错误信息,并且那个窗口不会被关闭。

用另一个文件分割窗口

下面命令打开另一个窗口并用该窗口编辑另一个指定的文件:

        :split two.c

要打开窗口编辑一个新文件,可以使用如下命令:

        :new

你可以重复使用 ":split" 和 ":new" 命令建立任意多的窗口。

窗口大小

:split 命令可以接受个数前缀。如果指定了这个前缀,这个数将作为窗口的高度。例如
如下命令可以打开一个三行的窗口并编辑文件 alpha.c:

        :3split alpha.c

对于已经打开的窗口,你可以用有几种方法改变它的大小。如果你有鼠标,很简单:把
鼠标指针移到分割两个窗口的状态栏上,上下拖动即可。

要扩大窗口:

        CTRL-W +

要缩小窗口:

        CTRL-W -

这两个命令接受个数前缀用于指定扩大和缩小的行数。所以 "4 CTRL-W +" 会使窗口增
高4行。

要把一个窗口设置为指定的高度,可以用这个命令:

        {height}CTRL-W _

就是先输入一个数值,然后输入 CTRL-W 和一个下划线(在美式英语键盘中就是 Shift
加上 "-")。
    要把一个窗口扩展到尽可能大,可以使用无个数前缀的 CTRL-W _ 命令。

使 用 鼠 标

在 Vim 中,你可以用键盘很快完成很多工作。但很不幸,改变窗口大小要敲不少键。在
这种情况下,使用鼠标会更快一些。把鼠标指针移到状态条上,按住左键并拖动。状态
条会随之移动,这会使一个窗口更大一个更小。

选 项

'winheight' 选项设置最小的期望窗口高度而 'winminheight' 选项设置最小的 "硬性"
高度。
    同样,'winwidth' 设置最小期望宽度而 'winminwidth' 设置为最小硬性宽度。
    'equalalways' 选项使所有的窗口在关闭或者打开新窗口的时候总保持相同大小。

垂直分割

":split"命令在当前窗口的上面建立窗口。要在窗口左边打开新窗口,用这个命令:

        :vsplit

或者

        :vsplit two.c

中间的竖线左右分割一个窗口。

还有一个 "vnew" 命令,用于打开一个垂直分割的新窗口。还有一种方法是:

        :vertical new

"vertical" 命令可以放在任何分割窗口的命令的前面。这会在分割窗口的时候用垂直
分割取代水平分割。(如果命令不分割窗口,这个前缀不起作用)。

在 窗 口 间 跳 转

由于你可以用垂直分割和水平分割命令打开任意多的窗口,你就能够任意设置窗口的布局。
接着,你可以用下面的命令在窗口之间跳转:

        CTRL-W h        跳转到左边的窗口
        CTRL-W j        跳转到下面的窗口
        CTRL-W k        跳转到上面的窗口
        CTRL-W l        跳转到右边的窗口

        CTRL-W t        跳转到最顶上的窗口
        CTRL-W b        跳转到最底下的窗口

你可能已经注意到这里使用移动光标一样的命令用于跳转窗口。如果你喜欢,改用方向
键也行。
    还有其它命令可以跳转到别的窗口,参见:|Q_wi|。

移动窗口

你已经分割了一些窗口,但现在的位置不正确。这时,你需要一个命令用于移动窗口。
例如,你已经打开了三个窗口,象这样:

        +----------------------------------+
        |/* file two.c */                  |
        |~                                 |
        |~                                 |
        |two.c=============================|
        |/* file three.c */                |
        |~                                 |
        |~                                 |
        |three.c===========================|
        |/* file one.c */                  |
        |~                                 |
        |one.c=============================|
        |                                  |
        +----------------------------------+

显然,最后一个窗口应该在最上面。移动到那个窗口 (用 CTRL-W w)并输入如下命令:

        CTRL-W K

这里使用大写的 K。这样窗口将被移到最上面。你可以注意到,这里有用 K 表示向上
移动了。
    如果你用的是垂直分割,CTRL-W K 会使当前窗口移动到上面并扩展到整屏的宽度。

还有三个相似的命令(估计你已经猜出来了):

        CTRL-W H        把当前窗口移到最左边
        CTRL-W J        把当前窗口移到最下边
        CTRL-W L        把当前窗口移到最右边

对所有窗口执行命令

你打开了几个窗口,现在你想退出 Vim,你可以分别关闭每一个窗口。更快的方法是:

        :qall

这表示 "quit all"(全部退出)。如果任何一个窗口没有存盘,Vim 都不会退出。同时
光标会自动跳到那个窗口,你可以用 ":write" 命令保存该文件或者 ":quit!" 放弃修改。

如果你知道有窗口被改了,而你想全部保存,则执行如下命令:

        :wall

这表示 "write all"(全部保存)。但实际上,它只会保存修改过的文件。Vim 知道保
存一个没有修改过的文件是没有意义的。
    另外,还有 ":qall" 和 "wall" 的组合命令:

        :wqall

这会保存所有修改过的文件并退出 Vim 。
   最后,下面的命令由于退出 Vim 并放弃所有修改:

        :qall!

注意,这个命令是不能撤消的。


为 所 有 的 参 数 打 开 窗 口

要让 Vim 为每个文件打开一个窗口,可以使用 "-o" 参数:

        vim -o one.txt two.txt three.txt

"-o" 参数用于垂直分割窗口。
    如果 Vim 已经启动了,可以使用 ":all" 命令为参数列表中的每个文件打开一个窗
口。":vertical all" 以垂直分割的方法打开窗口。

用 vimdiff 显示区别

有一种特殊的启动 Vim 的方法可以用来显示两个文件的区别。让我们打开一个 "main.c"
并插入一些字符。在设置了 'backup' 选项的情况下保存这个文件,以便产生 "main.c~"
备份文件。
    在命令行中输入如下命令:(不是在Vim中)

        vimdiff main.c~ main.c

Vim 会用垂直分割的方式打开两个文件。你只能看到你修改过的地方和上下几行的地方。

    那些没有修改的行会被折叠成一行,这称为 "关闭的折叠"(closed fold)。上图
中由 "<- 折起" 标记的行就是一个用一行表示123行的折叠。这些行在两个文件中完全
相同。
    标记为 "<- 修改过的行" 被高亮显示,而增加的行被用另一种颜色表示。这可以
很清楚地表示出两个文件间的不同。
    被删除的行在 main.c 窗口中用 "---" 显示,如图中用 "<- 删除的行" 标记的行。
这些字符并不是真的存在。它们只是用于填充 main.c,以便与另一个窗口对齐。

折 叠 栏

每个窗口在左边都有一个颜色略有不同的显示栏,图中标识为 "VV"。你会发现每个折叠
在那个位置都有一个加号。把鼠标移到那里并按左键可以打开那个折起,从而让你看到
里面的内容。
    对于打开的折叠,折叠栏上会出现一个减号。如果你单击那个减号,折叠会被重新关
闭。
    当然,这只能在你有鼠标的情况下使用。如果你没有,可以用 "zo" 打开一个折叠。
关闭使用 "zc"。

用 Vim 做 比 较

启动比较模式的另一种方法是从 Vim 内部开始:编辑 "main.c" 文件,然后分割窗口
显示区别:

        :edit main.c
        :vertical diffsplit main.c

":vertical" 命令使窗口用垂直的方式分割。如果你不写这个命令,结果会变成水平分
割。

如果你有一个当前文件的补丁或者 diff 文件,你可以有第三种方法启动比较模式:
先编辑这个文件,然后告诉 Vim 补丁文件的名称:

        :edit main.c
        :vertical diffpatch main.c diff

警告:补丁文件中必须仅包括为一个目标文件所做的补丁,否则你可能会得到一大堆错
误信息。还可能有些你没打算打补丁的文件被打了补丁。
    补丁功能只改变你内存中的文件,不会修改你硬盘上的文件(除非你决定写入改动)。

滚 屏 绑 定

当文件中有很多改动时,你可以用通常的方式滚动屏幕。Vim 会尽可能保持两个文件对
齐,以便你可以并排看到文件的区别。
    如果暂时想关闭这个特性,使用如下命令:

        :set noscrollbind

跳 转 到 修 改 的 地 方

如果你通过某种方法取消了折叠功能,可能很难找到有改动的地方。使用如下命令可以跳
转到下一个修改点:

       ]c

反向跳转为:

        [c

加上一个个数前缀可以跳得更远。

消 除 差 异

你可以把文本从一个窗口移到另一个,并以此来消除差异,或者为其中一个文件中增加
几行。Vim 有时可能无法及时更新高亮显示。要修正这种问题,使用如下命令:

        :diffupdate

要消除差异,你可以把一个高亮显示的块从一个窗口移动到另一个窗口。以上面的
"main.c" 和 "main.c~" 为例,把光标移到左边的窗口,在另一个窗口中被删除的行
的位置,执行如下命令:

        :dp

这将把文字从左边拷到右边,从而消除两边的差异。"dp" 代表 "diff put"。
    你也可以反过来做:把光标移到右边的窗口,移到被 "改动" 了的行上,然后执行
如下命令:

        :do

这把文本从左边拷到右边,从而消除差异。由于两个文件已经没有区别了,Vim 会把所有
文字全部折叠起来。"do" 代表 "diff obtain"。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值