vim常用小技巧

来源:百度文库 编辑:神马文学网 时间:2024/10/04 02:18:44

[vim]我的vim常用小技巧

Oct 15th, 2009 Leave a comment | Trackback

转载本站文章请注明,转载自:扶凯[http://www.php-oa.com]

本文链接: http://www.php-oa.com/2009/10/15/vim.html

vim是一个很强大,很方便的编辑器,有编辑器之王的美名.也是相当的方便.但大家可不要拿他当windows的记事本用,不然他连记事本都不如 哦.下面是我扶凯常用的一些小技巧.和大家分享.当然,大家有什么好的技巧,可一定要记的分享给我.

(1. 快速打开文件

当我们使用 ls 之类的命令,定位了一个文件时,我们可以在使用 vi 时,不在使用全路径。

例如

ls /etc/resolv.confvim !$

 

(2. 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 用空格替换 Tab

:set ts=4
:set expandtab
:%retab

我的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 保存的上次关闭时的光标位置重新设置光标