⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 windows.cnx

📁 Vim 中文文档
💻 CNX
📖 第 1 页 / 共 3 页
字号:
*windows.txt*	For Vim version 6.1.  原文最后更新: 2001年1月30日		  VIM 参考手册    作者:Bram Moolenaar				  翻译:Dasn<dasn@users.sf.net> 				  VCD主页:http://vimcdoc.sf.net使用多个窗口和缓冲区进行编辑				*windows* *buffers*下面我们看一下操作多个窗口和缓冲区的命令。另外有些命令在操作多个窗口的时候不同于单个窗口,这也是需要解释的。一些基本的内容在用户手册的第 7、8 两个章节里 |usr_07.txt| |usr_08.txt|已经介绍过了。1.  简介					|windows-intro|2.  启动 Vim					|windows-starting|3.  打开和关闭一个窗口				|opening-window|4.  把光标移动到另一个窗口			|window-move-cursor|5.  窗口的移动					|window-moving|6.  改变窗口的大小 				|window-resize|7.  参数和缓冲区的列表命令			|buffer-list|8.  在所有的缓冲区和窗口里执行命令		|list-repeat|9.  当前光标处的标记和文件名			|window-tag|10. 预览窗口 					|preview-window|11. 使用隐藏的缓冲区				|buffer-hidden|12. 特殊类型的缓冲区 				|special-buffers|{Vi 没有这些命令}{如果在编译时没有加入 |+windows|,则不能使用多个窗口}{如果在编译时没有加入 |+vertsplit|,则不能垂直分割窗口}==============================================================================1. 简介							*windows-intro*“窗口”被用来查看缓冲区里的内容。你可以用多个窗口观察同一个缓冲区,也可以用多个窗口观察不同的缓冲区。“缓冲区”是一块内存区域,里面存储着正在编辑的文件。如果没有把缓冲区里的文件存盘,那么原始文件不会被更改。缓冲区的状态可以是下述三种情况之一:							*active-buffer*激活:	  缓冲区的内容显示在一个窗口里。如果该缓冲区是针对某一个文件创建的,那	  么该文件已经被读入缓冲区。如果缓冲区被更改过,其内容便会与原文件不同。							*hidden-buffer*隐藏:	  缓冲区的内容不被显示。如果该缓冲区是针对某一个文件创建的,那么么该文	  件已经被读入缓冲区。其实它与激活状态一样,只是你看不见它。							*inactive-buffer*非激活:  缓冲区的内容不被显示,也不包含任何数据。文件一旦被装入,与该缓冲区相	  关的选项会被记住。这些选项可以包括 |viminfo| 文件里的一些标记,但是	  这种缓冲区不能包含文本。用一个表来说明:状态		在窗口显示	文件装载	用 ":buffers" 命令 ~                                                  显示 ~激活		  yes		 yes		  'a'隐藏		  no		 yes		  'h'非激活		  no		 no		  ' 'Note: 所有的 CTRL-W 命令都可以用 |:wincmd| 执行,当我们不能在正常模式下输入命令,或者输入不方便时可以试一下。==============================================================================2. 启动 Vim						*windows-starting*在默认情况下,与 Vi 类似, Vim 启动后只打开一个窗口。参数 "-o" 和 "-O" 可以让 Vim 为参数列表里的每一个文件打开一个窗口。参数 "-o"水平分割窗口;参数 "-O" 垂直分割窗口。如果 "-o" 和 "-O" 都用了,那么最后一个参数决定分割的方向。例如,下面的例子打开三个水平分割的窗口: >	Vim -o file1 file2 file3参数 "-oN" ,这里的 N 是一个十进制数,用这个参数可以打开 N 个水平分割的窗口。如果文件名的个数多于窗口数目,则只打开 N 个窗口,这样有一些文件就得不到窗口来显示。如果指定的窗口数多于文件的个数,那么后面的几个窗口会编辑空的缓冲区。同样,"-ON"  打开 N 个垂直分割的窗口,相应的规则与 "-oN" 相同。如果你打开了很多的文件,每个窗口都会便得很小。你可能需要设置 'winheight' 和'winwidth' 选项来创建一个适合工作的环境。Buf/Win Enter/Leave 等自动命令 |autocommand| 不会在打开窗口或读取文件时运行,只有在真正进入程序后才会运行。							*status-line*状态栏用来分割窗口。选项 'laststatus' 用来设置在什么时候最后一个窗口可以有状态栏:	'laststatus' = 0	不要状态栏	'laststatus' = 1	窗口数多于一个的时候	'laststatus' = 2	总是显示状态栏你可以通过设置 'statusline' 选项来改变状态栏的内容。通常状态栏用反色显示。你可以通过修改 'highlight' 选项中的 's' 字符来改变。例如,"sb" 设置为粗体字。如果没有启用状态栏加亮 ("sn"), 那么字符 '^' 表示当前窗口,字符 '=' 表示其它窗口。如果支持鼠标,并且已经通过设置 'mouse' 选项使之启动,那么你可以用鼠标拖动状态栏以改变窗口的大小。Note: 如果你想让状态栏以反色显示,但是它没有。查看一下 'highlight' 选项是否包含了 "si"。在 3.0 版本里,这意味着反转(invert)状态栏,但是现在应该使用 "sr",反转(reverse)状态栏,因为 "si" 现在表示斜体(italic)!如果你的终端不支持斜体,那么状态栏还是会以反色显示;这种问题只会出现在支持斜体字的 termcap 终端上。==============================================================================3. 打开和关闭一个窗口					*opening-window* *E36*CTRL-W s						*CTRL-W_s*CTRL-W S						*CTRL-W_S*CTRL-W CTRL-S						*CTRL-W_CTRL-S*:[N]sp[lit] [++opt] [+cmd]				*:sp* *:split*		把当前窗口分割成两个,结果是两个窗口显示同一个文件。新打开的窗		口高度为 N (默认值是当前窗口高度的一半。减少当前窗口的高度,		空出地方给新的窗口(或者采用别的方案,如果你设置了		'equalalways' 选项,并且 'eadirection' 没有设置为 "hor")。		Note: CTRL-S 不是在所有的终端都能使用,并且可能导致不能继续输		入,遇到这种情况,用 CTRL-Q 继续。参见 |++opt| 和 |+cmd|。CTRL-W CTRL-V						*CTRL-W_CTRL-V*CTRL-W v						*CTRL-W_v*:[N]vs[plit] [++opt] [+cmd] [file]			*:vs* *:vsplit*		与 |:split| 类似, 但垂直分割窗口。如果打开了 'equalalways' 选		项,并且选项 'eadirection' 没有设置为 "ver" ,窗口会被水平铺开,		除非你指定了窗口的宽度。 		Note: 在其它地方 CTRL-Q 与 CTRL-V,但是在这里不是!CTRL-W n						*CTRL-W_n*CTRL-W CTRL_N						*CTRL-W_CTRL-N*:[N]new [++opt] [+cmd]					*:new*		创建一个新窗口并且开始编辑一个空文件。新窗口的高度为 N (默认		值为现存高度的一半)。减少当前窗口的高度,为新窗口留出空间(如		果你打开了 'equalalways' 选项,并且 'eadirection' 没有设置为		"hor",那么可能是另一种情况)。		也参见:|++opt| and |+cmd|。		如果设置了 'fileformats' 选项,那么新缓冲区会使用这个值;如果		'fileformats' 为空,那么使用当前缓冲区的 'fileformat' 值。这个		值可以被 |++opt| 参数覆盖。		自动命令以如下顺序执行:		1. 在当前窗口执行 WinLeave 		2. 在新窗口里执行 WinEnter		3. 在当前缓冲区执行 BufLeave		4. 在新缓冲区执行 BufEnter		这跟先执行 ":split" ,再执行一个 ":e" 命令的效果差不多。:[N]vne[w] [++opt] [+cmd] [file]			*:vne* *:vnew*		与 |:new| 命令相似,但是它垂直分割窗口,如果打开了		'equalalways' 选项,并且选项 'eadirection' 没有设置为 "ver" ,		窗口会被水平铺开,除非你指定了窗口的宽度。:[N]new [++opt] [+cmd] {file}:[N]sp[lit] [++opt] [+cmd] {file}			*:split_f*		创建一个新的窗口,并且开始编辑文件 {file}。 如果使用了 [+cmd]		参数,文件加载完毕后会执行命令 |+cmd| 。		也参见:|++opt|。		新窗口的高度为 N (默认值为现存高度的一半)。减少当前窗口的高		度,为新窗口留出空间(如果你打开了 'equalalways' 选项,那么可		能是另一种情况)。:[N]sv[iew] [++opt] [+cmd] {file}		*:sv* *:sview* *splitview*		与 ":split" 命令相同,但是会给缓冲区设置 'readonly' 。:[N]sf[ind] [++opt] [+cmd] {file}		*:sf* *:sfind* *splitfind*		与 ":split" 命令相同,但是会在 'path' 里寻找 {file} 。如果找不		到,就不会分割窗口。CTRL-W CTRL-^					*CTRL-W_CTRL-^* *CTRL-W_^*CTRL-W ^	执行 ":split #" 命令,把窗口分成两个,并且编辑另一个文件。如果		指定了计数器,就变成了 ":split #N",分割窗口,并且编辑缓冲区 N 。Note 'splitbelow' 和 'splitright' 会影响窗口。 						*:vert* *:vertical*:vert[ical] {cmd}		执行 {cmd} 。如果包含一个分割窗口的命令,那么将垂直分割窗口。:lefta[bove] {cmd}				*:lefta* *leftabove*:abo[veleft] {cmd}				*:abo* *:aboveleft*		执行 {cmd} 。如果包含一个分割窗口的命令,那么将从当前窗口的左		(垂直分割)或者上方(水平分割)分割窗口,而不管 'splitbelow'		和 'splitright' 的设置。:rightb[elow] {cmd}				*:rightb* *:rightbelow*:bel[owright] {cmd}				*:bel* *:belowright*		执行 {cmd} 。 如果包含一个分割窗口的命令,那么将从当前窗口的右		(垂直分割)或者下方(水平分割)分割窗口,而不管 'splitbelow'		和 'splitright' 的设置。						*:topleft* *E442*:to[pleft] {cmd}		执行 {cmd} 。如果包含一个分割窗口的命令,那么该窗口出现在顶部,		并且占据最大宽度。当垂直分割窗口时,窗口出现在最左边,并且占据		最大高度。						*:botright*:bo[tright] {cmd}		执行 {cmd} 。如果包含一个分割窗口的命令,那么该窗口出现在底部,		并且占据最大宽度。当垂直分割窗口时,窗口出现在最右边,并且占据		最大高度。这些调节符可以结合使用,打开一个垂直分割的并且占据最大高度的窗口,例如: >	:vertical topleft edit tags在最左边打开一个垂直分割的、最大高度的窗口,用来编辑 tags 文件。关闭一个窗口----------------CTRL-W q						*CTRL-W_q*CTRL-W CTRL-Q						*CTRL-W_CTRL-Q*:q[uit]		退出当前窗口。如果退出的是最后一个窗口(不包括帮助窗口),就是		退出 Vim 。		如果设置了 'hidden' 并且只有此一个窗口监视当前缓冲区,那么该缓		冲区被隐藏。		如果没有设置 'hidden',并且只有当前这一个窗口监视该缓冲区,而		且缓冲区被修改了,那么该命令不会成功。		(注意: CTRL-Q 不是在所有的终端下都好用):q[uit]!	退出当前窗口。如果这是缓冲区的最后一个窗口,那么对于此缓冲区的		改动将全部丢失。如果退出的是最后一个窗口(不包括帮助窗口),就		是退出 Vim 。缓冲区里的全部内容将丢失,即使设置了 'hidden' 。CTRL-W c					*CTRL-W_c* *:clo* *:close*:clo[se][!]	关闭当前窗口。如果设置了 'hidden' ,或者改动了缓冲区但是命令里		用了[!],缓冲区会被隐藏。(除非还有一个窗口在编辑该缓冲区)。		该命令在下述情况下会失败:			*E444*		- 只剩下最后一个窗口的时候。		- 当 'hidden' 没有设置, 也没有用 [!] ,并且缓冲区也已经被修改,		  而且也没有其他窗口监视该缓冲区的时候。对缓冲区的改动既不写入		  文件,也不会丢失,所以这是个“安全”的命令。CTRL-W CTRL-C						*CTRL-W_CTRL-C*		你可能想用 CTRL-W CTRL-C 关闭当前窗口,但是这不行,因为 CTRL-C		是用来结束命令的。							*:hide*:hid[e]		退出当前窗口,除非这是屏幕上的最后一个窗口。缓冲区被隐藏起来(		除非还有另一个窗口正在编辑它,或者 'bufhidden' 设置为 "unload"		或 "delete")。 'hidden' 的值和这个命令没有一点关系。		对缓冲区的改动既不写入文件,也不会丢失,所以这是个“安全”的命		令。:hid[e] {cmd}	执行 {cmd} 并设置 'hidden' 选项。{cmd} 执行完毕后,先前的		'hidden' 选项会被恢复。		例如: >		    :hide edit Makefile<		这条命令编辑 "Makefile" 文件,并且如果当前缓冲区有改动的话,隐		藏之。CTRL-W o						*CTRL-W_o* *E445*CTRL-W CTRL-O					*CTRL-W_CTRL-O* *:on* *:only*:on[ly][!]	使当前窗口成为屏幕上唯一的窗口。其它窗口都关闭。		如果设置了 'hidden' 选项,被关闭窗口里的所有缓冲区变成隐藏。		如果没有设置 'hidden' ,但是设置了 'autowrite' 选项,那么已经		更改的缓冲区被写入文件。否则,那些包含被修改过的缓冲区的窗口不		能被关闭,除非使用 [!] 强制关闭。于是缓冲区转入隐藏状态,对缓		冲区的改动也不会丢失。==============================================================================4. 把光标移动到另一个窗口			*window-move-cursor*CTRL-W <Down>					*CTRL-W_<Down>*CTRL-W CTRL-J					*CTRL-W_CTRL-J* *CTRL-W_j*CTRL-W j	把光标向下移动 N 个窗口。  用光标的位置在两个窗口之间做出选择。CTRL-W <Up>					*CTRL-W_<Up>*CTRL-W CTRL-K					*CTRL-W_CTRL-K* *CTRL-W_k*CTRL-W k	把光标向上移动 N 个窗口。  用光标的位置在两个窗口之间做出选择。CTRL-W <Left>					*CTRL-W_<Left>*CTRL-W CTRL-H					*CTRL-W_CTRL-H*CTRL-W <BS>					*CTRL-W_<BS>* *CTRL-W_h*CTRL-W h	把光标向左移动 N 个窗口。  用光标的位置在两个窗口之间做出选择。CTRL-W <Right>					*CTRL-W_<Right>*CTRL-W CTRL-L					*CTRL-W_CTRL-L* *CTRL-W_l*CTRL-W l	把光标向左移动 N 个窗口。  用光标的位置在两个窗口之间做出选择。CTRL-W w					*CTRL-W_w* *CTRL-W_CTRL-W*CTRL-W CTRL-W	如果没有添加计数器,则将光标移动到当前窗口的 右/下方的窗口。如		果右下方没有窗口,就移动到左上角的窗口。要是添加了计数器,就移		动到第 N 个窗口(从左上方到右下方依次计数)。						*CTRL-W_W*CTRL-W W	如果没有添加计数器,则将光标移动到当前窗口的 左/上方的窗口。如		果左上方没有窗口,就移动到右下角的窗口。要是添加了计数器,就移		动到第 N 个窗口(从左上方到右下方依次计数)。CTRL-W t					*CTRL-W_t* *CTRL-W_CTRL-T*CTRL-W CTRL-T	把光标移动到左上角的窗口。CTRL-W b					*CTRL-W_b* *CTRL-W_CTRL-B*CTRL-W CTRL-B	把光标移动到右下角的窗口。CTRL-W p					*CTRL-W_p* *CTRL-W_CTRL-P*CTRL-W CTRL-P	移动到前一个(上次访问的)窗口。						*CTRL-W_P* *E441*CTRL-W P	移动到前一个窗口。如果没有前一个窗口就会出错。		{如果编译时没有加入 |+quickfix| 则不可用}在“可视”模式(Visual)下,如果窗口编辑的是同一个缓冲区,则光标所选择的区域会被保留;如果不是同一个缓冲区,则终止“可视”模式。						*:winc* *:wincmd*这些命令也可以用 ":wincmd" 来执行::[count]winc[md] {arg}		与 CTRL-W [count] {arg} 相同。例如: >			:wincmd j<		把光标移动到当前窗口下面的窗口。		这个命令在“正常”状态不可用的时候(比如在 |CursorHold| 自动命		令执行的时候),或者在启用“正常”状态不方便时,特别好用。==============================================================================5. 窗口的移动					*window-moving*CTRL-W r				*CTRL-W_r* *CTRL-W_CTRL-R* *E443*CTRL-W CTRL-R	向右下方向移动窗口。第一个窗口变成第二个,第二个变成第三个……		最后一个变成第一个。光标保留在相同窗口里。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -