vim
tab相关
:tabnew 新建tab
gt 跳转到相应的tab
Spell Check拼写检查
:set spell/nospell打开和关闭
]s到下一个错误
[s到上一个错误
z=显示所有正确的拼写推荐,敲入序号即可改正。
代码补全
敲代码时如果有支持,Ctrl-x Ctrl-o即可列出可能的选项,然后按屏幕下面的快捷键选择即可。
回退操作
不但可以一步步回退,还可以直接退回到几个小时前。
[[ 转到上一个位于第一列的“{”
]] 转到下一个位于第一列的“{
{ 转到上一个空行
} 转到下一个空行
% 用来进行小括号、中括号和大括号的匹配。这要看当前光标指向的是什么符号了。
ctags:在定义之间跳转
CTRL_+] 跳到定义处
CTRL+O 跳回定义
CTRL +t 在Tag之间跳转
shift+k 将光标移动到你想察看的函数或者命令上面,输入shift+k即可,vim自动的调入man 命令,并将结果显示给你。这在你看源程序的时候也非常方便的
bn 下一个
bp 前一个
bd 关闭当前
make
:make
grep
:grep
然后就可以使用
:cn 下一个
:cp 前一个
:cl 列表
:cope 打开一个cope window
:cw 打开一个新的quickfix window,可以迅速查看
:ccl 关闭quickfix window
来查看了
搜索相关
/string
搜索字符串string
Note:The characters .*[]^%/\?~$ have special meaning. If you want to use them in
a search you must put a \ in front of them. Example: to find . use the search string\..
n
重复上一个搜索操作,如果上一个搜索是反向搜索,则该操作同样是反向搜索
N
反向搜索字符串string
?
将搜索方向设定为反向
可以使用:set runtimepath查看
“:echo $VIMRUNTIME”或“:echo $VIM”查看系统路径
可以在~/目录下面建立.vim目录,
下面有
+ <Directory>
+ colors
+ compiler
+ doc
+ etc
+ ftdetect
+ ftplugin
+ indent
+ keymap
+ plugin
+ syntax
目录下的插件会自动加载
vim在编译的时候需要加入'--enable-cscope'支持
cscope对tags的支持还不错
建立tag索引
cscope -R
使用vim直接定位
vim -t 标志名
首先需要安装一份 VIM ViKi 插件, 到 VIM 网站 上下载最新版本, 按照提示安装即可。 需要注意的是, ViKi 插件还依赖另外两个别的插件, 根据 VIM 网站上的提示安装即可。
安装了 ViKi 之后, 就可以编写 ViKi 文件了。 但是, 如果你想将编写完毕的 ViKi 文件发布到网上的话, 你还需要一个编译器 deplate, 将 ViKi 编译为 HTML。
deplate 是使用 ruby 编写的, 因此在 Linux 下安装 deplate 之前, 请先确认你已经安装了 ruby。 关于 ruby 的安装, 这里不再详细介绍。
正确安装 ruby 后, 到 SourceForge 上下载最新版的 deplate。 网站上发布的最新版 deplate 有个严重的 bug, 就是即使在 Code 块中, 百分号“%”开头的行也会被看做注释, 这会导致许多问题, CVS 中的最新代码已经修正了这个故障。 因此, 如果你打算跟进最新版本的话, 请下载 zip 源代码包后, 再到 CVS 中 checkout 最新源代码以修正这个故障。 注意: CVS 中并没有包含全部代码, 因此在 checkout 之前, 需要先下载最新版本的 zip 包, 然后用 CVS 中的最新版本对它进行覆盖。 关于 CVS 命令的使用请参看相关资料, 这里不再详细解说。
获得最新源代码后, 然后照提示安装就可以了:
$ ruby setup.rb config
$ ruby setup.rb setup
# ruby setup.rb install
或者:
$ ./configure
$ make
# make install
Windows 下的安装比较古怪: 将 deplate.exe 复制到 Windows 目录, 然后在你的 %HOME% 目录下创建一个 .deplate 目录, 将其余文件夹复制到 %HOME%\.deplate 目录下就可以了。
不知道 ViKi 默认为什么不把 .viki 的文件类型设置为 viki, 既然它不弄, 那自己弄好了: 在 .vimrc 中添加这段代码:
" Viki
let g:vikiNameSuffix=".viki"
augr viki
au!
autocmd! BufRead,BufNewFile *.viki set filetype=viki
augr END
VIM 的语法加亮能力非常强, 用来处理网页中代码片段的语法加亮真是再合适不过的了。 可惜, deplate 自带的 VIM 语法加亮插件有问题, 于是滇狐修改了它的代码, 使它能够工作了。 另外, deplate 还可以使用 highlight 语法加亮模块对网页中嵌入的其它语言代码进行上色, 虽然功能不是很强, 但在普通情况下基本够用, 感兴趣的朋友可以看这里, 感谢 magictable 来信指出这个问题。
另外, 在 VIM7 下使用语法加亮时还会面临一个问题: 有的文件格式的语法插件里定义了折叠, 如 viki 文件、 tex 文件等, 这些文件在 VIM 中打开后, 会被折叠起来。 在 VIM6 中, 折叠是发生在染色之后的, 因此能够得到正常的染色结果, 而 VIM7 折叠发生在染色之前, 这样染色得到的结果里就之后 folder 了, 看不到任何内容。 为了避免这个现象, 我们在调用 setf #{syntax} 之后, 需要再调用一次 normal zR 把所有折叠展开。
将 /usr/local/lib/ruby/site_ruby/1.8/deplate/mod/code-gvim.rb 修改为滇狐所写的模样即可。 需要注意的是, 滇狐的 .vimrc 中定义了自动修改时间戳的 autocommand, 它会和 code-gvim 冲突, 因此滇狐在下面的代码中调用了 NoAutoTimeStamp。 如果你不使用滇狐定义的 AutoTimeStamp 的话, 这里就不要调用 NoAutoTimeStamp 了, 否则会出错。 由于 Windows 下的 deplate 是一个打包后的 exe, 无法修正相应的插件, 所以滇狐只能 Bless 在 Windows 下受苦的孩子……
# code-gvim.rb
# @Author: Thomas Link (samul AT web.de)
# @Website: http://deplate.sf.net/
# @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
# @Created: 2006-03-01 09:34:00 26-Feb-2005.
# @Last Change: 2006-03-01 09:34:00
# @Revision: 0.93
#
# = Description
# This module provides a specialized syntax highlighter using gvim. Adds
# Deplate::Regions::Code#gvim_to_html.
#
# = Usage
# = TODO
# = CHANGES
require 'fileutils'
require 'tmpdir'
class Deplate::Regions::Code
add_highlighter(nil, "html", :gvim_to_html)
add_highlighter(nil, "htmlslides", :gvim_to_html)
add_highlighter(nil, "htmlsite", :gvim_to_html)
def gvim_to_html(syntax, style, text)
unless @deplate.options.allow_external
return
end
gvim = %{#{Deplate::External.get_app('gvim')} \
-f +"syn on" +"setf #{syntax}" \
+"colorscheme #{style || "default"}" +"normal zR" \
+"run! syntax/2html.vim" \
+"NoAutoTimeStamp" \
+"wq" +"q" \
deplateGvim}
@deplate.in_working_dir(Dir.tmpdir) do
FileUtils.rm("deplateGvim.html") if File.exist?("deplateGvim.html")
Deplate::External.write_file(self, "deplateGvim") \
{|io| io.puts(text)}
IO.popen(gvim) {|io| puts io.gets until io.eof }
if File.exist?("deplateGvim.html")
rv = [%{<div class="code">}]
File.open("deplateGvim.html") do |io|
until io.eof?
line = io.gets
line.chomp!
rv << line if line =~ /^<pre>$/ .. \
line =~ /^<\/pre\>$/
end
end
rv << %{</div>}
return rv.join("\n")
else
log("Error when running gvim", :error)
end
end
return nil
end
end
在开始编写我们的 ViKi 之前, 我们先确认一下 ViKi 和 deplate 是否都已经正确安装了。 如果安装没有成功的话, 请回到本文开头, 根据提示重新安装, 直到成功为止。
新建一个空白的文本文件, 叫 hello.viki, 然后用 gvim 打开它, 在 Normal 模式下输入:
:set ft?
如果 gvim 的状态栏上显示:
filetype=viki
说明 ViKi 安装成功。
在 hello.viki 中写入“this is a test!”, 然后使用“:wq”存盘退出, 在命令提示符下进入 hello.viki 所在目录, 输入以下命令:
deplate hello.viki
回车后等待命令执行完毕, 然后看看当前目录下是否出现 hello.html 文件。 用浏览器打开 hello.html, 看看其中是否出现“this is a test!”字样。 如果这两步都正常的话, 说明 deplate 已经正确安装。