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

📄 tips.cnx

📁 Vim 中文文档
💻 CNX
📖 第 1 页 / 共 2 页
字号:
		:echo strlen(@")一个换行符被当做一个字节。==============================================================================恢复光标位置						*restore-position*有时你希望写一个映射,让它在文件中的其他地方做一些修改然后恢复光标的位置(不使当前的文本卷屏)。例如,修改一个文件中的日期标记: >   :map <F2> msHmtgg/Last [cC]hange:\s*/e+1<CR>"_D"=strftime("%Y %b %d")<CR>p'tzt`s分解出保存位置的命令:	ms	把光标位置存放在标记 's' 中	H	跳转到当前屏幕的顶端	mt	把这个位置存放在标记 't' 中分解出恢复位置的命令:	't	跳转到先前位于屏幕顶端的那一行	zt	卷屏,使这一行位于屏幕的顶端	`s	跳转到最初光标的位置==============================================================================文件更名						*rename-files*假如我有一个目录,里面有如下的文件(目录是随机选取的):buffer.ccharset.cdigraph.c...现在我希望把 *.c 更名为 *.bla。我可以这样做: >	$ vim	:r! ls *.c	:%s/\(.*\).c/mv & \1.bla	:w !sh	:q!==============================================================================加速外部命令的执行					*speed-up*在一些情况下,外部命令执行起来非常的慢。这个还会减慢 Unix 下的通配符扩展。这儿有一些建议可以加快速度:如果你的 .cshrc 文件(根据你使用的 shell,文件名可能不同)非常的长,你应该把它分割成2节:需要和用户交互的、无需和用户交互的(经常被称作二级 shell)。当你在 Vim 中执行一个类似 ":!ls" 的命令时,你就不需要和用户交互的那一部分(例如:设置提示符)。把那些不必要的部分放到这些行后面去: >	if ($?prompt == 0) then		exit 0	endif另一个办法是在 'shell' 选项中包含 "-f" 参数,例如: >	:set shell=csh\ -f(这儿的反斜杠是必须的,这样才能在选项中表示一个空格)。这样就会使 csh 完全跳过 .cshrc 文件。不过这样可能会造成一些程序不能正常运行。==============================================================================一些有用的映射					*useful-mappings*这里有一些人们喜欢使用的映射。							*map-backtick*  >	:map ' `使得单引号和 ' 一样工作。把光标移动到一个标记的第一列,而不是那一行的第一个非空白字符。							*emacs-keys*要在命令行上实现 Emacs 风格的编辑操作: >	" start of line	:cnoremap <C-A>		<Home>	" back one character	:cnoremap <C-B>		<Left>	" delete character under cursor	:cnoremap <C-D>		<Del>	" end of line	:cnoremap <C-E>		<End>	" forward one character	:cnoremap <C-F>		<Right>	" recall newer command-line	:cnoremap <C-N>		<Down>	" recall previous (older) command-line	:cnoremap <C-P>		<Up>	" back one word	:cnoremap <Esc><C-B>	<S-Left>	" forward one word	:cnoremap <Esc><C-F>	<S-Right>NOTE:前提条件是 '<' 标志不在 'cpoptions' 选项中。 |<>|							*format-bullet-list*这个映射可以格式化任何 bullet 列表,不过它需要在每一个条目的上下都各有一个空行。这些表达式命令可以用来对映射的部分进行注释: >	:let m =     ":map _f  :set ai<CR>"   " 需要设置 'autoindent'	:let m = m . "{O<Esc>"		      " 在项目上面加入空行	:let m = m . "}{)^W"		      " 跳转到 bullet 之后的文本	:let m = m . "i     <CR>     <Esc>"   " 为缩进加空格	:let m = m . "gq}"		      " 格式化 bullet 之后的文本	:let m = m . "{dd"		      " 删除空行	:let m = m . "5lDJ"		      " 把文本放到 bullet 之后	:execute m			      |" 定义这个 mapping(符号 <> |<>|。  Note 这些必须按照字面逐个输入。  ^W 是 "^" 和 "W",而不是CTRL-W。 如果 '<' 标志不在 'cpoptions' 选项中,你可以把这些拷贝/粘贴到 Vim 中去)Note 最后一个注释以 |" 开始,因为 ":execute" 不能直接识别一个注释。你还需要把 'textwidth' 设置成一个非0值,例如: >	:set tw=70以下这个映射可以达到同样的效果,不过它从第一行获得列表的缩进(Note: 这个映射是在同一行中输入的,其中有很多空格): >	:map _f :set ai<CR>}{a                                                          <Esc>WWmmkD`mi<CR><Esc>kkddpJgq}'mJO<Esc>j<							*collapse*这2个映射可以把一连串的空行 (;b) 或空白行 (;n) 压缩到一行 >    :map ;b   GoZ<Esc>:g/^$/.,/./-j<CR>Gdd    :map ;n   GoZ<Esc>:g/^[ <Tab>]*$/.,/[^ <Tab>]/-j<CR>Gdd==============================================================================压缩帮助文件						*gzip-helpfile*对于那些磁盘空间极度紧张的人来说,你们可以压缩帮助文件。这样会使得查看帮助文件时稍微慢一点,并且需要 "gzip" 这个程序的支持。(1) 压缩所有帮助文件: "gzip doc/*.txt"。(2) 编辑文件 "doc/tags",用 ".txt.gz" 替换 ".txt": >	:%s=\(\t.*\.txt\)\t=\1.gz\t=(3) 把这一行加入到你的 vimrc 文件中: >	set helpfile={dirname}/help.txt.gz这儿 {dirname} 是存放帮助文件的目录。|gzip| 这个插件会负责解压缩这些文件的。你必须肯定已经把 $VIMRUNTIME 设置成存放 Vim 文件的目录了,如果两者不一致的话。参见: |$VIMRUNTIME|。==============================================================================在一个窗口中执行 shell 命令				*shell-window*很多人都询问能不能在 Vim 中的一个窗口内执行 shell 命令。答案是:不行!加入这个功能会给 Vim 增加很多代码量,这也是为什么我们没有这样做的一个很好的理由。毕竟,Vim 只是一个编辑器,它本身并不是用来做那些非编辑类工作的。然而,要达到这样的目的,你可以把你的终端屏幕拆分开或者使者用 "splitvt" 程序来显示你的屏幕。在一些 ftp 服务器上你可以找到这个工具。Sam Lantinga <slouken@cs.ucdavis.edu> 对此了解颇多。另一种办法就是使用最早在 BSD Unix 上出现的 "window" 命令,它可以支持很多重叠的窗口。或者使用最先出现在 www.uni-erlangen.de 上的 "screen" 程序,它支持把多个窗口存入堆栈中。==============================================================================十六进制编辑					*hex-editing* *using-xxd*请看用户手册的第 |23.4| 节。如果你用一个专门的扩展名用来命令二进制文件(诸如 exe,bin等等),你们会发现以下使用在 <.vimrc> 文件中的一些命令在自动处理这些文件时非常有用。你可以用你希望编辑的文件扩展名(用逗号分隔)替换以下的 "*.bin": >	" vim -b : edit binary using xxd-format!	augroup Binary	  au!	  au BufReadPre  *.bin let &bin=1	  au BufReadPost *.bin if &bin | %!xxd	  au BufReadPost *.bin set ft=xxd | endif	  au BufWritePre *.bin if &bin | %!xxd -r	  au BufWritePre *.bin endif	  au BufWritePost *.bin if &bin | %!xxd	  au BufWritePost *.bin set nomod | endif	augroup END==============================================================================在自动命令中使用符号 <>					*autocmd-<>*在一个自动命令的参数中,符号 <> 是不能被识别的。为避免使用用特殊的字符,你可以使用一个可以自我毁灭的映射来得到符号 <>,然后从自动命令中调用这个映射。举例如下:						*map-self-destroy*  > " 这个将会自动的把文件名加入到菜单列表中 " 它使用了一个可以自我毁灭的 mapping! " 1. 用缓冲中的一行把文件名中的点('dots')转换成 \ 。 " 2. 把那个存放在寄存器 '"' 中 " 3. 把那个名字存在缓冲菜单列表中 " 注意:这个有一些副作用,比如:覆盖当前的寄存器内容和 " 删除任何对 "i" 命令的mapping。 " autocmd BufNewFile,BufReadPre * nmap i :nunmap i<CR>O<C-R>%<Esc>:.g/\./s/\./\\./g<CR>0"9y$u:menu Buffers.<C-R>9 :buffer <C-R>%<C-V><CR><CR> autocmd BufNewFile,BufReadPre * normal i另一个或许更好一些的办法就是使用 ":execute" 命令。在字符串中,你可以通过在符号 <> 前面加一个反斜杠的方法来使用它。别忘了重复反斜杠以及在'"'前面放一个反斜杠。 >  autocmd BufNewFile,BufReadPre * exe "normal O\<C-R>%\<Esc>:.g/\\./s/\\./\\\\./g\<CR>0\"9y$u:menu Buffers.\<C-R>9 :buffer \<C-R>%\<C-V>\<CR>\<CR>"为了建立一个真实的缓冲菜单,需要用到用户函数(参见 |:function|),不过那里不使用符号 <> , 所以失去了在这里举例的意义。 vim:tw=78:ts=8:ft=help:norl:

⌨️ 快捷键说明

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