直接上干货!!!
世上有三种程序员,一种用Emacs,一种用vi,剩下的使用其他编辑器。
vi 通过vim脚本无限地扩展功能,使其成为了编辑器中的“神器”。
vim是从vi发展出来的一个文本编辑器。编辑、跳转及代码补全等方便编程地功能特别丰富,在类UNIX系统中被广泛使用。
vim和vi一样,都是有模式地编辑器:编辑模式和命令模式。由于区分了模式,导致vim的命令非常简洁。
而无模式的编辑器可能更容易上手,如Emacs,而有模式的编辑器上手的过程可能会比较慢。
vim用户手册详细地描述了vim的基础用法和进阶功能。读者可以在vim中输入“help”进入用户手册。
vim的两个基本模式是Normal模式和insert模式。
在normal模式下输入的每个字符都被视为一个命令。
而在insert模式下输入的字符都作为实际要输入的文本内容。
通常进入vim默认处于normal模式。
在normal模式下键盘的输入都是作为命令来对待的。命令的输入通常是不回显的,只显示执行的结果。
其他的任何模式都可以通过Esc键回到normal模式。如果vim以一声蜂鸣器回应你,那说明你已经在normal模式了。
在normal模式下通过a、A、i、I、o、O等命令即可进入insert 模式。
a 在光标所在的位置后输入
A在光标所在行的行末输入
i在光标所在位置前输入
I在光标所在行的行首输入
o在光标所在的那一行下面新增一行输入
O在光标所在的哪一行上面新增一行输入
除了上面的那两个基本模式外,vim还有两个很常用的模式:command-line模式和visual模式
command-line模式可以通过“/”(正向搜索)或“?”(反向搜索)或“:”(一般命令)按键从normal模式进入。
当输入“:”后,可以在窗口的底部观察到一个冒号,后面的光标会等待后续的输入。在后面输入命令后按enter键就会触发命令,并返回到normal模式。
vim默认是不显示行号的,通过键入“:set nu”命令就可以显示行号
visual模式在进行复制粘贴操作时非常快捷方便。
V 按行选择的visual模式 屏幕底部会有 VISUAL LINE的提示
v 按字符选择的visual模式 屏幕底部会有 VISUAL的提示
ctrl +v 按块选择的visual模式 屏幕底部会有VISUAL BLOCK的提示
normal模式是最基本的模式,而其他的模式都是从normal模式转移过去的。从其他各种模式返回到normal模式的
方法通常是按Esc键。为了提高效率应养成每完成某个操作之后就按一下Esc键回到normal模式的习惯。
vim -o 文件 文件 能够横向显示这两个文件
vim -O 文件 文件 能够纵向显示这两个文件
:sp 水平切分出一个窗口
:vsp 垂直切分出一个窗口
:wq 保存退出
光标的移动
在normal模式下,可以使用h(左),j(下),k(上),l(右)来移动光标 或者使用方向键
左移 20 使用20h 或者20方向左键 其他同理
翻页
ctrl +b 或者pgup键 向上翻页
ctrl+f 或者pgdn 向下翻页
建议熟练使用hjkl键来移动光标,因为可以灵活的单手操作,而且手不必离开打字区。
进阶的光标移动
0或者home 键 光标移至行首
^ 移至行首第一个非空白字符
$移植行尾
G 移至文档尾部(最后一行的第一个非空白字符处)
Gg 移至文档首部(第一行的第一个非空白字符处)
:n或者nG (跳转到某一行)
其他的感觉没什么用,不写了。
特殊的移动
} 移至下一个段落首
{ 一直上一个段落首
% 用于匹配‘{’、‘}’、‘[’、']'等
光标在‘(’时按%,光标就会跳到匹配的‘)’之上
vim下的复制、粘贴和删除
复制
yy 复制当前整行的内容到vim缓冲区
yw 复制当前光标所在位置到单词尾字符的内容到vim缓冲区,相当于复制一个单词
y$ 复制当前光标所在的位置到行尾的内容到缓冲区
y^ 复制当前光标所在位置到行首的内容到缓冲区
num+yy 5yy就是复制5行
num+yw 2yw就是复制两个单词
粘贴
p 将复制的数据粘贴在光标的下一行
P将复制的数据粘贴在光标的上一行
删除
x 删除光标处的单个字符
dd删除光标处的所在行
dw 删除当前字符到单词词尾的所有字符
num +x 3x就是删除光标处向右的3个字符
num+dd 5dd 是从当前行开始向下删除5行文本
vim 下的撤销和重复
所有的文本编辑工具都会带有撤销和重复两个命令
u 撤销
ctrl+v 重复
vim 下的查找和替换
vim的查找和替换功能主要在command-line 模式下完成的
查找
自上而下的查找:/+要查找的字符串,其中/代表从光标所在位置开始向下查找 n查找下一个,N查找下一个
自下而上的查找:?+要查找的字符串,其中?代表从光标所在位置开始向上查找
替换
:s/old/new 用new替换行中首次出现的old
:s/old/new/g 用new替换行中所有出现的old
:#,#s/old/new/g 用new替换从第#行到第#行出现的old
:%s/old/new/g 用new替换整篇中出现的old
如果替换的范围较大的时候,可以在所有命令尾部加一个c命令,强制用户对每个替换进行确认,
例如:s/old/new/c 或者:s/old/new/gc
当使用vim编辑某个文件时会生成一个临时文件,该文件以“.”开头以.swp扩展名结尾。正常退出时该文件会自动删除
如果意外退出如忽然断电,该文件不会删除。
vim 下的插件
这些插件提供了最实用的功能,使得vim变得更加实用。
Ctags、Taglist、Cscope、NERDTree
去做一个IDE吧