视频教程: http://www.akae.cn/study/vim.html
参考网页:http://hegangus.blog.163.com/blog/static/63956884201051774418761/
http://www.followstars.cn/article.asp?id=65
1. 基本命令
显示行号:set nu
不显示行号: set nonu
到行首:0 或Home键
到行尾:$ 或End键
获取正在编辑文件的文件名 :file
将选中的字符变成小写:u
将选中的字符变成大写:U
将选中的字符变大小写反转:~
将选中的文字向右移一个TAB:>
将选中的文字向左移一个TAB:<
将选中的代码格式化:=
设置编码格式 :set fenc=utf-8
撤销
撤销前n步操作:undo n
撤消历史向前走:g+
撤消历史向后走:g-
复制当前行:yy
选中复制:v 方向键选中 y进行复制
粘贴:p
删除
x: 删除当前光标下的字符(dl的快捷命令)。
X: 删除当前光标之前的字符(dh的快捷命令)。
D: 删除自当前光标至行尾的内容(d$的快捷命令)。
dw: 删除当前光标至下一个word的开头。
db: 删除当前光标至前一个word的末尾。
diw: 删除当前光标所在的word(不包括空格)。
daw: 删除当前光标所在的word(包括空格)。
dG: 删除当前行至文件尾的内容。
dgg: 删除当前行至文件头的内容。
df: 加一个字母,删除光标到该字母之间的字符(限于当前行)
移动光标
w: 以单词为单位移动光标,3w来使光标移动3个单词的位置。同理,3j、3k等也是可以的。
b: 类似w,光标的移动方向与w相反。
e: 光标移动到下一个单词的末尾。
ge: 与e的作用也是类似的,只是光标的移动方向与e相反。
$、End: 将光标移动到本行的末尾, 接受计数命令,如3$的作用是移动到光标后第三行的末尾。
^: 将光标移动到当前行的第一个非空格字符。
0、Home:键的作用是将光标移动到本行的最前面。值得注意的是,^和0都是不支持计数命令的。
f: 之后加一个字母,就可以把光标定位到本行的下一个此字母所在的位置。
F: 类似f,只是搜索方向相反。它们都是支持计数命令的。可惜的是,这两个命令并不支持中文的搜索。
[number]加上G:跳转到指定行
gg: 直接跳转到文件最开始的那行。
[number]加上%:跳转到文件百分之多少的位置。
H(home)、M(middle)、L(last): 在当前这一屏幕上移动光标。
滚屏:那么ctrl+U和ctrl+D分别是向上和向下滚动半屏。而ctrl+E和ctrl+Y分别是向上和向下滚动一行。
zz: 将当前行置于屏幕中央
zt: 将当前行置于屏幕第一行
zb: 将当前行置于屏幕最后一行。
位置标记,使用m加上a-z这二十六个字母,当你需要跳转的时候,可以通过命令`加上你定义的标记实现。当你忘记自己定义的标记时,可以通过:marks命令查看
ctrl-e: 屏幕向上滚1行
ctrl-y: 屏幕向下滚1行
ctrl-u: 屏幕向上滚1/2屏
ctrl-d: 屏幕向下滚1/2屏
ctrl-f: 屏幕向上滚1屏
ctrl-b: 屏幕向下滚1屏
2. 查找替换命令
(1) :g/null/d
找到null的行并且删掉
(2) 简单替换表达式
替换命令可以在全文中用一个单词替换另一个单词:
:%s/four/4/g
“%” 范围前缀表示在所有行中执行替换。最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作,那么只要去掉%即可。
如果你有一个象 “thirtyfour” 这样的单词,上面的命令会出错。这种情况下,这个单词会被替换成”thirty4″。要解决这个问题,用 “\<” 来指定匹配单词开头:
:%s/\<four/4/g
显然,这样在处理 “fourty” 的时候还是会出错。用 “\>” 来解决这个问题:
:%s/\<four\>/4/g
如果你在编码,你可能只想替换注释中的 “four”,而保留代码中的。由于这很难指定,可以在替换命令中加一个 “c” 标记,这样,Vim 会在每次替换前提示你:
:%s/\<four\>/4/gc
(3) 删除多余的空格
要删除这些每行后面多余的空格,可以执行如下命令:
:%s/\s\+$//
命令前面指明范围是 “%”,所以这会作用于整个文件。”substitute” 命令的匹配模式是
“\s\+$”。这表示行末($)前的一个或者多个(\+)空格(\s)。替换命令的 “to” 部分是空的:”//”。这样就会删除那些匹配的空白字符。
(4) 匹配重复性模式
星号项 “*” 规定在它前面的项可以重复任意次。因此:
/a*
匹配 “a”,”aa”,”aaa”,等等。但也匹配 “” (空字串),因为零次也包含在内。星号 “*” 仅仅应用于那个紧邻在它前面的项。因此 “ab*” 匹配 “a”,”ab”,”abb”,”abbb”,等等。如要多次重复整个字符串,那么该字符串必须被组成一个项。组成一项的方法就是在它前面加 “\(”,后面加 “\)”。因此这个命令
/\(ab\)*
匹配: “ab”,”abab”,”ababab”,等等。而且也匹配 “”。
要避免匹配空字串,使用 “\+”。这表示前面一项可以被匹配一次或多次。
/ab\+
匹配 “ab”,”abb”,”abbb”,等等。它不匹配 后面没有跟随 “b” 的 “a”。
要匹配一个可选项,用 “\=”。 例如:
/folders\=
匹配 “folder” 和 “folders”。
(5) 指定重复次数
要匹配某一项的特定次数重复,使用 “\{n,m}” 这样的形式。其中 “n” 和 “m” 都是数字。在它前面的那个项将被重复 “n” 到 “m” 次 (|inclusive| 包含 “n” 和 “m”)。例如:
/ab\{3,5}
匹配 “abbb”,”abbbb” 以及 “abbbbb”。
当 “n” 省略时,被默认为零。当 “m” 省略时,被默认为无限大。当 “,m” 省略时,就表示重复正好 “n” 次。例如:
模式 匹配次数
\{,4} 0,1,2,3 或 4
\{3,} 3,4,5,等等
\{0,1} 0 或 1,同 \=
\{0,} 0 或 更多,同 *
\{1,} 1 或 更多,同 \+
\{3} 3
(6) 多选一匹配
在一个查找模式中,”或” 运算符是 “\|”。例如:
/foo\|bar
这个命令匹配了 “foo” 或 “bar”。更多的抉择可以连在后面:
/one\|two\|three
匹配 “one”,”two” 或 “three”。
如要匹配其多次重复,那么整个抉择结构须置于 “\(” 和 “\)” 之间:
/\(foo\|bar\)\+
这个命令匹配 “foo”,”foobar”,”foofoo”,”barfoobar”,等等。
再举个例子:
/end\(if\|while\|for\)
这个命令匹配 “endif”,”endwhile” 和 “endfor”。
3. 分割窗口
参考网页:http://hi.baidu.com/esta_pessoa/blog/item/0d274c097347ebad2fddd458.html
同时打开多个文件
上下窗口:vim -o file1 file2 file3 。。。
左右窗口:vim -O file1 file2 file3 。。。
在vim中新建文件分割窗口显示: :new(上下打开) :vnew(左右打开)
比较两个文件
终端打开:vimdiff file1 file2
vim中打开:diffsplit file 或vertical diffsplit file
]c 跳转到下一个差异点
[c 跳转到上一个差异点
折行:
:set foldenable 使能折行
zc: 关闭一个折行
zo: 打开一个折行
zM: 关闭所有的折行
zR: 打开所有的折行
手动更新修改高亮显示::diffupdate
消除差异
:dp 将当前窗口光标所在行put到另外一个窗口的对应行上,以消除差异
:do 将另外窗口光标所在行包含到当前窗口对应的行上,以消除差异
简单理解:dp就是把我的给你,do就是把你的给我
窗口操作
关闭窗口:close,ZZ,q,only
全部关闭:qall,wall(存盘退出)
移动窗口:调整文件顺序
ctrl-w K 会使当前窗口移动到上面并扩展到整屏的宽度。
ctrl-w H 把当前窗口移到最左边
ctrl-w J 把当前窗口移到最下边
ctrl-w L 把当前窗口移到最右边
切换窗口:hjkl 可以用方向键代替
ctrl-w h 跳到左窗口
ctrl-w j 跳到下窗口
ctrl-w k 跳到上窗口
ctrl-w l 跳到右窗口
ctrl-w t 跳到最顶上窗口
ctrl-w b 跳到最底下窗口
4. Vim显示行号、语法高亮、自动缩进的设置
在UBUNTU中vim的配置文件存放在/etc/vim目录中,配置文件名为vimrc
在Fedora中vim的配置文件存放在/etc目录中,配置文件名为vimrc
在终端 输入以下命令来编辑vimrc配置文件:
sudo vim /etc/vim/vimrc 或者 sudo gedit /etc/vim/vimrc
(1) 显示行号
在文件末端添加一新行,输入 set nu
(2)语法高亮
在文件中找到 "syntax on 这一行,去掉前面的双引号",双引号是注释的意思
(3)自动缩进
在文件末尾添加一行,输入 set autoindent
在添加一行,输入 set cindent
其中 autoindent 是自动缩进; cindent是特别针对 C语言语法自动缩进
注:如果设置好以上设置后,Vim没有作出相应的动作,那么请你把你的VIM升级到最新版,一般只要在终端输入以下命令即可:sudo apt-get install vim 整理一下自己原来所学的知识和工作中用的技术 骑驴找马