一、概述
1.1简介
Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。
vim 则可以说是程序开发者的一项很好用的工具。
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。
连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。
1.2三种使用模式
1.3命令行模式(Command Mode)
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
i 切换到输入模式,以输入字符。
x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输入命令。如果是编辑模式,需要先退出编辑模式!ESC
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
移动光标的方法
(1)h或←
光标向左移动一个字符
(2)j或↓
光标向下移动一个字符
(3)k或↑
光标向上移动一个字符
(4)l或→
光标向右移动一个字符
(5)【Crtl】+【f】
屏幕“向下”移动一页
相当于【Page Down】按键
(6)【Crtl】+【b】
屏幕“向上”移动一页
相当于【Page Up】按键
(7)【Crtl】+【d】
屏幕“向下”移动半页
(8)【Crtl】+【u】
屏幕“向上”移动半页
(9)+
光标移动到下一行的非空字符(第一个)
(10)-
光标移动到上一行的非空字符(第一个)
(11)n【Space】
n代表数字,比如20。按下数字后再按空格,光标会向右移动这一行的n个字符
例如:20【Space】则光标会向后移动20个字符的距离
(12)0 (注意不是数字盘的数字)
数字键0:移动到该行的最前面的字符处
(13)^
与正则表达式类似,移动到该行的最前面的字符处
(14)$
与正则表达式类似,移动到该行的最后面的字符处
(15)H
光标移动到此时屏幕的最上面那一行的第一个字符
(16)M
光标移动到此时屏幕的中间那一行的第一个字符
(17)L
光标移动到此时屏幕的最下面那一行的第一个字符
(18)G
移动到改文件的最后一行
(19)nG或ngg
n为数字。移动到该文件的第n行
例如:20G或20gg则会移动到该文件的第20行
可配合:set nu
(20)gg
移动到该文件的第一行
(21)n【Enter】
n为数字。光标向下移动n行
搜索与替换方法
(1)/word
向光标之下寻找一个名为word的字符串
例如:要在文件中搜索Linux这个字符,输入/Linux即可
(2)?word
向光标之上寻找一个名为word的字符串
(3)n
为按键n。代表“重复前一个搜索动作”
(4)N
为按键N。与n相反,为“反向”进行前一个搜索
(5):n1,n2/word1/word2/g
n1、n2为数字。在第n1行到第n2行之间寻找word1这个字符串,并将该字符串替换为word2
例如,在100行到200行之间寻找windows并替换为linux,为:100,200s/windowns/linux/g
(6):1,$/word1/word2/g或:%s/word1/word2/g
从第1行到最后一行寻找word1字符串,并替换为word2
(7):1,$%/word1/word2/gc
从第1行到最后一行寻找word1字符串,并替换为word2。在替换前进行询问
删除、复制和粘贴方法
(1)x、X
在一行当中,x为向后删除一个字符(delete)
X为向前删除一个字符(backspace)
(2)nx
n为数字。连续向后删除n个字符
例如:需要连续删除10个字符,则为10x
(3)dd
删除光标所在的那一行
(4)ndd
n为数字。删除光标所在的向下n行
例如:20dd就是删除20行
(5)d1G
删除光标所在到第一行的所有数据
(6)dG
删除光标所在到最后一行的所有数据
(7)d$
删除光标所在处,到该行的最后一个字符
(8)d0
删除光标所在处,到该行的最前面一个字符
(9)yy
复制光标所在的行
(10)nyy
n为数字。复制光标所在的向下n行
例如:20yy就是复制20行
(11)y1G
复制光标所在到第一行的所有数据
(12)yG
复制光标所在到最后一行的所有数据
(13)y0
复制光标所在处,到该行行首的所有数据
(14)y$
复制光标所在处,到该行行尾的所有数据
(15)p、P
p为将已复制的数据在光标下一行粘贴
P则为粘贴在光标所在行之前
例如,目前光标在第20行,且已经复制了10行的数据。此时按下p,那10行数据会粘贴在原本的20行之后,即从21行开始粘贴;此时若按下P,原来的第20行,会被推至第30行。
(16)J
将光标所在行与下一行的数据结合成一行
(17)c
重复删除多个数据
例如向下删除10行,10cj
j为方向
(18)u
复原前一个动作
(19)【Ctrl】+r
重做上一个动作
(20).
重复前一个动作
1.4编辑模式(Insert Mode)
在命令模式下按下i就进入了编辑模式。
在编辑模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
1. i、I
进入插入模式
i:从目前光标所在处插入
I:在当前所在行的第一个非空字符处开始插入
2. a、A
进入插入模式
a:从当面光标所在的下一个字符处开始插入
A:从当面光标所在行的最后一个字符处开始插入
3. o、O
进入插入模式
o:在当前光标所在的下一行处插入新的一行
O:在当前光标所在的上一行处插入新的一行
4. r、R
进入替换模式
r:之后替换光标所在的那一个字符一次
R:一直替换光标所在字符,直至按下【ESC】为止
5.【ESC】
退出编辑模式,回到命令行模式
1.5底行模式(Last Line Mode)
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
q 退出程序
w 保存文件
按ESC键可随时退出底线命令模式。
(1):w
将编辑的数据写入硬盘中
(2):W
若文件属性为“只读”时,强制写入该文件
但是,成功与否,与权限相关
(3):q
离开vim
(4):q!
若曾修改过文件,又不想保存,使用!强制退出且不存储文件
(5):wq
保存并离开
若为:wq!,则为强制保存并离开
(6)ZZ
若文件没有更改,则不存储离开
若文件已被更改,则存储后离开
(7):w 【filename】
将编辑的数据存为另一个文件
类似于“另存为”
(8):r 【 filename】
在编辑的数据中,读入另一个文件的数据
即将【filename】这个文件的内容加到光标所在行的后面
(9):n1,n2 w 【filename】
将n1到n2行的内容保存为filename这个文件
(10):! command
暂时离开vim,到Shell环境下执行command并显示结果
例如,:! ls /home,即可在vim当中查看/home下以ls输出的信息
1.6vim环境的变更
(1):set nu
显示行号
设定之后,会在每一行的前缀显示该行的行号
(2):set nonu
与set nu相反,为取消行号