柬埔寨暴力冲突:【linux】【vim】分割窗口split

来源:百度文库 编辑:偶看新闻 时间:2024/05/01 10:44:01

//http://hi.baidu.com/esta_pessoa/blog/item/0d274c097347ebad2fddd458.html

显示两个不同的文件;或者同时显示一个文件的两个不同地方;又或者并排比较两个文
件。这一切都可以通过分割窗口实现。
(在emcas下面是十分常用的操作,并且分割比较方便,ctrl+x 1或者2)

##################################################################################
打开新窗口最简单的命令如下:

:split(水平分割) || :split (垂直分割)
这个命令把屏幕分解成两个窗口并把光标置于上面的窗口中.

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

关 闭 窗 口" :close "
任何退出编辑的命令都可以关闭窗口,象 ":quit" 和 "ZZ" 等。但 "close" 可
以避免你在剩下一个窗口的时候不小心退出 Vim 了。(十分重要的设定啊~)

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

用分割窗口打开指定的文件(two.c) ":split two.c"

用分割形式新建文件" :new"

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
在 窗 口 间 跳 转(怎么说呢,现在鼠标可以代替,不过为了提高效率,还是推荐看看)

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

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

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

你可能已经注意到这里使用移动光标一样的命令用于跳转窗口。如果你喜欢,改用方向
键也行。

移动窗口

如果在分割多个文件时候发现文件顺序不是你所期望的.通过如下来更改

CTRL-W K 会使当前窗口移动到上面并扩展到整屏的宽度。
CTRL-W H 把当前窗口移到最左边
CTRL-W J 把当前窗口移到最下边
CTRL-W L 把当前窗口移到最右边

如果留心观察会发现,还是H-J-K-L四个键位.这里只是使用了大写状态了.

################################################################################
对所有窗口执行命令

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

:wall
这表示 "write all" (全部保存)。但实际上,它只会保存修改过的文件。Vim 知道保存
一个没有修改过的文件是没有意义的。(挺有意思啊~~)

vim -o one.txt two.txt three.txt
这个命令就是在终端下使用的,就是一次性打开3个文件并使用分割形式显示.

###############################################################################
用 vimdiff 显示文件差异(这个命令十分的实用,特别是对比两文件时候,不用你自己去找出差异性)
在命令行中输入如下命令:(不是在 Vim 中)

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

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

用vim内部启动对比的方法为:
:edit main.c
:vertical diffsplit main.c

注意:对比的文件应该只能是备份件"加了符号~的"和其本身文件.其他的都不能进行有效对比.

滚 动 绑 定(默认开启,不建议关闭)

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

:set noscrollbind

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
消 除 差 异(这个是最重要的!!所以我在这里全部贴过来并会注解)

消除差异其实就是说当你坐了一些更改以后,由于高亮显示和对比显示不能自动的同步更新,
所以需要手动的来处理问题,或者你需要在2个文件之间来回粘贴来转换.vi提供高效的方法.


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

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

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

:do(用右边的文件作参考复制修改)
这把文本从左边拷到右边,从而消除差异。
由于两个文件已经没有区别了,Vim 会把所有文字全部折叠起来。"do" 代表 "diff
obtain"。本来用 "dg" (diff get) 会更好。可是它已经有另外的意思了 ("dgg" 删除从
光标为止到首行的所有文本)。

################################################################################
标签页(我把杂项省略了~~说的是指定开启分割位置,感觉没太大必要)
你会注意到窗口永远不会重叠。这意味着屏幕空间很快会用完。这个问题的解决方法叫做
标签页。

这个标签页的形式我用网页的形式来说明最方便了.看官如果使用的是maxthon或者firefox的话,
应该都是有标签页的.就是在一个大的窗口下面打开子项目,保留其他项目的标签.十分方便.假设你正在编辑文件 "thisfile"。下面的命令可以建立新的标签页:

:tabedit thatfile
(下面出现的情况是在终端下面显示的,如果你使用的是独立的VI,
那么恭喜你,独立的标签页和网页形式一样了)
这会在一个窗口中编辑文件 "thatfile",这个窗口会占满整个 Vim 窗口。你会注意到在
顶部有一个含有两个文件名的横条:

+----------------------------------+
| thisfile | /thatfile/ __________X| (thatfile 用加粗字体出现)
|/* thatfile */ |
|that |
|that |
|~ |
|~ |
|~ |
| |
+----------------------------------+

现在,你拥有了两个标签页。第一个是文件 "thisfile" 的窗口,第二个是文件
"thatfile" 的窗口。这就像是两张重叠的纸,它们所带的的标签露在外面,显示其文件
名。

现在,使用鼠标单击顶端的 "thisfile"。结果是

+----------------------------------+
| /thisfile/ | thatfile __________X| (thisfile 用加粗字体出现)
|/* thisfile */ |
|this |
|this |
|~ |
|~ |
|~ |
| |
+----------------------------------+

你可以通过单击顶端的标签切换标签页。如果没有鼠标或者不想用它,可以使用 "gt" 命
令。助记符:Goto Tab。

现在,让我们通过下面的命令建立另一个标签页:

:tab split
这会建立一个新的标签页,包含一个窗口,编辑和刚才所在窗口中的缓冲区相同的缓冲
区:

+-------------------------------------+
| thisfile | /thisfile/ | thatfile __X| (thisfile 用加粗字体出现)
|/* thisfile */ |
|this |
|this |
|~ |
|~ |
|~ |
| |
+-------------------------------------+

在任何打开窗口的 Ex 命令前面,你都可以放上 ":tab"。这个窗口在新标签页中打开。
另一个例子:

:tab help gt
它将在新的标签页中显示关于 "gt" 的帮助。

"tabonly" 命令

关闭除了当前标签页以外的所有标签页,除非其它标签页中的改变没有保存。