📄 usr_08.cnx
字号:
| | +-------------------------------------------+当你在中间的窗口(three.c)中使用 CTRL-W K 后,结果会是: +-------------------------------------------+ |/* three.c */ | |~ | |~ | |three.c====================================| |/* two.c */ |/* one.c */ | |~ |~ | |two.c==================one.c===============| | | +-------------------------------------------+还有三个相似的命令(估计你已经猜出来了): CTRL-W H 把当前窗口移到最左边 CTRL-W J 把当前窗口移到最下边 CTRL-W L 把当前窗口移到最右边==============================================================================*08.6* 对所有窗口执行命令你打开了几个窗口,现在你想退出 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这个结果会是: +-------------------------------+ |file one.txt | |~ | |one.txt========================| |file two.txt | |~ | |two.txt========================| |file three.txt | |~ | |three.txt======================| | | +-------------------------------+"-o" 参数用于垂直分割窗口。 如果 Vim 已经启动了,可以使用 ":all" 命令为参数列表中的每个文件打开一个窗口。":vertical all" 以垂直分割的方法打开窗口。=============================================================================*08.7* 用 vimdiff 显示区别有一种特殊的启动 Vim 的方法可以用来显示两个文件的区别。让我们打开一个 "main.c"并插入一些字符。在设置了 'backup' 选项的情况下保存这个文件,以便产生 "main.c~"备份文件。 在命令行中输入如下命令:(不是在Vim中)> vimdiff main.c~ main.cVim 会用垂直分割的方式打开两个文件。你只能看到你修改过的地方和上下几行的地方。 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==============| | | +-----------------------------------------+(这幅图没有显示出加亮效果,可以使用 vimdiff 命令看到更好的效果) 那些没有修改的行会被折叠成一行,这称为 "关闭的折叠"(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"。本来用 "dg" (diff get) 会更好。可是它已经有另外的意思了 ("dgg" 删除从光标为止到首行的所有文本 )。要了解更多的比较模式的内容,参见 |vimdiff| 。=============================================================================*08.8* 杂项'laststatus' 选项用于指定什么时候对最后一个窗口显示状态条: 0 永远不 1 只有用分割窗口的时候(默认) 2 永远有很多编辑另一个文件的命令都有一个使用分割窗口的变体。对于命令行命令,这通过前置一个 "s" 实现。例如 ":tag" 用来跳到一个标记,"stag" 就会分割出一个新窗口并跳到那个标记。 对于普通模式,前置一个 CTRL-W 可以完成这个功能。例如,CTRL-^ 跳到备选文件,而 CTRL-W CTRL-^ 打开一个新窗口并编辑备选文件。'splitbelow' 选项可以让新的窗口出现在当前窗口的下面。'splitright' 选项让垂直分割的窗口出现在当前窗口的右边。打开一个新窗口时可以在命令前加上一个修饰符说明新窗口应该出现在什么地方:> :leftabove {cmd} 当前窗口的左上方 :aboveleft {cmd} 同上 :rightbelow {cmd} 当前窗口的右下方 :belowright {cmd} 同上 :topleft {cmd} 整个 Vim 窗口的最上面或者最左边 :botright {cmd} 整个 Vim 窗口的最下面或者最右边=============================================================================下一章:|usr_09.txt| 使用 GUI 版本版权:参见|manual-copyright| vim:tw=78:ts=8:ft=help:norl:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -