2009年1月16日星期五

用ctags在vim里实现跳转

首先安装ctags:

sudo apt-get install ctags


然后在源码的根目录下执行命令:

ctags -R


ctags --recurse


这会在根目录下生成一个tags文件

接着在~/.vimrc里加上这两句
set tags=tags;
set autochdir

然后按Ctrl-],就可以跳转到方法定义的地方了。
要想跳回去,按Ctrl-t

参考:
http://blog.csdn.net/wooin/archive/2007/10/31/1858917.aspx
http://likeyesterday.spaces.live.com/Blog/cns!A80F5D17DD9D10BF!148.entry

2009年1月9日星期五

SVN 忽略文件

以前都是给某个具体的目录设置 svn:ignore 属性来忽略其下的某些文件。
可是有些临时文件(比如vim产生的临时文件*.swp和备份文件*~)在很多目录下都可能会产生,而svn 的propedit 命令没有递归到子目录的选项(propset倒是有递归子目录选项,不过它会覆盖原来已有的属性设置),难道要每个目录都设置一次?

svn有个global-ignores list,打开 ~/.subversion/config,设置如下:
global-ignores = *.swp *~
这样就可以忽略所有目录下的这些文件了。

这个设置只是local的设置,并不会影响server。换句话说,别人机器上并不会自动忽略这些文件。

2009年1月8日星期四

Vim Plugin - TabBar

上次用了个叫miniBufExplorer的插件,已经很好用了,唯一的缺点是不支持Alt+{1,2,3...}来切换。
结果今天发现了另一个插件:TabBar,它是基于miniBufExplorer的。

这下可以用Alt+{1,2,3...}和Ctrl+Tab来模拟tab间的切换了。但是在窗口间切换就不方便,要用CTRL+w w,后来google了一下,发现了这篇文章:http://www.lousycoder.com/blog/index.php?/archives/97-Vim-+Project-+Tabbar.html
按里面的介绍,在~/.vimrc里加上以下的设置:
map <C-H> <C-W>h
map <C-J> <C-W>j
map <C-K> <C-W>k
map <C-L> <C-W>l
然后按Ctrl+{h,j,k,l}就可以在窗口间肆意流窜了。

默认tab的高度是1,也就是说打开的tab太多超过一行的话,后打开tab就看不见了。当然这时我们可以用鼠标拖动来扩大tab窗口的高度,然而更好的办法是配置一个tab窗口高度的最大值:
let g:Tb_MaxSize = 3

2009年1月6日星期二

Vim-Project Plugin

Project quickstart guide:
(From http://wiki.rubyonrails.org/rails/pages/howtousevimwithrails)

Here is a quick guide to get you started after installing Project.
1. Type :Project in Vim to launch the Project plugin.
2. Type \C to launch the create project routine.
3. Enter a name for the project (e.g. @RailsApp@)
4. Enter the directory path (e.g. /Users/me/Development/RailsApp)
5. Type . as the CD parameter.
6. Type * as the filter.
7. Type \r to load all files and directories.

project中文帮助: http://www.cppblog.com/DrMagic/archive/2007/11/19/36964.html

要使用本插件, 只需将其放置到 Vim 的插件目录(~/.vim/plugin)即可. 参见
"|add-global-plugin|", 在下次打开 Vim 时, 输入如下命令 >
:Project
或者 >
:Project filename

如果没有指定具体的项目文件, 那么会默认使用$HOME/.vimprojects文件.

命令: [g]vim +Project 可在 Vim 启动时同时自动载入project插件窗口.
(可以在~/.bashrc里加个alias: alias vimp='vim +Project')

在~/.vimrc里设置标志位和热键映射:
" Set project-flags
let g:proj_flags="imstg"
" Project-adding-mappings
nmap P :Project
g:proj_flags默认的标志位是imst,这里加上g以后,就可以按关闭和打开左边的项目窗口。
设置了上面那个映射之后,按\P就可以将光标焦点移到项目窗口。

一些热键:

(Shift+回车) 或 \s: 打开一个文件,但会水平分割目标窗口.

\v: 仅仅显示文件内容, 而光标依然停留在项目窗口中.

: 增加项目窗口的宽度,反复点击则为在原宽度和增加后的宽度之间切换.

\g: 搜索当前项目层所有文件.

\G: 搜索项目所有层所有文件.

当项目窗口因为或开或闭的折叠显得凌乱时, 按 zm 可以关闭所有的展开折叠.

\r: 根据过滤符更新光标处的项目(也就是刷新该目录)

\R: 递归执行 \r.

另一个有用的plugin: miniBufExplorer

把下载的文件copy到~/.vim/plugin/目录下
然后在.vimrc里加上:
" minibufexpl setting
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1

然后就可以用Ctrl+Tab键来切换tab了。

要想删除某个文件的打开记录,则先Ctrl+UP切换到上方的MiniBufExplorer窗口,然后将光标移动到要删的文件名上(不是删文件,而是删文件的打开记录),按d就行了。