Linux-vim
vim简介
vi:Visual Interface 文本编辑器
文本编辑种类行编辑器:sed
全屏编辑器:nano vi
vim –vi improved
其他编辑器
gedit 一个简单的图形编辑器
gvim 一个vim编辑器图形版
命令:vim [option]...file
选项:
+#: 打开文件后,让光标处于第#行的行首,+默认行尾
+/pattern: 打开文件后,让光标处于第一个被正则表达式模式匹配的行的行首
-b file: 二进制方式打开文件
-d file file2...:比较多个文件
-m file: 只读打开文件,不能修改,避免误操作
ex file或vim -e:直接进入ex模式
vim的三种模式及应用
命令模式:默认模式,移动光标,剪切、粘贴文本
ZZ:保存退出
ZQ:不保存退出
字符间跳转:
h:左
l:右
j:下
k:上
单词间跳转:
w:下一个单词词首
e:当前或下一个单词的词尾
b:当前或前一个单词的词首
#cmd:由#指定一次跳转的单词数
当前页跳转:
H:页首
M:页中间行
L:页底
行首行尾跳转:
^:跳转至行首的第一个非空白字符
0:跳转至行首
$:跳转至行尾
行间移动:
#G:跳转至由#指定的行,支持扩展命令
G:最后一行
1G,gg:第一行
句间移动:
):下一句
( :上一句
段落间移动:
}:下一段
{:下一段
翻屏操作
Ctrl+f:向文件尾部翻一屏
Ctrl+b:向文件尾部翻一屏
Ctrl+d:向文件尾部翻一屏
Ctrl+u:向文件尾部翻一屏
字符编辑:
x:删除光标出的字符
#x:删除光标出起始的#个字符
xp:交换光标所在处前后字符换位置
~:转换大小写
J:删除当前行后的换行符,将两行合并成一行
替换命令
r:替换光标所在处的字符
R:切换成replace模式
删除命令:d+移动选项,支持#定数
d:结合光标跳转字符,实现范围删除
d$:删除到行尾
d^:删除到非空行首
d0:删除到行首
dd:删除光标所在行
D:从当前光标位置一直删除到行尾,留空行,等同于d$
复制命令:y+移动命令,支持#定数
Y:复制整行
yy:复制行
粘贴
p:缓冲区为整行,则粘贴在光标所在行下方否则,粘贴在当前光标所在处的后面
P:缓冲区为整行,则粘贴在光标所在行上方否则,粘贴在当前光标所在处的前面
改变替换:c+移动命令,支持#定数
修改后切换成插入模式
cc:删除当前行并输入新内容,相当于S
C:删除当前光标到行尾,并切换成插入模式
撤销更改
u:撤销最近的更改
#u:撤销之前多次更改
U:撤销光标在这行后所有此行的更改
ctrl -r:重做最后的撤销更改
.:重复前一个操作
n.:重复前一个操作n次
命令模式其他操作:
1:#num+i+string [esc] +p
粘贴string字符串#次
2:<开始位置><选项><结束位置>
选项 y:复制
d:删除
gU:变大写
gu:变小写
插入模式:修改文本
i:光标处开始编辑
I:光标跳到行首开始编辑
a:光标往后一个字符开始编辑
A:光标跳到行尾开始编辑
o:向下新建行开始编辑
O:向上新建开始编辑
扩展命令模式:命令模式输入[:]进入扩展命令模式
wq:存盘退出
x:保存退出
q:没有改动直接退出
q!:改动不想保留,直接退出
!cmd:在不退出vim情况下执行命令
r!cmd:读入命令输出到vim
r+filename:将文件复制到当前vim中
w+filename:写入文件到指定地方
地址界定
格式:选项+编辑命令
选项:start_pos,end_pos支持正则表达式
#:具体第#行,例如2表示第2行
#,#:从左侧#表示起始行,到右侧#表示结尾行
#,+#:从左侧#表示的起始行,加上右侧#表示的行数,如2,+3表示2到5行
.:表示当前行
$:最后一行.,$-1当前到倒数第二
%:全文,相当于1,
编辑命令:
d:删除
y:复制
w file:将范围内的行另存至指定文件
r file:在指定位置插入指定文件
查找
命令匹配
/pattern :从当前光标所在处向文件尾部查找
?pattern:从当前光标所在处向文件首部查找
结果查看
n:与命令同向搜索
N:与命令反向搜索
替换
格式:
s/查找的内容/替换为的/修饰符
备注:
1、查找的内容可使用模式,替换内容不能使用模式,但可以使用后项引用,也可以使用&引用前
面查找的整个内容
2、分隔符/可以替换,如@,#,防止特殊写法
修饰符:
i:忽略大小写
g:全局替换,默认情况每一行只替换第一次出现的
gc:每次替换前询问
vim的寄存器
具名与无名寄存器:
26个具名的寄存器和1个无命名寄存器,常存放不同剪贴版内容,可以不同会话之间共享。
用法: [数字] [单个双引号] [寄存器] [命令]
1、具名寄存器名称以[a...z]单个小写字母表示
2、不加寄存器名称,将使用无命名寄存器
例如:3"tyy表示复制3行到t寄存器
"tp表示将寄存器内容粘贴
数字寄存器
0-9,缓存最近操作的内容,0寄存器缓存最近一次复制的内容,1-9缓存最近9次删除的内容用法:
也是最常用的 从0-9。 如果不指定寄存器的名字,那么删除的内容,vim默认是存到 1 ,>>>复制内容是存到 0 号寄存器。 如果继续删除,那么原来 1 的内容就转到 2,类推,当删>>>除超过9的时候, 原先的 8号数字寄存器就转到9, 原先9的数字寄存器内容就会丢失。
格式: [单个双引号] [数字] [命令]
编辑二进制文件
格式: vim -b binaryfile
用法: 扩展命令模式下输入以下命令
%!xxd: 将文件转换为可读的十六进制
%!xxd-r: 转换回二进制
可视化模式激活方式
模式类型 | 激活方式 | 选择效果 |
---|---|---|
字符文本 | v(小写) | 逐个字符选择 |
行文本 | V(大写) | 逐行选择文本 |
块文本 | ctrl+v(小写) | 按照块的方式选择 |
用法:
可视化键可与移动键结合使用被选择的文字可被删除、复制、变更、过滤、搜索、替换等多文件模式
使用vim一次打开多个文件
格式:vim file1 file2 file3...
用法:扩展命令模式下输入以下命令
next: 下一个
prev: 前一个
first: 第一个
last: 最后一个
wall: 保存所有
qall: 退出所有
wqall: 保存退出所有
使用多个窗口
多文件分割
vim -o|-O file1 file2...
参数:
-o:水平分割
-O:垂直分割
命令模式下:
ctrl+w:窗口间切换
单文件窗口分割
命令模式下
ctrl+w,s:水平分割
ctrl+w,v:垂直分割
ctrl+w,q:取消相邻窗口
ctrl+w,o:取消全部窗口
扩展命令模式下
wqall:退出
定制vim的工作特性
配置文件:永久有效
全局:/etc/vimrc
个人:~/.vimrc
扩展模式:当前vim进程有效
启用 | 禁用 | 效果 |
---|---|---|
set nu | set nonu | 行号 |
set ic | set noic | 忽略大小写 |
set ai | set noai | 自动缩进 |
set si | set nosi | 智能缩进 |
set hesearch | setnohlsearch | 高了搜索 |
syntax on | syntax off | 语法高亮 |
set list | set nolist | 显示tab、^I、$ |
set textwidth=65 | set wrapmargin | 设置文本宽度 |
set cursorline | set no cursorline | 光标表识线 |
set paste | set nopaste | 复制保留格式 |
set ff=dos | 启用windows格式 | |
set ff=unix | 启用Unix格式 |