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

📄 windows.cnx

📁 Vim 中文文档
💻 CNX
📖 第 1 页 / 共 3 页
字号:
			:pedit +/fputc /usr/include/stdio.h<							*:ps* *:psearch*:[range]ps[earch][!] [count] [/]pattern[/]		与 |:ijump| 命令很像,只是找到匹配的在预览窗口显示。预览窗口用		|:ptag| 打开。 当前窗口和光标的位置都不改变。有用的例子: >			:psearch popen<		这很像 |:ptag| 命令,你可以用它自动显示光标所在单词的相关信息。		这个命令虽然不如 |:ptag| 用起来爽,但是你可以不使用标记文件,		并且它也可以找到一些系统的头文件。例如:>  :au! CursorHold *.[ch] nested exe "silent! psearch " . expand("<cword>")<		警告:可能会很慢。例子						*CursorHold-example*  >  :au! CursorHold *.[ch] nested exe "silent! ptag " . expand("<cword>")这条命令以当前光标位置处的关键字为参数,执行 ":ptag" 命令。'updatetime' 指定了光标停留的时间;"nested" 使得自动命令得以执行,这样可以在预览窗口里启用语法加亮。"silent!" 屏蔽了在找不到标签时产生的错误信息。也参见 |CursorHold| 。要禁用此功能: >  :au! CursorHold另一个比较好用的功能是加亮已经找到的标签,这样可以避免对光标处没有定义的单词执行 ":ptag",和一些别的东西: >  :au! CursorHold *.[ch] nested call PreviewWord()  :func PreviewWord()  :  if &previewwindow			" 不要在预览窗口里执行  :    return  :  endif  :  let w = expand("<cword>")		" 在当前光标位置抓词  :  if w != ""				" 如果该词可以通过 ":ptag" 找到其定义  :  :    " 在显示下一个标签之前,删除所有现存的语法加亮  :    silent! wincmd P			" 跳转至预览窗口  :    if &previewwindow		" 如果确实转到了预览窗口……  :      match none			" 删除语法加亮  :      wincmd p			" 回到原来的窗口  :    endif  :  :    " 显示当前光标处匹配的标签  :    let v:errmsg = ""  :    exe "silent! ptag " . w  :    if v:errmsg =~ "tag not found"  :      return  :    endif  :  :    silent! wincmd P			" 跳转至预览窗口  :    if &previewwindow		" 如果确实转到了预览窗口……  :	 if has("folding")  :	   silent! .foldopen		" 展开折叠的行  :	 endif  :	 call search("$", "b")		" 到前一行的行尾  :	 let w = substitute(w, '\\', '\\\\', "")  :	 call search('\<\V' . w . '\>')	" 把光标放置匹配的单词上  :	 " 在此位置对匹配的单词加亮  :      hi previewWord term=bold ctermbg=green guibg=green  :	 exe 'match previewWord "\%' . line(".") . 'l\%' . col(".") . 'c\k*"'  :      wincmd p			" 返回原来的窗口  :    endif  :  endif  :endfun==============================================================================11. 使用隐藏的缓冲区				*buffer-hidden*隐藏的缓冲区已经载入内存,但是不会显示在窗口里。这使得 Vim 每次从一个文件切换到另一个文件时,不必频繁地读写磁盘。 {若编译时没加入 |+listcmds| ,则不可用}							*:buffer-!*如果设置了 'hidden' ('hid') ,那么被丢弃的缓冲区会记忆你在 ":edit", ":next",":tag",等命令之后进行的所有操作。虽然有时没有设置 'hidden',但是有一些作用于缓冲区列表的命令还是会把当前窗口变为隐藏。这种情况发生在:当 'autowrite' 选项是关闭的或者缓冲区不可保存时,你试图用 '!' 强制删除一个修改过的缓冲区窗口。你可以用任何编辑命令使隐藏的缓冲区不再隐藏。或者用 ":bdelete" 命令将其删除。'hidden' 是全局选项, 它作用于所有的缓冲区。'bufhidden' 选项可以作用于指定的缓冲区,该选项可以是下面的值:	<empty>		使用 'hidden' 的值。	hide		隐藏该缓冲区,也适合于 'hidden' 没有设置的情况。	unload		不隐藏,而是卸载该缓冲区,也适合于设置了 'hidden' 的情			况。	delete		删除该缓冲区。							*hidden-quit*如果存在一个隐含的,并且被修改过的缓冲区,若此时退出 Vim 会得到一条错误信息,并且 Vim 会把该缓冲区变为当前的缓冲区。你可以决定是保存(":wq")还是退出(":q!")。注意:可能不止一个隐藏的并且已被修改的缓冲区!缓冲区也可能是非列表的(unlisted),这意味着此缓冲区存在,但是从缓冲区列表中看不到。|unlisted-buffer|:files[!]					*:files*:buffers[!]					*:buffers* *:ls*:ls[!]		显示所有缓冲区。例如: >			1 #h  "/test/text"		line 1			2u    "asdf"			line 0			3 %l+ "version.c"		line 1<		如果使用了 [!] ,将显示所有的缓冲区,包括非列表的缓冲区。(		"unlisted" —— “非列表”这一术语有点儿别扭……)。		每一个缓冲区都有唯一的号码与之对应。这个号码是不会改变的,所以		你可以一直使用 ":buffer N" 或 "N CTRL-^" (N 是缓冲区号码)来		选择特定的缓冲区。		标识符号(同一列上的符号不可能同时出现):		u	非列表缓冲区(只有使用 [!] 才能看到)|unlisted-buffer|		 %	当前窗口里的缓冲区		 #	用 ":e #" 或 CTRL-^ 可切换到该缓冲区		  a	激活的缓冲区:已载入内存并且可见		  h	隐藏的缓冲区:已载入内存但是没有窗口显示它		  	|hidden-buffer|		   -	不可更改的缓冲区,选项 'modifiable' 被关闭。		    =	只读缓冲区		    +	被更改的缓冲区						*:bad* *:badd*:bad[d]	[+lnum] {fname}		在缓冲区列表里添加一个文件名 {fname} ,但是不把该文件载入内存。		如果指定了 "lnum" ,那么第一次进入缓冲区时,光标会停留在那一行。		Note  + 后面的其它命令将被忽略。:[N]bd[elete][!]				*:bd* *:bdel* *:bdelete*:bd[elete][!] [N]		卸载缓冲区 [N] (默认:当前窗口)并且从缓冲区列表里删除该缓冲		区。如果缓冲区被改动过,那么该命令将失败,除非使用[!] ,但是这		样所有的改动都会丢失。文件和 Vim 失去联系。打开该文件的所有窗		口都会关闭。如果缓冲区 [N] 是当前的缓冲区,那么 Vim 会显示另一		个缓冲区来替代它。Vim 会选择列表中距离最近的一个装入缓冲区。		实际上,该缓冲区没有被完全从缓冲区列表 |unlisted-buffer|		里删除。该缓冲区中选项的值、变量、映射和缩略词被清空。:bdelete[!] {bufname}						*E93* *E94*		类似 ":bdelete[!] [N]",但是使用名字指定缓冲区。		Note 如果缓冲区名字是数字的,不能用该命令引用;用号码代替。如		果名字里含有空格,在空格前插入反斜杠。:bdelete[!] N1 N2 ...		对缓冲区 N1,N2,……执行 ":bdelete[!]" 。		参数可以是名字或号码(但是名字里不能含有数字)。		如果名字里含有空格,在空格前插入反斜杠。:N,Mbdelete[!]	对 N 号到 M 号(包含 N 和 M )缓冲区执行 ":bdelete[!]" :[N]bw[ipeout][!]				*:bw* *:bwipe* *:bwipeout*:bw[ipeout][!] {bufname}:N,Mbw[ipeout][!]:bw[ipeout][!] N1 N2 ...		类似 ":bdelete",真正删除缓冲区。所有标记失效,选项丢失,等等。		不要用,除非你知道自己正在做什么。:[N]bun[load][!]					*:bun* *:bunload*:bun[load][!] [N]		卸载缓冲区 [N] (默认:当前缓冲区)。原来占用的内存将被释放该		缓冲区还保留在缓冲区列表里如果缓冲区被改动过,那么该命令将失败,		除非使用[!] ,但是这样所有的改动都会丢失。如果缓冲区 [N] 是当		前的缓冲区,那么 Vim 会显示另一个缓冲区来替代它。Vim 会选择列		表中距离最近的一个装入缓冲区。:bunload[!] {bufname}		类似 ":bunload[!] [N]", 但是使用名字指定缓冲区。		Note 如果缓冲区名字是数字的,不能用该命令引用;用号码代替。如		果名字里含有空格,在空格前插入反斜杠。:N,Mbunload[!]	对 N 号到 M 号(包含 N 和 M )缓冲区执行 ":bunload[!]" :bunload[!] N1 N2 ...		对缓冲区 N1,N2,……执行 ":bunload[!]" 。		参数可以是名字或号码(但是名字里不能含有数字)。		如果名字里含有空格,在空格前插入反斜杠。:[N]b[uffer][!] [N]			*:b* *:bu* *:buf* *:buffer* *E86*		编辑列表中的缓冲区 [N] ,如果没指定 [N] ,就编辑当前的缓冲区。		对于 [!] 参见 |:buffer-!| 。这个命令同样可以编辑不再列表里的缓		冲区,而无需设置 'buflisted' 。:[N]b[uffer][!] {filename}		编辑列表中的缓冲区 {filename}。对于 [!] 参见 |:buffer-!| 。这		个命令同样可以编辑不再列表里的缓冲区,而无需设置 'buflisted':[N]sb[uffer] [N]					*:sb* *:sbuffer*		分割窗口编辑列表中的缓冲区 [N] ,如果没指定 [N] ,就编辑当前的		缓冲区。分割窗口的时候要看 'switchbuf' 是不是设置了 "useopen"		。这个命令同样可以编辑不再列表里的缓冲区,而无需设置		'buflisted' 。:[N]sb[uffer] {filename}		分割窗口编辑列表中的缓冲区 {filename}。这个命令同样可以编辑不		再列表里的缓冲区,而无需设置 'buflisted' 。							*:bn* *:bnext* *E87*:[N]bn[ext][!] [N]		前进至后面的第 [N] 个缓冲区。  [N] 默认是 1 。如果到了缓冲区列		表的末尾,则从头循环。对于 [!] 参见 |:buffer-!|		如果你在帮助文件缓冲区里,这条命令让你跳到下一个帮助缓冲区(如		果有的话)。同样,你在一个正常(非帮助)缓冲区里,就会使你跳到		下一个正常缓冲区。这样是为了在打开帮助的时候不会影响到浏览正常		的代码或文本。下面的命令都是这样。							*:sbn* *:sbnext*:[N]sbn[ext] [N]		分割窗口前进至后面的第 [N] 个缓冲区。		如果到了缓冲区列表的末尾,则从头循环。使用 'switchbuf':[N]bN[ext][!] [N]			*:bN* *:bNext* *:bp* *:bprevious* *E88*:[N]bp[revious][!] [N]		到前面的第 [N] 个缓冲区。  [N] 默认是 1 。		如果到了缓冲区列表的顶端,则从末尾循环。对于 [!] 参见		|:buffer-!| 和 'switchbuf' 。:[N]sbN[ext] [N]			*:sbN* *:sbNext* *:sbp* *:sbprevious*:[N]sbp[revious] [N]		分割窗口并前进到前面的第 [N] 个缓冲区。  [N] 默认是 1 。		如果到了缓冲区列表的顶端,则从末尾循环。对于 [!] 参见		|:buffer-!| 和 'switchbuf' 。							*:br* *:brewind*:br[ewind][!]		前进到缓冲区列表中的第一个缓冲区。		如果列表为空,则转到第一个非列表缓冲区。对于 [!] 参见		|:buffer-!|							*:bf* *:bfirst*:bf[irst	与 ":brewind" 相同。							*:sbr* *:sbrewind*:sbr[ewind]	分割窗口并前进到缓冲区列表中的第一个缓冲区。		如果列表为空,则转到第一个非列表缓冲区。对于 [!] 参见		|:buffer-!|		还需考虑 'switchbuf' 选项。							*:sbf* *:sbfirst*:sbf[irst]	与 ":sbrewind" 相同。							*:bl* *:blast*:bl[ast][!]	前进到缓冲区列表中的最后一个缓冲区。		如果列表为空,则转到最后一个非列表缓冲区。对于 [!] 参见		|:buffer-!|		还需考虑 'switchbuf' 选项。							*:sbl* *:sblast*:sbl[ast]	分割窗口并前进到缓冲区列表中的最后一个缓冲区。		如果列表为空,则转到最后一个非列表缓冲区。对于 [!] 参见		|:buffer-!|		还需考虑 'switchbuf' 选项。:[N]bm[odified][!] [N]				*:bm* *:bmodified* *E84*		前进至第 [N] 个修改过的缓冲区。  Note: 这一命令同样也能找到非		列表缓冲区。如果没有修改的缓冲区,此命令失败。:[N]sbm[odified] [N]					*:sbm* *:sbmodified*		分割窗口并前进至第 [N] 个修改过的缓冲区。  		还需考虑 'switchbuf' 选项。		Note: 这个命令也能找到不再列表里的缓冲区。:[N]unh[ide] [N]			*:unh* *:unhide* *:sun* *:sunhide*:[N]sun[hide] [N]		重新排列窗口,给列表中的每一个载入的缓冲区打开一个窗口。如果设		置了计数器,则计数器指定的数目为打开窗口的最多数目。:[N]ba[ll] [N]					*:ba* *:ball* *:sba* *:sball*:[N]sba[ll] [N]	重新排列窗口,给列表中的每一个缓冲区打开一个窗口。如果设置了计		数器,则计数器指定的数目为打开窗口的最多数目。		Buf/Win Enter/Leave 不会在新窗口执行,只会在真正进入窗口时才会执行。Note: 上面所有的命令在编辑另一个缓冲区的时候,总是保持 'readonly' 不变。这和":edit" 命令不同,它每次都会设置 'readonly' 。==============================================================================12. 特殊类型的缓冲区			*special-buffers*除了用来存放文本,缓冲区也可以用于其它目的。一些选项可以改变缓冲区的行为:	'bufhidden'	缓冲区不再在窗口里显示	'buftype'	缓冲区的类型	'swapfile'	缓冲区是否需要交换文件	'buflisted'	缓冲区是否在缓冲区列表中出现有用的缓冲区类型:quickfix	用来存放错误列表。参见 |:cwindow|。该命令设置 'buftype' 的值为		"quickfix" 。你不应该修改它。关闭 'swapfile' 。help		包含帮助文件。只能用 |:help| 命令创建,缓冲区的帮助标志是内置		的,不能被更改。选项 'buflisted' 在帮助缓冲区里将被重置。directory	显示目录内容。应用于 |file-explorer| 插件。该缓冲区由一下设置		创建: >			:set buftype=nowrite			:set bufhidden=delete			:set noswapfile<		缓冲区的名字就是目录的名字,并且在使用 |:cd| 命令时会作出相应		的调整。scratch		该缓冲区包含的文本可以被随时扔掉。在关闭窗口时,它被保存下来,		并且必须被明确地删除。		设置: >			:set buftype=nofile			:set bufhidden=hide			:set noswapfile<		缓冲区的名字可以用来标识缓冲区。						*unlisted-buffer*unlisted	该缓冲区不在缓冲区列表里。它不能用来编辑,但是可以显示帮助文件,		记录文件名或标记。":bdelete" 命令也会设置这个选项,这样就不会		完全地删除该缓冲区。设置: >			:set nobuflisted< vim:tw=78:fo=tcq2:isk=!-~,^*,^\|,^\":ts=8:ft=help:norl:

⌨️ 快捷键说明

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