开发者学堂课程【Linux文本处理、正则表达式与Vim:Vim 基本操作】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/592/detail/8354
Vim 基本操作
内容介绍
一、 命令模式操作
二、 命令模式
三、 扩展命令模式
四、 Vim的寄存器
五、 标记和宏(macro)
六、 编辑二进制
七、 可视化模式
八、 多文件模式
九、 使用多个“窗口”
十、 定制 vim 的工作特性
一、命令模式操作
◆字符编辑:
x: 删除光标处的字符
#x:删除光标处起始的 # 个字符
xp:交换光标所在处的字符及其后面字符的位置
~:转换大小写
J:删除当前行后的换行符
◆替换命令(r, replace)
r:替换光标所在处的字符
R:切换成 REPLACE 模式
◆删除命令:
d:删除命令,可结合光标跳转字符,实现范围删除
d$:删除到行尾
d^:删除到非空行首
d0:删除到行首
dw:
de:
db:
#COMMAND
◆dd:删除光标所在的行
#dd:多行删除
◆D:从当前光标位置一直删除到行尾,等同于d$
◆复制命令(y, yank):
y:复制,行为相似于d命令
y$
y0
y^
ye
yw
yb
#COMMAND
◆yy:复制行
#yy:复制多行
◆Y:复制整行
◆粘贴命令(p,paste):
p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴
至当前光标所在处的后面
P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面
◆改变命令(c, change)
c:修改后切换成插入模式
◆命令模式-->插入模式
c$
c^
c0
cb
ce
cw
#COMMAND
◆cc:删除当前行并输入新内容,相当于S
#cc
◆C:删除当前光标到行尾,并切换成插入模式
二、命令模式
(1)操作文本
(2)命令模式
◆100iwang [ESC] 粘贴 "wang" 100次
< command>
Command:
y 复制、d 删除、gU 变大写、gu 变小写
例如 0y$ 命令意味着:
0→先到行头
y→从这里开始拷贝
$→拷贝到本行最后一一个字符
ye 从当前位置拷贝到本单词的最后一个字符
di" 光标在”“之间, 则删除””之 间的内容
◆yi( 光标在(之间,则复制()之间的内容
vi[ 光标在[]之间,则选中[]之间的内容
◆dtx 删除字符直到遇见光标之后的第一一个 x 字符
◆ytx 复制字符直到遇见光标之后的第一一个 x 字符
扩展命令模式:地址定界
◆地址定界
:start pos,end pos
#具体第 # 行,例如2表示第2行
#,# 从左侧 # 表示起始行,到右侧 # 表示结尾行
#,+#从左侧 # 表示的起始行,加上右侧 # 表示的行数
:2,+3表示2到5行
. 当前行
$最后一行
.,$-1当前行到倒数第二行
%全文,相当于1,$
(3)命令模式:撤消更改
◆u 撤销最近的更改
◆#u 撤销之前多次更改
◆U 撤消光标落在这行后所有此行的更改
◆按 CtrI- r 重做最后的“撤消" 更改
◆.重复前一个操作
◆n. 重复前一个操作 n 次
三、扩展命令模式
(1)扩展命令模式:地址定界
◆/pat1/,/pat2/
从第一次被 pat1 模式匹配到的行开始,一直到第一次被 pat2 匹配到的行结束
#,/pat/
/pat/,$
◆使用方式:后跟一个编辑命令
d
y
w file: 将范围内的行另存至指定文件中
r file: 在指定位置插入指定文件中的所有内容
命令模式:查找
◆查找
/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向
(2)扩展命令模式:查找并替换
◆s: 在扩展模式下完成查找替换操作
格式: s/ 要查找的内容/替换为的内容/修饰符
要查找的内容:可使用模式
替换为的内容:不能使用模式原但可以使用\1,\2,…等后向引用符号;还可
以使用 "&”引用前面查找时查找到的整个内容
修饰符:
i: 忽略大小写
g: 全局替换;默认情况下,每一行只替换第一次出现
gc: 全局替换,每次替换前询问
◆查找替换中的分隔符/可替换为其它字符,例如
s@/etc@/var@g
s#/boot#/#i
练习:
◆1、复制 /etc/profile 至 / tmp/ 目录, 用查找替换命令删除 /tmp/profile 文件中的行首的空白字符
2、复制 /etc/rc.d/init.d/functions 文件至 /tmp 目录, 用查找替换命令为 /tmp/functions 的每行开头为空白字符的行的行首添加一个 # 号
四、vim 的寄存器
◆有26个命名寄存 器和1个无命名寄存器,常存放不同的剪贴版内容,可以不同会话间共享
◆寄存器名称 a,b,...z 格式:”寄存器放在数字和命令之间
如: 3"tyy 表示复制3行到t寄存器中
"tp 表示将t寄存器内容粘贴
◆未指定,将使用无命名寄存器
◆有10个数字寄存器,用0,1,..9表示,0存放最近复制内容,1存放最近删除内容。当新的文本变更和删除时,1转存到2,2转存到3,以此类推。数字寄存器不能在不同会话间共享
五、标记和宏(macro)
l ma 将当前位置标记为 a, 26个字母均可做标记,mb、mc 等等;
l ‘a 跳转到 a 标记的位置;实用的文档内标记方法,文档中跳跃编辑时很有用
l qa 录制宏 a, a 为宏的名称
l q 停止录制宏,
l @a 执行宏 a
l @@重新执行上次执行的宏
六、编辑二进制文件
◆以二进制方式打开文件
vim -b binaryfile
◆扩展命令模式下,利用 xxd 命令转换为可读的十六进制
:%!xxd
◆编辑二进制文件
◆扩展命令模式下,利用 xxd 命令转换回二进制
:%!xxd -r
◆保存退出
七、可视化模式
l 允许选择的文本块
l v面向字符
l V面向行
l ctrl-v 面向块
l 可视化键可用于与移动键结合使用:
l w) } 箭头等
l 突出显示的文字可被删除,复制,变更,过滤,搜索,替换等
八、多文件模式
l vim FILE1 FILE2 FILE3...
l :next 下一个
:prev 前一个
:first 第一个
:last 最后一个
:wall 保存所有
:qall 退出所有
:Wqall
九、使用多个"窗口”
l 多文件分割
l vim -o|-O FILE1 FILE2…
l -0:水平分割
l -O:垂直分割
l 在窗口间切换: CtrI+w, Arrow
l 单文件窗口分割: .
l Ctrl+w,s: split,水平分割
Ctrl+w,v: vertical,垂直分割
ctrl+w,q:取消相邻窗口
ctrI+w,0:取消全部窗口
: wqall退出
十、定制 vim 的工作特性
l 配置文件:永久有效
l 全局: /etc/vimrc
l 个人: ~/.vimrc
l 扩展模式:当前 vim 进程有效
l (1)行号
l 显示: set number,简写为 set nu
l 取消显示: set nonumber,简写为 set nonu
l (2)忽略字符的大小写
l 启用: set ic
l 不忽略: set noic
l (3)自动缩进
l 启用: set ai
l 禁用: set noai
l (4)智能缩进
l 启用: smartindent 简写 set si
禁用: set nosi
l (5)高亮搜索
l 启用: set hlsearch
l 禁用: set nohlsearch
l (6)语法高亮
l 启用: syntax on
l 禁用: syntax off
l (7)显示 Tab 和换行符 ^| 和 $ 显示
l 启用: set list
l 禁用: set nolist
l (8)文件格式
l 启用windows格式: set fileformat=dos
启用unix格式: set fileformat =unix
简写: set ff=dos|unix
l (9) 设置文本宽度
l set textwidth=65 (vim only)
l set wrapmargin=15
l (10)设置光标所在行的标识线
l 启用: set cursorline,简写 cul
l 禁用: set no cursorline
l (11)复制保留格式
l 启用: set paste
l 禁用: set nopaste