瑞士军刀VIM-使用笔记
前言
----
vi/vim这把瑞士军刀,入门有点难,但越用越好用,博大精深.这里记录了我的使用笔记,备忘.
About VIM
----------
V1.默认字符编码为utf8,打开使用gb2312编码的文件,中文全为乱码,如何恢复正常显示?
输入 edit ++enc=cp936
V2.如何在vim系统中执行命令?
输入 !cmd
V3. 使用vim直接打开并编辑.*gz文件,而无须解压,读取,编辑,再压缩.
压缩文件的支持是通过plugin
vim ls-lrR.txt.gz
V4. 如何Vim支持语法加亮?
一劳永逸的方法,在~/.vimrc中增加如下语句
syntax on
临时性的方法, 输入命令:syntax on
V5. Vim如何在结构文档中快速切换,比如 C语言{ }块之间切换.
输入在{}之间,输入%即可
V6. 如何让Vim记下我的编辑状态,以便下次快速恢复工作?
输入 :mksession file_name_your_session
V7. 如何让Vim告诉你编辑文件的字节数,字数,当前位置信息?
输入 g CTRL_G
V8. 输入help,打开了帮助窗口,如何快速关闭?
输入CTRL-W ,然后再输入CTRL-Q,
或者输入CTRL-W q
V9. 我要每天编辑日志,我不想去输入日期与时间,该怎么办?
现要如这样的日期形式Mon Sep 19 23:19:03 CST 2005,简单,定义
一个快捷键F2,在vim中做这样一个映射
:map <F2> gg:read !date<CR>
V10. 如何使用Vim改变文本文件的编码?
比如,原有1个文档为utf-8编码的,现在要将它改为cp936编码,可用如下指令
:set fileencoding=cp936
然后再保存文件:w
V11. 如何将vim记住我的配置选项(比如默认的编码方式,文件类型等)?
请将你的配置命令写到~/.vimrc配置脚本文件中
V12. 如何查看当前编辑的C/C++源文件所有include文件路径?
输入:checkpath
V13. 如何保存全局的配置选现(对所有用户都可用)?
先输入:version, 查看系统vimrc配置文件的值
再编辑系统vimrc配置文件,加入你想要vim执行的命令
V14. 如何快速复制Buffer中的一行文字?
输入yy先记录到缓冲区, 移动光标到想要粘贴处,按p
V15. 如何利用宏命令,生成数字顺序列表?
1. Create the first list entry, make sure it starts with a number.
2. qa - start recording into buffer 'a'
3. Y - yank the entry
4. p - put a copy of the entry below the first one
5. CTRL-A - increment the number
6. q - stop recording
7. <count>@a - repeat the yank, put and increment <count> times
V16. 如何实现文本的折叠(Fold)?
自动Fold,假设你的文件是C源文件,输入
:set foldmethod=indent
:set foldenable
手动Fold,选中你要折的行,在Normal模式下
输入命令 zf
当Fold创建后,移动光标到Fold所在行
输入 zo, 打开相应的Fold
zc, 关闭相应的Fold
zM, 关闭文件中所有的Fold
zR, 打开文件中所有的Fold
za, 自动打开或关闭相应的Fold
V17. 如何查看当前文件中的字,字符个数?
输入g CTRL-G 即可,所有字节数按UTF-8的形式进行计数.
V18. 如何在Visual模式下快速搜索当前选中的文字?
为了不改变用户使用习惯,我们依然沿用*和#这两键
vnoremap * y/<C-R>"<CR>
vnoremap # y?<C-R>"<CR>
注: <C-R>指令插入命名寄存器的内容
V19. 如何在源代码中不同块/段落间来回跳跃?
输入 { , 前进至上一段落
输入 } , 前进至后一段落
V20. 如何文本中的TAB转化为固定长度的空格?
输入 :set expandtab
输入 :set tabstop=4
输入 :retab
V21. vim中paste剪贴板中的数据如何让它不缩进,保持原格式?
paste时,输入的文本大多会包含换行字符,还有一些特殊字符,vim会自动对文本缩进,并
且自动换行等,为了避免这些智能选项的影响,可以把paste开关打开
输入 :set paste
补充几个:
gg 到文件首
gd 到变量声明
gg=G 全篇自动缩进 , =G 单行缩进
K(shift+k) man
crl+] 函数原型处 crl+t 回 ( ctags )
ctl+p 自动补全( 编辑状态 )
:X 加密保存( 要输入密码 )