[分享][原创]瑞士军刀VIM-使用笔记

Vim、Emacs配置和使用
回复
头像
fzlug
帖子: 38
注册时间: 2007-02-25 14:22
来自: fuzhou
联系:

[分享][原创]瑞士军刀VIM-使用笔记

#1

帖子 fzlug » 2007-11-07 23:14

前言
----
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
头像
HuaChong
帖子: 493
注册时间: 2006-09-12 17:10

#2

帖子 HuaChong » 2007-11-11 20:07

8错8错,支持一下,上些天刚刚看了vim tutor,编辑器太强大了,linux越用越爽!
头像
iblicf
帖子: 3766
注册时间: 2007-01-15 17:15

#3

帖子 iblicf » 2007-11-11 21:54

补充几个有趣有用的 :)

gg 到文件首
gd 到变量声明
gg=G 全篇自动缩进 , =G 单行缩进
K(shift+k) man
crl+] 函数原型处 crl+t 回 ( ctags )
ctl+p 自动补全( 编辑状态 )
:X 加密保存( 要输入密码 )
kevinzhang
帖子: 66
注册时间: 2007-12-05 20:20

#4

帖子 kevinzhang » 2007-12-12 21:42

VIM是我从04年开始,唯一的文本和代码编辑器,太爽了……
seangg
帖子: 61
注册时间: 2005-11-20 21:12

#5

帖子 seangg » 2007-12-21 8:30

kevinzhang 写了:VIM是我从04年开始,唯一的文本和代码编辑器,太爽了……
输入英文的时候很顺手。
总感觉输入中文的时候得切换输入法,在正常模式和插入模式中切换。不知道有没有更好的方法。
回复