vim基本用法
模式化编辑器
模式:
编辑模式: 命令模式
键盘操作常被理解为编辑命令
输入模式
末行模式: vim内置的命令接口,执行vim命令
打开文件
vim [option]... [file]...
模式转换:
编辑模式 --> 输入模式
i: 在光标所在处的前方转换为输入模式
a: 在光标所在处的后方转换为输入模式
o: 在光标所在行的下方新建一个空行并转换为输入模式
I: 行首
A: 行首
O: 光标所在行的上方新建一个空白行
输入模式 --> 编辑模式
Esc
编辑模式 --> 末行模式
:
末行模式 --> 编辑模式
ESC
退出文件:
:q! 不保存退出
:wq 保存退出
:x 保存退出
ZZ 不保存退出
编辑文本:
光标移动:
#{hjkl}: 跳#个字符
单词间移动:
w: 下一个单词词首
e: 当期单词或下一个单词词尾
b: 当前单词或前一个单词词首
行内移动
^: 行首第一个非空白字符
0: 绝对行首
$: 绝对行尾
行间移动
#G: 直接跳至第#行
G: 最后一行
编辑命令:
x: 删除光标所在处的字符
d: 删除命令
结合光标跳转字符使用,删除光标跳转范围内的字符
dd: 删除光标所在行
D: d$,删除光标以后的字符
注意: 最后一次删除的内容会被保存至缓存区
p: paste,粘贴
行级别:
p: 粘贴于当前行上方
P: 粘贴于当前行下方
小于行级别
p: 粘贴于当前光标所在行的后方
P: 粘贴于当前光标所在行的前方
y: yank,复制
结合光标跳转字符使用,复制光标跳转范围内的字符
Y: yy
c: change, 修改
结合光标跳转字符使用,修改跳转范围内的字符
先删除,再转换为输入模式
cc,C: 删除光标所在处的整行而后转换为输入
撤销操作:
u: undo,撤销
#u: 撤销最近的#次操作(50)
撤销此前的撤销: ctrl+r
重复前一条命令: .
末行模式:
行间跳转:
#: 指定行数
$: 最后一行
内容定界
startpos,endpos
#: 第#行
.: 当前行
$: 最后一行
%: 全文,相当于1,$
c,d,y等命令可以直接附加在地址范围后使用
w /path/to/somefile: 将选定范围内的内容保存至某文件中
r /path/from/sonmefile: 将指定的文件中的内容读取到指定位置
s/查找模式/要替换成的内容/gi
%s/echo/i/gi
查找模式:可以使用正则表达式
要替换成的内容: 不能使用模式,仅能使用引用
g: global,全行替换
i: 不区分大小写
引用匹配模式匹配到的所有内容可以用&
练习:
复制/etc/rc.d/init.d/functions至/tmp目录
替换/tmp/functions文件中的/etc/sysconfig/init为/var/log
:%s#/etc/sysconfig/init#/var/log#gi
练习:
1. 复制/etc/grub.conf至tmp目录,删除/tmp/grub.conf文件中的行首的空白字符
:%s#^[[:space:]]\{1,\}##gi
2. 复制/etc/rc.d/rc.sysinit至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#号
:%s/^\([[:space:]]\+\)/#\1/gi
:%s/^[[:space:]]\+/#&/gi
3. 删除/tmp/rc.sysinit文件中以#号开头,且后面跟了至少一个空白字符的行的行首的#号和空白字符
:%[email protected]^#[[:space:]]\{1,\}@@
4. 为/tmp/grub.conf文件的前三行的行首家#号
:1,[email protected]^@#@
5. 将/etc/yum.repos.d/CentOS-Media.repo文件中的enable=0和gpgcheck=0两行最后的0改为1
%[email protected]\(enable\|gpgcheck\)[email protected]\[email protected]
vim可视化模式
v: 光标走过的字符
V: 光标走过的行
文本查找:
用法同less命令
/pattern
?pattern
翻屏:
ctrl+f: 向文件尾部翻一屏
ctrl+b: 向文件首部翻一屏
ctrl+d: 向文件尾部翻半屏
ctrl+u: 向文件首部翻半屏
j: 向下走一行
k:想上走一行
多文件模式:
:next 下一个文件
:previous 前一个文件
:last 最后一个文件
:first 第一个文件
:wqall 退出保存所有
多窗口模式:
多文件
-o: 水平分割两个窗口
-O: 垂直分割两个窗口
ctrl+w,arrow
单文件:
ctrl+w,s: 水平分割
ctrl+w,v: 垂直分割
窗口属性设定:
:set nu 显示行号
:set nonu 取消显示行号
:set ai 自动缩进
:set noai 取消自动缩进
:set ic 忽略字符大小写
:set sm 显示自动匹配括号
:syntax off 语法高亮关闭
配置文件:
全局: /etc/vimrc
用户: ~/.vimrc