vim编辑器
简介:
vi:Visual Interface文本编辑器;
文本:ACSII,Unicode;
文本编辑器种类
行编辑器:sed
全屏编辑器:nano,vi
vim:vi improved;
使用方法:
vim:模式化的编辑器
基本模式
编辑模式,命令模式:可以输入很多快捷键;dd,yy,pp;
末行模式:内置的命令行接口,可以实现多种操作;
输入模式
打开文件
vim [options] [file…]
+#:打开文件时使光标直接定位到#行所在的位置;
+/PATTERN:打开文件后,使光标直接定位到第一个被前面模式所匹配的行的行首;
模式转换
编辑模式→输入模式:
a:在光标所在位置的后面开始输入;
i:在光标所在位置开始输入;
o:在光标所在位置的下一行的行首开始输入;
I:在当前光标所在行的行首开始输入;
A:在当前行光标所在行的行尾开始输入;
O:在光标所在位置的上一行的行首开始输入;
输入模式→编辑模式:Esc
编辑模式→末行模式:":"
末行模式→编辑模式:Esc
关闭文件:
q:退出文件;
q!:强制退出文件;
wq:保存并退出文件;
ZZ:保存并退出;
x:保存退出;
w /path/to/file:保存到另一个文件中;
光标跳转:
字符间跳转:
h:左移
j:下移
k:上移
l:右移
单词间跳转:
w:向前移动一个单词;光标在词首间移动;
e:向后移动一个单词;光标在词尾间移动;
b:向前移动一个单词;光标在词首间移动;
#command:支持跳转由#指定的个数的字符;
行首行尾跳转:
^:将光标移动到行首,首个非空白字符;
0:将光标移动到绝对行首;
&:将光标移动到行尾;
行间跳转:
#G:跳转至#所指定的行;
G:跳转至文尾;
gg:跳转至文首;
句间移动:
"(",")"
段落间移动:
"{","}"
vim的编辑命令:
字符编辑
x:删除光标所在位置的单个字符;
#x:删除光标起始的#个字符;
xp:交换前后字符;
删除命令
d:删除命令,可结合光标跳转字符,实现范围删除;
d^,d$,d0,db,de,dw
dd:删除光标所在的行;
#command:支持删除由#指定的单词数;比如:10dw;
#command;比如10dd:向下删除十行,包括光标所在行;
粘贴命令
p:粘贴命令,可以将缓存中的内容粘贴到文本中;
缓存区的内容如果为整行的,就会将内容粘贴至光标所在行的下一行;
如果为一部分行,则会粘贴至光标所在位置的后面;
P:粘贴命令,可以将缓存中的内容粘贴到文本中;
缓存区的内容如果为整行的,就会将内容粘贴至光标所在行的上一行;
如果为一部分行,则会粘贴至光标所在位置的前面;
复制命令
y:复制命令;用法;类似于删除命令“d”;
用法请参考上面的删除命令;
改变命令
c:执行以后自动由编辑模式切换到输入模式;
比如c$:会删除光标及其之后的内容然后转为输入模式;
cc:删除一行然后转为输入模式;
ce,cw,cb
r:替换光标所在位置的字符; 替换命令
#command:#r'String';
R:从光标开始位置连续替换;
可视化模式
v:按字符选定;
V:按行选定;
Note:常与编辑命令一起使用;
撤销此前的操作
u:撤销命令;
#u:一次撤销指定次数;
Ctrl+r:撤销此前的撤销的操作;
重复前一次的编辑操作:".";
翻屏操作
Ctrl+f:向文件尾部翻一屏;
Ctrl+b:向文件首部翻一屏;
Ctrl+u:向文件首都翻半屏;
Ctrl+d:向文件尾部翻半屏;
vim自带的练习教程:vimtutor;
vim中的末行模式:内建的命令行接口;
地址定界
#:具体的#行;
n,m:从第n行到第m行;
#,+n:从第#行到之后的n行;
".":当前行;
$:到文尾;最后一行;
.,$-1:从当前行到倒数第二行;
%:全文→1,$;
/pat1/,/pat2/:表示从第一次被模式1匹配的行到第一次被模式2匹配的行之间的内容;
#,/pat/
/pat/,$
使用方式:后跟一个编辑命令或保存命令;
d,y,p
w /path/to/file :将当前选中的内容另存为某个文件中;
r /path/from/somefile:从某处读取文件内容到当前文件中;
查找
/pattern:从当前光标所在位置向上查找;
?pattern:从光标当前所在位置向下查找;
n:与命令同方向,在所找到的字符间跳转;
N:与命令反方向,在所找到的字符间跳转;
查找并替换
s:在末行模式下完成查找替换操作;
s/被替换的内容/替换为的内容/修饰符
被替换的内容:可以使用模式匹配;
替换为的内容:不可以使用模式匹配,但是可以使用/1,/2,…等后向引用符号,及&符号引用前面匹配到的整个内容;
g:全局替换;默认不加g,则只改变每行中的第一个匹配到的字符内容;
i:忽略大小写;
使用方法:一般与地址定界结合使用;
如果使用"/"为分隔符时,所匹配的字符里面包含"/",则需要""转义;或者改用其他分隔符:@,#等;
多文件模式
vim [options] [file1,file2,…]
next:下一个;
prev:上一个;
first:第一个;
last:最后一个;
qall:退出所有文件;
wall:保存所有文件;
wqall:你懂的;
窗口分隔模式
vim -o files:水平分隔;
vim -O files:垂直分隔;
单文件窗口分隔:
Ctrl+w,s:水平分隔;
Ctrl+w,v:垂直分隔;
定制vim的工作特性
配置文件:永久有效
全局:/etc/vimrc
个人:~/.vimrc
末行模式:
当前vim进程内有效;
行号:
显示:set number 简写:set nu
取消显示:set nonumber 简写:set nonu
括号匹配:
匹配:set showmatch 简写:set sm
取消:set noshowmatch 简写:set nosm
自动缩进:
启用:set ai
禁用:set noai
高亮搜索:
启用:set hlsearch
禁用:set nohlsearch
语法高亮:
启用:syntax on
禁用:syntax off
忽略字符的大小写:
启用:set ic
不忽略:set noic
获取帮助:
末行模式:键入help;
注:根据马哥视频做的笔记,如有错误,欢迎指正;侵删