文本编辑器-vim
vim编辑器
文本编辑种类:
行编辑器: sed
全屏编辑器: nano, vi
vi: Visual Interface
vim: VI improved vi增强
模式化的编辑器: vim
vim自带教程
命令:vimtutor
基本模式:
编辑模式, 命令模式
输入模式:
末行模式:
vim内置有命令行接口
vim [options] [filelist]
选项:
+ #: 表示打开后直接处在第#行
+/{pat} , 打开文件后 ,光标处于第一个正则匹配的地方
模式转换:
命令模式 -> 输入模式
i: insert, 在光标所在处输入
a: append, 在光标所在处后输入
-o: 在光标所在新开一行输入
-I: 在光标所在行的行首输入
-A: 在光标所在行的行末输入
-O: 在光标所在行的上一行新开一行输入
输入模式/末行模式 -> 命令模式
ESC
命令模式 -> 末行模式
:
关闭文件:
ZZ: 保存并退出
:q 退出
:q! 不保存强制退出
:wq 保存修改并退出
此处可以分开执行
:x 保存并退出
:w PATH 另存为
命令模式
光标的移动
字符间跳转
h: 向左跳转一个字符
l: 向右跳转一个字符
j: 向下跳转
k 向上跳转
这些命令前面都可以跟上一个数字表示 向(上/下/左/右)跳转#个字符
单词间跳转
w: 下一个单词的词首
b: 上一个单词的词首
e: 当前或后一个单词的词尾
这些命令前面都可以跟上一个数字表示 向(左右)跳转#个单词
行首行尾跳转
^: 跳转到行首的第一个非空白字符
0: 跳转到行首
$: 跳转到行尾
跳转一个字符
#G: 跳转到#行, 100G, 跳转到100行
1G, gg, 跳转到第一行
G: 跳转到最后一行
句间跳转
( : 上一句
): 下一句
段间跳转
{: 上一个段落
}: 下一个段落
翻屏
Ctrl+f: 向文件尾部翻一屏 forward
Ctrl+b: 向文件首部翻一屏 back
Ctrl+d: 向文件尾部翻半屏 down
Ctrl+u: 向文件首部翻半屏 up
vim的编辑命令:
字符编辑
x: 删除光标所在处的字符
#x: 删除光标所在处起始的向后#个字符
xp: 交换光标所在处的字符及其后面的字符的位置, 此处可以分开来理解
X: 删除光标所在处前一个字符
#X: 删除光标所在处前#号个字符, # 号的作用基本都一样
替换命令
r: 替换所在处的字符
删除命令
d: 删除命令, 可结合光标跳转字符, 实现范围删除
d0: 删除当前光标之前到行首的位置
dw: 删除当前光标之后的一个单词的位置
db: 删除当前光标之前的一个单词的位置
de: 删除光标后词尾
d$: 删除当时前光标到行尾的位置
d[#][hjkl]: 删除上下左右n行, 根据当前光标位置
dd: 删除光标所在处的行
#dd: 删除光标所在处的共#行
以上这些删除的命令都会保存在缓冲区
粘贴命令
p: 缓冲区的内容如果为一整行, 则粘贴在当前光标所在处的下一行, 如果不是整行, 则粘贴在当前光标所在处的后面
P: p: 缓冲区的内容如果为一整行, 则粘贴在当前光标所在处的上一行, 如果不是整行, 则粘贴在当前光标所在处的前面
复制命令(yank, y)
y: 复制, 工作行为类似于d
y$
y^
y0
ye, yw, yb
yy
# yy
改变命令(change, c):
命令模式 -> 输入模式, 实现删除模式, 相当于d命令, 并且直接进入输入模式, 相当于d和i命令的结合
cc #cc...
可视化模式
v: 按字符选定
V: 按行选定
结合编辑命令选定(w, e, b...)
撤销操作:
u: (undo) 撤销此前的操作
#u: 撤销此前的#次操作
Ctrl+r: (recover) 恢复撤销的操作
重复执行前一个操作:
. 点号
末行模式
末行是内置的命令行接口.
(1) 地址定界
: start_pos[, end_pos]
#: 特定的第#行, 例如5即第5行
. : 当前行 点号
$: 最后一行
#, # : 指定行范围, 左侧为起始行, 右侧为结束行
#, +#: 指定行范围, 左侧为行绝对编号, 右侧为相对左侧的编号
%: 表示全文
同1, $
这些都还可以同编辑命令一起使用
d, y, c
:w path, 将内容保存到指定路径, 相当于另存为
:r path , 将指定的文件中的文本插入到指定位置
(2) 查找
/pattern/: 第一次被指定模式匹配到的行
可与本身连用, 或是数字, $等定界符
查找结果支持上下,
n: 下一个
N: 上一个
(3) 查找并替换
s: 末行模式的命令: 使用格式
s/要查找的内容/替换的内容/修饰符
要查找的内容: 可使用正则表达式
要替换的内容: 不能使用正则表达式, 但是可以使用正则表达式分组后的引用\1...
修饰符:
i: 忽略大小写,
g: 全局替换, 意味着如果一行中匹配到多次, 则替换多次
例如 :%s/like/i love you/g 表示全局替换
替换命令的时候, 可以把分隔符换成其他几种, / @ # 共有这几种方式
注意, 此处的正则查找, 默认使用的最原始的正则guize, 写法非常麻烦, 可以在前面添加
\v: 表示使用perl模式的正则
\V: 表示使用纯文本来查找
就像这样: :%s/\v(\d+)/\15/g
(4) vim小练习
1. 复制/etc/grub2.cfg文件到/tmp目录中
[root@localhost ~]# cp /etc/grub2.cfg /tmp [root@localhost ~]# vim /tmp/grub2.cfg # 末行模式 :%s/\v^\s+/
2. 复制/etc/rc.d/init.d/functions文件至/tmp目录中,用查找命令替换/tmpfunctions文件的每个以空白字符开头的行首加上#
[root@localhost ~]# cp /etc/rc.d/init.d/functions /tmp [root@localhost ~]# vim /tmp/functions # 末行模式 :%s/\v^\s/# /
3. 为/tmp/grub2.cfg文件的前3行加上# 号
#末行模式 :1,3s/\v(.*)/#\1
4. 将/etc/ yum.repos.d/CentOS-Base.repo文件中的所有的enabled=0替换为enabled=1, 所有gpgcheck=0替换为gpgcheck=1
vim的多文件功能
vim FILE1 FILE2...
大文件之间的切换
:next 下一个
:prev 上一个
:first 第一个
:last 最后一个
退出所有文件
:wqall 保存所有文件并图基础
: wall 保存所有文件
:qall 退出所有文件
vim -o FILE FILE2... 水平分屏
vim -O FILE FILE2... 垂直分屏
Ctrl + w + ... 控制分屏和切换
具体命令参考https://www.cnblogs.com/manziluo/p/5789700.html
定制vim的工作特性
注意: 在末行模式下的设定, 仅对当前vim进程中有效
永久有效, 配置配置文件
全局: /etc/vimrc
用户个人: ~/.vimrc
1. 行号
显示: set number, 简写为set nu
取消显示: set noumber, set nonu
2. 括号匹配高亮显示
匹配: setshowmatch, set sm
取消匹配: set nosm
3. 自动缩进功能
缩进: set autoindent, set ai
取消: set noai
4. 高亮搜索
启用高亮: set hlsearch
禁用: set hlsearch hl(highlight)
5. 语法高亮
启用: syntax on
禁用: syntax off
6. 忽略大小写
启用: set lc ic(ignore case)
禁用: set nolc
获取帮助
: help
: help subject

浙公网安备 33010602011771号