转载本站文章请注明,转载自: 月影鹏鹏 [http://jk.scanmon.com]
本文链接: http://jk.scanmon.com/wp/%e6%88%91%e7%9a%84vim%e5%b8%b8%e7%94%a8%e5%b0%8f%e6%8a%80%e5%b7%a7.html
vim是一个很强大,很方便的编辑器,有编辑器之王的美名.也是相当的方便.但大家可不要拿他当windows的记事本用,不然他连记事本都不如哦.下面是我扶凯常用的一些小技巧.和大家分享.当然,大家有什么好的技巧,可一定要记的分享给我.
vim的代码折叠
这个功能相当的强大,如下图.可能给一个子函数(也可以是代码块)折叠起来.有关折叠不同的语言也不一样,因为标记不一样
在vim中的折叠方式,可用选项 ‘foldmethod’ 来设定折叠方式:set fdm=*****。
有 6 种方法来选定折叠:
manual 手工定义折叠
indent 更多的缩进表示更高级别的折叠
expr 用表达式来定义折叠
syntax 用语法高亮来定义折叠
diff 对没有更改的文本进行折叠
marker 对文中的标志折叠
象我是用set fdm=marker,然后我自己写的vim的折叠代码,让他自动折叠perl的子函数,只要是sub name {} 都折叠

常用的折叠快捷键
zf 创建折叠(使用数字表示创建有当前行到下多少行的折叠,比如3j就创建包括4行的折叠)
zo 打开折叠(l也可以打开折叠)
zc 关闭当前折叠
zm 关闭所有折叠
zr 打开所有折叠
zE 删除所有折叠
zd 删除当前折叠
za 若当前打开则关闭,若当前关闭则打开
zj 到下一折叠的开始处
zk 到上一折叠的末尾
让vim支持查看函数列表
图形界面下的很多编辑软件都可以列出当前编辑文件中的函数列表,以便在编辑的时候能够快速的跳转。其实VIM也可以很好的实现的
首先还是安装新的Exuberant Ctags
apt-get install exuberant-ctags。
要显示的话,还需要下载下载taglist_45.zip,解压到home目录下的.vim子目录中:
http://www.vim.org/scripts/script.php?script_id=273
mkdir ~/.vim
cd ~/.vim
unzip taglist_45.zip

用法:
:helptags . #建立生成文件的索引,然后才能正常使用帮助
:TlistToggle #命令切换函数列表的开、关。按ctrl键然后按两下w键在正常编辑区域和tags区域中切换。
常用的几项.vimrc设置:
把方法列表放在屏幕的右侧 let Tlist_Use_Right_Window=1
让当前不被编辑的文件的方法列表自动折叠起来,这样可以节约一些屏幕空间 let Tlist_File_Fold_Auto_Close=1
vim中使用标记在程序中移动
Vim 允许你在文本中放置自定义的标记。命令 “ma” 用 a 标记当前的光标位置。你可以在文本中使用 26 个标记 (a 到 z)。这些标记是不可见的,只是一个由 Vim 记住的位置。
要跳到一个你定义的标记,可以使用命令 `{mark},这里 {mark} 是指定义标记的那个字母。
ma 把当前位置存成标签a
`a 移到跳转到标记 a处
:marks 取得所有的标记的列表
到有一些特殊的标记,包括:
‘ 跳转前的光标位置
“ 最后编辑的光标位置
[ 最后修改的开始位置
] 最后修改的结束位置
注:mark仅在当前文件跳转有效,jumps可在多个文件之间来回跳转
多行操作列模式ctrl+v,(我超级喜欢的一个功能)
这个可是我请教Flw王大师学来的.
ctrl+v进入列模式,上下左右选择块,然后按大写的I,插入注释符#之类也可以按dd删除

模式行(modeline)
编辑文件时常常指定一些选项,比如缩进量、是否将制表符转换成空格等.我想没人愿意每次进入一个vim都手工输入一大堆的 Tab 和缩进设定。换了新的机器修改文件原有的设置就丢失了,还有如果我编辑的代码不止一种风格呢?——考虑一下,如果你参加开源软件项目,你能保证你参加的所 有项目,还有你公司里的软件项目,代码风格都一样吗?
为了解决这些文件,有VIM中有一个VIM可以识别文件中的特殊行.这个特性在 Vim 中叫做模式行.Vim 是我用过的第一个支持在文件中记录代码风格设定的编辑器。实际上,它所做的是在打开文件时根据文件中的 Vim 指令设定相关的 Vim 选项。下面就是一个嵌
在 C 源代码中的模式行:
/* vim: set tabstop=4 shiftwidth=4 expandtab: */
下面这个是perl的模式行
#vi:set tw=0 ts=8 sw=8 noet nowrap ft=c fdm=syntax nobackup tabstop=4 shiftwidth=4 foldmethod=marker: #
模式行有好几种形式。行首的“/*”和尾部的“*/”告诉 C 编译器这是一行注释,不是代码的一部分;而 Vim 可通过后面的“vim:”识别出模式行的开始(必须出现在行首或前面有一个空白字符);后面则是“set”和空格间隔开的一串 Vim 选项;“:”表示模式行结束。
这种方式非常简单,功能也非常强大。另外请注意,出于安全的考虑,模式行中的选项只影响当前文件(“:help modeline-local”),也不能做任何设置选项以外的工作。
也许你会觉得这些很有用的小功能:
改变窗口命令
ctrl+w s 水平分割窗口
ctrl+w w 切换窗口
ctrl+w q 退出当前窗口(由于同时有多个文件,此命令不会影响其他窗口)
ctrl+w v 垂直分割窗口
shift+% 跳转到与之匹配的括号处
. 重复上次的修改命令
`. 跳转到最近修改过的位置
ga 显示光标下的字符在当前使用的 encoding 下的内码
guw 光标下的单词变为小写
gUw 光标下的单词变为大写
set list 显示vim中所有的特殊符号
我的vim配置
set tabstop=4 #制表符的宽度为4个空格
set expandtab #Tab 键时使用空格替代
set shiftwidth=4 #缩进的空格数为4个空格
set nocompatible #将使 vim 以比默认的 vi 兼容模式功能更强的方式运行
set fdm=marker #代码折叠
let &termencoding=&encoding #语言支持
set fileencodings=utf-8,gbk,ucs-bom,cp936 #对语言的支持,utf8和gbk之类
colorscheme delek #vim的高亮的彩色,我喜欢用这个
au BufReadPost * if line(“’\”") > 0|if line(“’\”") <= line(“$”)|exe(“norm ‘\”")|else|exe “norm $”|endif|endif #打开文件时,按照 viminfo 保存的上次关闭时的光标位置重新设置光标