一、Vim编辑器的基本操作
1. 基本操作
-
VIM:模式化的编辑器
-
基本模式
-
编辑模式 (命令模式)
-
输入模式 (插入模式)
-
末行模式 (vim内置的命令行接口)
-
Note:打开的时候默认的模式是编辑模式
-
-
打开文件
-
# vim [OPTION]... FILE... -
+#:打开文件后,直接让光标处于第#行的行首 -
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首;
-
-
模式转换
-
模式转换:
-
:q:退出 -
:!:强制退出,丢弃做出的修改; -
:wq:保存退出; -
:x:保存退出; -
:w /PATH/TO/SOMEWHERE:当前编辑的文本保存到别的文件; -
ZZ:保存退出; -
ESC -
: -
ESC -
i:insert,在光标所在处前面插入; -
a:append,在光标所在处的后面插入; -
o:open,在当前光标所在行的下一行打开新行,并转换为输入模式; -
I:在当前光标所在行的行首输入; -
A:在当前光标所在行的行尾输入; -
O:在光标所在行的上一行打开一个新行,并转换为输入模式; -
编辑模式 – – > 输入模式
-
输入模式 – – > 编辑模式
-
编辑模式 – – > 末行模式
-
末行模式 – – > 编辑模式
-
关闭文件
-
-
图示说明如下: (转载请注明出处)
-
2. 光标跳转:
-
字符间跳转:
-
h:左 -
l:右 -
k:上 -
j:下
-
h,j,k,l -
#COMMAND:跳转由#指定的个数的字符;
-
-
单词间跳转:
-
w:跳转至下一个单词或后一个单词的词首; -
e:跳转至当前或下一个单词的词尾; -
b:跳转至当前或下一个单词的词首; -
#COMMAND:由#指定一次跳转的单词数;
-
-
行首行尾跳转:
-
^:跳转至行首的第一个非空白字符; -
0:跳转至绝对的行首; -
$:跳转至绝对行尾;
-
-
行间移动:
-
#G:跳转至由#指定行; -
G:跳转至最后一行; -
1G,gg:跳转至第一行;
-
-
句间移动:
-
):跳转至下一个句子; -
(:跳转至上一个句子;
-
-
段落间移动:
-
}:跳转至下一段 -
{:跳转至上一段
-
3. vim的编辑命令:
-
字符编辑:
-
x:删除光标处的单个字符; -
#x:删除光标处起始的#个字符; -
xp:交换光标所在处的字符及其后面字符的位置;
-
-
替换命令:
-
r,replace -
r:替换光标所在处的字符;(单字符替换)
-
-
删除命令:
-
#dd:向下删除#行;
-
d$:删除至绝对行尾 -
d^:删除至行首的第一个非空白字符 -
d0:删除至绝对行首
-
d:删除命令,可结合光标跳转字符,实现范围删除; -
dd:删除光标所在行;
-
-
粘贴命令:
-
(
p,put,paste) -
p:缓冲区中存储的如果为整行内容,则粘贴至当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面; -
P:缓冲区中存储的如果为整行内容,则粘贴至当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面;
-
-
复制命令:
-
y$:复制至绝对行尾 -
y0:复制至绝对行首 -
y^:复制至行首的第一个非空白字符 -
yy:复制整行
-
#yy:复制多行;
-
y,yank -
y:复制,工作行行为相似于d命令;
-
-
改变命令:
-
编辑模式 – -> 输入模式
-
c,change -
c:修改 -
cc:删除并输入新内容 -
#cc:一次删除#行
-
二、其它编辑操作
1.可视化模式
-
v:按字符选定 -
V:按行选定 -
Note:经常结合编辑命令;
2. 撤销此前的编辑:
-
u(undo):撤销此前的操作;-
#u:撤销指定次数的操作;
-
-
撤销此前的撤销:
-
Ctrl+r
-
-
重复前一个编辑操作:
-
.
-
三、翻屏操作
-
Ctrl+f:向文件尾部翻一屏; -
Ctrl+b:向文件首部翻一屏; -
Ctrl+d:向文件尾部翻半屏; -
Ctrl+u:向文件首部翻半屏; -
vim自带的练习教程:
-
vimtutor
-
四、vim的末行模式
-
内建的命令行接口;
-
特性:
-
(1). 地址定界
-
后跟一个编辑命令:
-
d:删除指定范围的内容 -
y:复制指定范围的内容 -
w /PATH/TO/SOMEWHERE:将范围内的行另存至指定文件中; -
r /PATH/FROM/SOMEFILE:在指定位置插入指定文件中的所有内容; -
:start_pos,end_pos -
#:具体的第#行,例如:2表示第2行; -
#,#:从左侧#表示起始,到右侧#表示结束; -
#,+#:从左侧#表示的行开始,加上右侧#表示的行数; -
.当前行; -
$:最后一行; -
%:全文;相当于(1,$) -
/pat1/,/pat2/:表示从第一次被pat1匹配到的行开始,一直到pat2匹配到的行结束 -
使用方式:
-
-
(2). 查找
-
n:与命令同方向; -
N:与命令反方向; -
/PATTERN:从当前光标所在处向文件尾部查找 -
?PATTERN:从当前光标所在处向文件首部查找
-
-
(3). 查找并替换
-
s/要查找的内容/替换为的内容/修饰符 -
查找替换中的分隔符
/可替换为其它字符,例如: -
i:忽略大小写 -
g:全局替换;默认情况下,没一行只替换第一次出现的内容; -
要查找的内容:可使用模式;
-
替换为的内容:不能使用模式,但可以使用\1, \2, …等后向引用符号;好可以使用
"&"引用前面查找时查找到的整个内容; -
修饰符:
-
s### -
s:在末行模式下完成查找替换操作
-
六、vim的文件模式
1. 多文件模式
-
vim FILE1 FILE2 FILE3 …
-
:next切换至下一个文本 -
:prev切换至前一个文本 -
:first切换至前一个文本 -
:last切换至最后一个文本 -
:wall保存所有 -
:qall退出所有
-
2. 窗口分隔模式
-
vim -o|-O FILE1 FILE2 …
-
-
-
-o:水平分割 -
-O:垂直分割 -
在窗口间切换:
Ctrl+w,Arrow
-
3. 单文件窗口分割:
-
Ctrl+w,s:split,水平分割 -
Ctrl+w,v:vertical,垂直分割
4. 定制vim的工作特性:
-
配置文件:(永久有效)
-
全局:
/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
-
5. 书籍推荐:《Vim-handbook-cn-72》
6. 获取帮助
-
在末行模式下:
help SUBJECT