- A+
Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。
连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。
一、移动光标
命令 | 说明 |
---|---|
h | 上 |
j | 下 |
k | 左 |
l | 右 |
ctrl-e | 移动页面 |
ctrl-f | 上翻一页 |
ctrl-b | 下翻一页 |
ctrl-u | 上翻半页 |
ctrl-d | 下翻半页 |
w | 跳到下一个字首,按标点或单词分割 |
W | 跳到下一个字首,长跳,如end-of-line被认为是一个字 |
e | 跳到下一个字尾 |
E | 跳到下一个字尾,长跳 |
b | 跳到上一个字 |
B | 跳到上一个字,长跳 |
0 | 跳至行首,不管有无缩进,就是跳到第0个字符 |
^ | 跳至行首的第一个字符 |
$ | 跳至行尾 |
gg | 跳至文首 |
G | 调至文尾 |
5gg/5G | 调至第5行 |
gd | 跳至当前光标所在的变量的声明处 |
fx | 在当前行中找x字符,找到了就跳转至 |
; | 重复上一个f命令,而不用重复的输入fx |
* | 查找光标所在处的单词,向下查找 |
# | 查找光标所在处的单词,向上查找 |
二、删除复制
命令 | 说明 |
---|---|
dd | 删除光标所在行 |
dw | 删除一个字(word) |
d/D | 删除到行末x删除当前字符X删除前一个字符yy复制一行yw复制一个字y/Y 复制到行末 |
p | 粘贴粘贴板的内容到当前行的下面 |
P | 粘贴粘贴板的内容到当前行的上面 |
三、插入模式
命令 | 说明 |
---|---|
i | 从当前光标处进入插入模式 |
I | 进入插入模式,并置光标于行首 |
a | 追加模式,置光标于当前光标之后 |
A | 追加模式,置光标于行末 |
o | 在当前行之下新加一行,并进入插入模式 |
O | 在当前行之上新加一行,并进入插入模式 |
Esc | 退出插入模式 |
四、编辑
J 将下一行和当前行连接为一行
cc 删除当前行并进入编辑模式
cw 删除当前字,并进入编辑模式
c$ 擦除从当前位置至行末的内容,并进入编辑模式
s 删除当前字符并进入编辑模式
S 删除光标所在行并进入编辑模式
xp 交换当前字符和下一个字符
u 撤销
ctrl+r 重做
~ 切换大小写,当前字符
>> 将当前行右移一个单位
<< 将当前行左移一个单位(一个tab符)
== 自动缩进当前行
五、查找替换
/pattern 向后搜索字符串pattern
?pattern 向前搜索字符串pattern
"c" 忽略大小写
"C" 大小写敏感
n 下一个匹配(如果是/搜索,则是向下的下一个,?搜索则是向上的下一个)
N 上一个匹配(同上)
:%s/old/new/g 搜索整个文件,将所有的old替换为new
:%s/old/new/gc 搜索整个文件,将所有的old替换为new,每次都要你确认是否替换
六、退出编辑器
:w 将缓冲区写入文件,即保存修改
:wq 保存修改并退出
(:x) 保存修改并退出 -- ps:命令没有括号,因为不用括号会被编辑器转换为 所以加了括号
:q 退出,如果对缓冲区进行过修改,则会提示
:q! 强制退出,放弃修改
七、多文件编辑
vim file1.. 同时打开多个文件
:args 显示当前编辑文件
:next 切换到下个文件
:prev 切换到前个文件
:next! 不保存当前编辑文件并切换到下个文件
:prev! 不保存当前编辑文件并切换到上个文件
:wnext 保存当前编辑文件并切换到下个文件
:wprev 保存当前编辑文件并切换到上个文件
:first 定位首文件
:last 定位尾文件
ctrl+^ 快速在最近打开的两个文件间切换
:split[sp] 把当前文件水平分割
:split file 把当前窗口水平分割, file
:vsplit[vsp] file 把当前窗口垂直分割, file
:new file 同split file
:close 关闭当前窗口
:only 只显示当前窗口, 关闭所有其他的窗口
:all 打开所有的窗口
:vertical all 打开所有的窗口, 垂直打开
:qall 对所有窗口执行:q操作
:qall! 对所有窗口执行:q!操作
:wall 对所有窗口执行:w操作
:wqall 对所有窗口执行:wq操作
ctrl-w h 跳转到左边的窗口
ctrl-w j 跳转到下面的窗口
ctrl-w k 跳转到上面的窗口
ctrl-w l 跳转到右边的窗口
ctrl-w t 跳转到最顶上的窗口
ctrl-w b 跳转到最底下的窗口
八、多标签编辑
:tabedit file 在新标签中打开文件file
:tab split file 在新标签中打开文件file
:tabp 切换到前一个标签
:tabn 切换到后一个标签
:tabc 关闭当前标签
:tabo 关闭其他标签
gt 到下一个tab
gT 到上一个tab
0gt 跳到第一个tab
5gt 跳到第五个tab
九、执行shell命令
在命令模式下输入":sh",可以运行相当于在字符模式下,到输入结束想回到VIM编辑器中用exit,ctrl+D返回VIM编辑器
可以"!command",运行结束后自动回到VIM编辑器中
用“Ctrl+Z“回到shell,用fg返回编辑
:!make -> 直接在当前目录下运行make指令
十、VIM启动项
-o[n] 以水平分屏的方式打开多个文件
-O[n] 以垂直分屏的方式打开多个文件
十一、自动排版
在粘贴了一些代码之后,vim变得比较乱,只要执行gg=G就能搞定
十二、如何在vim中编译程序
在vim中可以完成make,而且可以将编译的结果也显示在vim里,先执行 :copen 命令,将结果输出的窗口打开,然后执行 :make
编译后的结果就显示在了copen打开的小窗口里了,而且用鼠标双击错误信息,就会跳转到发生错误的行。
十三、buffer操作
buffer状态
- (非活动的缓冲区)
a (当前被激活缓冲区)
h (隐藏的缓冲区)
% (当前的缓冲区)
# (交换缓冲区)
= (只读缓冲区)
+ (已经更改的缓冲区)
十四、 VIM 操作目录
1.打开目录
vim .
vim a-path/
2.以下操作在操作目录时生效
p,P,t,u,U,x,v,o,r,s
c 使当前打开的目录成为当前目录
d 创建目录
% 创建文件
D 删除文件/目录
- 转到上层目录
gb 转到上一个 bookmarked directory
i 改变目录文件列表方式
^l 刷新当前打开的目录
mf - 标记文件
mu - unmark all marked files
mz - Compress/decompress marked files
gh 显示/不显示隐藏文件( dot-files)
^h 编辑隐藏文件列表
a 转换显示模式, all - hide - unhide
qf diplay infomation about file
qb list the bookmarked directories and directory traversal history
gi Display information on file
mb
mc
md - 将标记的文件(mf标记文件)使用 diff 模式
me - 编辑标记的文件,只显示一个,其余放入 buffer 中
mh
mm - move marked files to marked-file target directory
mc - copy
mp
mr
mt
3.vim 中复制,移动文件
- mt - 移动到的目录
- mf - 标记要移动的文件
- mc - 移动/复制
- R 移动文件
4.打开当前编辑文件的目录
:Explore
:Hexplore
:Nexplore
:Pexplore
:Sexplore
:Texplore
:Vexplore