***普通设置***
:set incsearch 增量搜索
:set hlsearch 高亮搜索
:set nu 显示行号
tabnew 新建一个tab
verbose imap 查看imap下的C-v映射的命令
set winaltkeys=no 设置gVIM中不使用Alt键激活菜单
***光标移动***
==============
普通光标移动
--------------
^ 移动到第一个非空白字符
w 向前移动一个单词
b 向后移动一个单词
0 移动到行首
$ 移动到行尾
33G 移动到33行
gg 移动到文件头
G 移动到文件尾
'. 移动到最后编辑的行
`. 移动到最后编辑的字符
'' 移动到上次跳转的位置
zt/zb/zz 分别移动光标所在行到屏幕顶部/底部/中间
H 移动光标到屏幕顶行
M 移动光标到屏幕中间
L 移动光标到屏幕最底部
光标/tag跳转
----------------
gf 打开当前光标所在文件
gd 跳转到光标所在tag的定义处
ctrl+w} 使用当前光标所处位置的标识符作为标签,执行 :ptag。生成预览窗口
***buffer & windows***
:bn 下一个buffer
:bp 上一个buffer
:bd 删除buffer
:bun 关闭窗口但不删除buffer
查找与替换
===========================
-------------------
如果置位 'incsearch',用 "/" 或 "?" 录入搜索模式而显示当前的匹配时,CTRL-L 会从当前匹配的末尾一次加一个字符。
:%s/old/new/gc 带提示的查找替换
(C-r) (C-w)写了开始查找的/后,就可以把光标下的词复制到command buffer处
gg=G 缩进文件
:mksession! your_session_name 可以儲存目前的session,! 是覆蓋之前的存檔
:source your_session_name 載入 session
文件粘贴
=========================
编辑
=========================
撤销分支:undolist 列出修改的分支
:undo 编号 撤销到某个分支
文本选择
===========================
v_at 选择一个外部标签
v_it 选择一个内部标签
v_a] 选择两个中括号[](包括)
v_i] 选择两个中括号之间的内容
参见 h: text-objects
可以和d,c等命令联合使用,如:
di" 删除引号之间的字符串
ci] 修改中括号([])之间的字符串
如果是VIM7以下版本,可以使用以下映射代替
nnoremap ci" T"ct"
nnoremap ca" F"cf"
if v:version < 700 ... endif
这个映射是无意中在这里http://vlog.blog32.fc2.com/blog-entry-19.html看到的.
其他技巧
=========================
转换成16进制
---------------
:%!xxd
转换回来
:%!xxd -r
参见:
:h hex
ga 显示当前字符的ASCII编码
C-r 读取特殊变量
C-rz读取寄存器z中的内容到当前插入点
C-r % 读取当前的文件名到插入点
C-r C-w 读取光标下的单词
h: c_CTRL-R@cn
h: i_CTRL-R@cn
特殊变量见:h cmdline-special
统计单词数量 :%s/pattern/&/g
重定向输出
---------------
参见:h redir
:redir > filename
:version
寄存器
-------------------
"dyw 引号(")开头表示使用寄存器,引号后面的第一个字母(a-z)为寄存器名称,再后面接着命令
"dp 把刚才使用("dyw)命令复制的单词粘贴出来
*是特殊的寄存器,表示当前的剪贴板?
寄存器参见h: registers
查看映射
-------------------
:verbose set history?
:scriptnames # list all loaded scripts & their location
:map # list maps
:functions # list functions
:ab # list abbreviations
脚本
==============================
保存文件后自动执行
:h BufWritePost
举例:
:autocmd BufWritePost *.c (你要执行的命令)
连接字符串使用点(".")
使用expand函数返回当前的路径,如:expand("%:p"),具体参见:h expand
使用tempname()函数返回当前的临时文件名(c:\docume~1\xx\xxaab.tmp)
有用的函数
---------------------------------------------------------------------
synID({lnum}, {col}, {trans}) *synID()*
返回数值,即当前窗口 {lnum} 行 {col} 列所在的语法 ID。
命令行
==================
C-D 列出所有匹配的列表
h:wildmenu
:h cmdline-completion "命令行补全
!{cmd} 运行外部命令
!start {cmd} 异步执行外部命令
语法高亮
=========================================
默认的组 h:highlight-groups
语法高亮的组 group-name
*** 帮助
:helptags ~/vim/doc 重新生成帮助文件的tags
:help add-local-help 添加更多的帮助
:help index
:help i_cmd 查找insert mode命令,比如:help i_Ctrl-y
:help :cmd 查找command-line命令,比如:help :s
:help 'option 查找选项,比如:help 'tabstop
:help options 可以找到所有的选项说明
:echo &tabstop 查看某一个选项的值
常用帮助
---------