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

📄 tips.cnx

📁 Vim 中文文档
💻 CNX
📖 第 1 页 / 共 2 页
字号:
*tips.txt*	For Vim version 6.3.  最近更新: 2004年6月		     Vim 参考手册    作者:Bram Moolenaar	   (翻译:iCrazy <icrazy@ustc.edu>  http://vimcdoc.sf.net)使用 Vim 的技巧						*tips*别忘记浏览用户手册,里面有很多实用的技巧 |usr_toc.txt|.编辑 C 程序					|C-editing|查找使用标识符的地方				|ident-search|在 xterm 中切换屏幕				|xterm-screens|在插入模式下滚屏				|scroll-insert|平滑的滚屏					|scroll-smooth|纠正普通的录入错误				|type-mistakes|统计单词,行数					|count-items|恢复光标位置					|restore-position|文件更名					|rename-files|加速外部命令的执行				|speed-up|一些有用的映射					|useful-mappings|压缩帮助文件					|gzip-helpfile|十六进制编辑					|hex-editing|在一个窗口中执行 shell 命令			|shell-window|在自动命令中使用符号 <>				|autocmd-<>|==============================================================================编辑 C 程序						*C-editing*Vim 里面有不少功能可以帮助你们编辑 C 程序。以下是一个概括,你们可以使用标签跳转到具体的内容中去:|usr_29.txt|		用户手册中关于在程序的不同部分间移动的内容。|usr_30.txt|		用户手册中关于编辑程序的内容。|C-indenting|		输入时自动设置每行的缩进。|=|			重新缩进一些行。|format-comments|	对注释进行编排。|:checkpath|		显示所有被包含的文件 (嵌套)。|[i|			在当前和被包含的文件中查找光标当前位置的标识符。|[_CTRL-I|		跳转到 "[i" 的匹配。|[I|			显示在当前和被包含的文件中现出光标所在位置标识符的			那些行。|[d|			在当前和被包含的文件中查找光标所在位置的标识符的定义			(define)。|CTRL-]|		跳转到光标当前位置的标签处 (例如:一个函数的定义)。|CTRL-T|		跳转到执行 CTRL-] 命令前的地方。|:tselect|		从一连串匹配的标签中选出一个。|gd|			跳转到光标当前位置的局部变量的声明处。|gD|			跳转到光标当前位置的全局变量的声明处。|gf|			跳转到光标当前位置的文件名表示的文件。|%|			跳转到匹配的(), {}, [], /* */, #if, #else, #endif 处。|[/|			跳转到上一个注释开始的位置。|]/|			跳转到下一个注释结束的位置。|[#|			返回到未闭合的 #if, #ifdef, or #else 处。|]#|			前进到未闭合的 #else 或 #endif 处。|[(|			返回到未闭合的 '(' 处。|])|			前进到未闭合的 ')' 处。|[{|			返回到未闭合的 '{' 处。|]}|			前进到未闭合的 '}' 处。|v_ab|			选中一个“块” ("a block"),从 "[(" 至 "])",含括号|v_ib|			选中一个“内部块” ("inner block"),从 "[(" 至 "])"|v_aB|			选中一个“块” ("a block"),从 "[{" 至 "]}",含括号|v_iB|			选中一个“内部块” ("inner block"),从 "[{" 至 "]}"==============================================================================查找使用标识符的地方					*ident-search*你应该已经知道 |tags| 可以被用来跳转到定义函数和变量的地方。但是有时你希望跳转到使用函数和变量的地方。可以用以下2种方法实现:1. 使用 |:grep| 命令。这个应该可以在大多数 Unix 系统上工作,但是速度会比较慢(因为它读取所有的文件),并且只能在一个目录中搜索。2. 使用 ID 工具集。这个速度比较块而且可以搜索多个目录。它使用一个数据库来存放定位信息。你需要一些额外的程序来使它得以工作,并且你必须使数据库不断保持更新。使用 GNU id 工具集:你所需要的:- 安装 GNU id 工具集(mkid 是用来创建 ID 的,lid 是用来运行宏的)- 一个在当前目录下名为 "ID" 的标识符数据库。你可以用 shell 命令 "mkid file1  file2 .." 来创建它。把这些添加写你的 .vimrc文件中: >	map _u :call ID_search()<Bar>execute "/\\<" . g:word . "\\>"<CR>	map _n :n<Bar>execute "/\\<" . g:word . "\\>"<CR>	function! ID_search()	  let g:word = expand("<cword>")	  let x = system("lid --key=none ". g:word)	  let x = substitute(x, "\n", " ", "g")	  execute "next " . x	endfun使用的时候,把光标放在一个单词上,敲入 "_u",然后 vim 会读入含有这个单词的文件。使用 "n"查找这个单词在相同文件中下一次的出现的地方。使用 "_n" 可以跳转到下一个文件。这写操作已经使用 id-utils-3.2(这是位于距你最近的 gnu ftp 镜像服务器上的档案名称)测试通过了。[这个的想法来自于 Andreas Kutschera]==============================================================================在 xterm 中切换屏幕			*xterm-screens* *xterm-save-screen*(来源:comp.editors, 作者:Juergen Weigert, 回答一个问题的时候):> 另一个问题就是退出 vim 后,屏幕内容就被留在那儿了,也就是说:我刚刚正在:> 查看(或编辑)的内容就被留在屏幕上了。我此前执行的命令(例如:"ls")的输出:> 就不见了,即在滚屏缓冲里不存在了。我知道有个办法可以在退出 vim 或其他类似:> 于 vi 的编辑器的时候恢复屏幕内容,但是我不知道该如何操作。请帮助我,谢谢!::我认为可能有人可以回答这个问题。我认为 vim 和 vi 在某个特定:的 xterm 安装下和别的程序一样工作。他们并不一定完全相同,因为这牵扯到一个 termcap 对 terminfo 的问题。你们应该知道针对一种特定的终端,有2种数据库可以用来描述它的属性: termcap 和 terminfo。当它们中的条目不同,而且以上问题中的一个程序使用 terminfo,另一个使用 termcap时,两个程序会出现差异(请参见: |+terminfo|)。在你的问题中,你可能需要以下的控制序列:^[[?47h 和 ^[[?47l。他们用来在 xterm和主屏幕缓冲中轮流切换。如果你希望工作得更加有效率,如下的命令序列 >	echo -n "^[[?47h"; vim ... ; echo -n "^[[?47l"可能就是你所需要的。(我用符号 ^[ 表示 ESC 字符,往后你还会看到数据库使用 \E来表示它)。 在启动的时候,vim 把 termcap 中变量 ti (terminfo:smcup)的值显示在终端上。退出的时候,它显示 te (terminfo: rmcup) 的值。这样一来,这2个变量正好处于以上所述的控制序列需要被执行的位置。把你的 xterm termcap 条目(在 /etc/termcap 中)和 xterm terminfo 条目(用 /usr/5bin/infocmp -C xterm 得到)比较一下。两者应该都会有与下面类似的条目: >	:te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:附:如果你发现了任何差异,那么最好让某人(或许是你的系统管理员)彻底的检查    一下 termcap 和 terminfo 的一致性。NOTE 1: 如果你在 feature.h 中定义了 FEAT_XTERM_SAVE 之后又重新编译了 Vim,那么内置的 xterm 会有上述的 "te" 和 "ti" 条目。 NOTE 2: 如果你希望禁止屏幕切换,并且不希望改变你的 termcap,你可以在你的.vimrc 文件中加入这一行: >	:set t_ti= t_te===============================================================================在插入模式下滚屏					*scroll-insert*如果你处于插入模式下并且希望看一些恰好在屏幕范围以外的东西,你可以使用 CTRL-XCTRL-E 和 CTRL-X CTRL-Y 来滚屏。						|i_CTRL-X_CTRL-E|为了使这个简单些,你可以用这些映射: >	:inoremap <C-E> <C-X><C-E>	:inoremap <C-Y> <C-X><C-Y>(逐字敲入这些字符,并确认 '<' 标志不在 'cpoptions' 选项中)。不过这样你就不能使用从光标上一行/下一行拷贝文字的功能了 |i_CTRL-E|。你还可以考虑把 'scrolloff' 设置得大一些,这样你就总能看到光标附近的上下文了。如果 'scrolloff' 的值大于窗口高度的一半,在向上或向下移动光标时,文字会上下卷动,但是光标会始终停留在屏幕中间的位置。==============================================================================平滑的滚屏						*scroll-smooth*如果你希望你的滚屏更加平滑一些,你可以使用以下的映射: >	:map <C-U> <C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y>	:map <C-D> <C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E>(逐字敲入这些字符,并确认 '<' 标志不在 'cpoptions' 选项中)。==============================================================================纠正普通的录入错误					*type-mistakes*如果有一些单词你总是敲错,你可以使用缩写来改正它们。例如: >	:ab teh the	:ab fro for==============================================================================统计单词,行数等					*count-items*如果需要统计缓冲中一个模式(pattern)出现的频率,需要把 'report' 置为0,然后用替换命令把模式替换成它自己。Vim 报告的已替换的数目就是模式出现的次数。例: >	:set report=0	:%s/./&/g		characters	:%s/\i\+/&/g		words	:%s/^			lines	:%s/the/&/g		"the" anywhere	:%s/\<the\>/&/g		"the" as a word你可能希望复位 'hlsearch' 或者使用 ":nohlsearch"。如果 'modifiable' 选项是关的,这些就失效了。另一种办法就是在 Visual 模式下使用|v_g_CTRL-G|。							*count-bytes*如果你想数字节数,你可以这样做:	选中那些字符(块选择也可以)	使用 "y" 来拷贝这些字符	使用 strlen() 函数: >

⌨️ 快捷键说明

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