在这天地间,流传这两大神器的故事:听说Emacs是神的编辑器,而Vim是编辑器之神。正所谓,工欲善其事,必先利其器。今天就和你们分享一下关于编辑器之神Vim的传说。vim
1、Vim的历史
VI:Visual Interfaceapp
何为文本文件?编辑器
文本文件通常指只有字符原生编码构成的二进制计算机文件,与富文本相比,其不包含字样样式的控制元素,可以被最简单的文本编辑器直接读取学习
文本文件常见的格式?编码
ASCII、MIME、.txt、...spa
那么,何为文本编辑器?命令行
文本编辑器是计算机软件中的一种。主要用于用来编写和查看文本文件。code
文本编辑器的种类:教程
行编辑器:sed接口
全屏编辑器:nano、vi、vim
2、Vim编辑器的基本操做
VIM:模式化的编辑器
基本模式
编辑模式 (命令模式)
输入模式 (插入模式)
末行模式 (vim内置的命令行接口)
Note:打开的时候默认的模式是编辑模式
打开文件
# vim [OPTION]... FILE...
+#
:打开文件后,直接让光标处于第#行的行首
+/PATTERN
:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首;
模式转换
模式转换:
编辑模式 - - > 输入模式
i
:insert,在光标所在处前面插入;
a
:append,在光标所在处的后面插入;
o
:open,在当前光标所在行的下一行打开新行,并转换为输入模式;
I
:在当前光标所在行的行首输入;
A
:在当前光标所在行的行尾输入;
O
:在光标所在行的上一行打开一个新行,并转换为输入模式;
输入模式 - - > 编辑模式
ESC
编辑模式 - - > 末行模式
:
末行模式 - - > 编辑模式
ESC
关闭文件
:q
:退出
:!
:强制退出,丢弃作出的修改;
:wq
:保存退出;
:x
:保存退出;
:w /PATH/TO/SOMEWHERE
:当前编辑的文本保存到别的文件;
ZZ
:保存退出;
图示说明以下: (转载请注明出处)
字符间跳转:
h,j,k,l
h
:左
l
:右
k
:上
j
:下
#COMMAND
:跳转由#指定的个数的字符;
单词间跳转:
w
:跳转至下一个单词或后一个单词的词首;
e
:跳转至当前或下一个单词的词尾;
b
:跳转至当前或上一个单词的词首;
#COMMAND
:由#指定一次跳转的单词数;
行首行尾跳转:
^
:跳转至行首的第一个非空白字符;
0
:跳转至绝对的行首;
$
:跳转至绝对行尾;
行间移动:
#G
:跳转至由#指定行;
G
:跳转至最后一行;
1G
,gg
:跳转至第一行;
句间移动:
)
:跳转至下一个句子;
(
:跳转至上一个句子;
段落间移动:
}
:跳转至下一段
{
:跳转至上一段
字符编辑:
x
:删除光标处的单个字符;
#x
:删除光标处起始的#个字符;
xp
:交换光标所在处的字符及其后面字符的位置;
替换命令:
r
,replace
r
:替换光标所在处的字符;(单字符替换)
删除命令:
d
:删除命令,可结合光标跳转字符,实现范围删除;
d$
:删除至绝对行尾
d^
:删除至行首的第一个非空白字符
d0
:删除至绝对行首
dd
:删除光标所在行;
#dd
:向下删除#行;
粘贴命令:
(p
,put,paste)
p
:缓冲区中存储的若是为整行内容,则粘贴至当前光标所在行的下方;不然,则粘贴至当前光标所在处的后面;
P
:缓冲区中存储的若是为整行内容,则粘贴至当前光标所在行的上方;不然,则粘贴至当前光标所在处的前面;
复制命令:
y
,yank
y
:复制,工做行行为类似于d命令;
y$
:复制至绝对行尾
y0
:复制至绝对行首
y^
:复制至行首的第一个非空白字符
yy
:复制整行
#yy
:复制多行;
改变命令:
c
,change
c
:修改
编辑模式 - -> 输入模式
cc
:删除并输入新内容
#cc
:一次删除#行
3、其它编辑操做
v
:按字符选定
V
:按行选定
Note:常常结合编辑命令;
u
(undo):撤销此前的操做;
#u
:撤销指定次数的操做;
撤销此前的撤销:
Ctrl+r
重复前一个编辑操做:
.
4、翻屏操做
Ctrl+f
:向文件尾部翻一屏;
Ctrl+b
:向文件首部翻一屏;
Ctrl+d
:向文件尾部翻半屏;
Ctrl+u
:向文件首部翻半屏;
vim自带的练习教程:
vimtutor
5、vim的末行模式
内建的命令行接口;
特性:
(1). 地址定界
:start_pos,end_pos
#:
具体的第#行,例如:2表示第2行;
#,#
:从左侧#表示起始,到右侧#表示结束;
#,+#
:从左侧#表示的行开始,加上右侧#表示的行数;
.
当前行;
$
:最后一行;
%
:全文;至关于(1,$)
/pat1/,/pat2/
:表示从第一次被pat1匹配到的行开始,一直到pat2匹配到的行结束
使用方式:
后跟一个编辑命令:
d
:删除指定范围的内容
y
:复制指定范围的内容
w /PATH/TO/SOMEWHERE
:将范围内的行另存至指定文件中;
r /PATH/FROM/SOMEFILE
:在指定位置插入指定文件中的全部内容;
(2). 查找
/PATTERN
:从当前光标所在处向文件尾部查找
?PATTERN
:从当前光标所在处向文件首部查找
n
:与命令同方向;
N
:与命令反方向;
(3). 查找并替换
s
:在末行模式下完成查找替换操做
s/要查找的内容/替换为的内容/修饰符
要查找的内容:可以使用模式;
替换为的内容:不能使用模式,但可使用1, 2, ...等后向引用符号;好可使用"&"
引用前面查找时查找到的整个内容;
修饰符:
i
:忽略大小写
g
:全局替换;默认状况下,没一行只替换第一次出现的内容;
查找替换中的分隔符/
可替换为其它字符,例如:
s@@@
s###
## 6、vim的文件模式
vim FILE1 FILE2 FILE3 ...
:next
切换至下一个文本
:prev
切换至前一个文本
:first
切换至前一个文本
:last
切换至最后一个文本
:wall
保存全部
:qall
退出全部
vim -o|-O FILE1 FILE2 ...
-o
:水平分割
-O
:垂直分割
在窗口间切换:Ctrl+w,Arrow
Ctrl+w,s
:split,水平分割
Ctrl+w,v
:vertical,垂直分割
配置文件:(永久有效)
全局:/etc/vimrc
我的:~/.vimrc
(默认不存在,须要本身建立)
末行:(当前vim进程有效)
(1) 行号:
显示:set number
,简写为:set nu
取消显示:set nonumber
,简写为:set nonu
(2) 括号匹配:
匹配:set showmatch
,简写为:set sm
取消匹配:set nosm
(3) 自动缩进:
开启:set ai
禁用:set noai
(4) 高亮搜索
开启:set hlsearch
禁用:set nohlsearch
(5) 语法高亮
开启:syntax on
禁用:syntax off
(6) 忽略字符大小写
启用:set ic
禁用:set noic
在末行模式下:help SUBJECT