文本编辑种类:
行编辑器:sed
全屏编辑器 :nano,vi
vim :vi Mproved
模式化的编辑器:
编辑模式,也叫命令模式
输入模式,插入模式
末行模式:
内置行的命令行接口;
文件打开:如果打开文件时没有,vim会自动创建文件。
vim 文件名 vim [options] [file ..]
打开文件后,最下一行信息为:
文件名字 总行数 总字符数 光标所在行 ,第几个字符 内容百分比
"functions" 787L, 18586C 47,7 2%
两个大写:ZZ 保存并关闭
vim +# 文件:打开文件后,直接让关闭处于低#行的行首
vim +/pattern 文件 :打开文件后,直接让光标处于第一个pattern匹配到的行的行首。
vim + 文件 :直接将光标定位到行尾第一个字符
模式转换:
编辑模式:默认模式
编辑模式–>输入模式
i :在光标所在处输入
I : 在光标所在行首输入
a : 在光标所在处后方输入
A :在光标所在行末尾输入
o :光标所在处下方打开一个新行
O :光标所在处上方打开一个新行
输入模式–>编辑模式
按ESC键
编辑模式–>末行模式
输入:
末行模式–>编辑模式
按2次ESC键
关闭文件
在编辑模式下输入: ZZ 表示保存并退出:
:q 退出
:q! 强制退出,不保存此前的编辑操作
:wq 保存并退出
:x 保存并退出
:w /位置/文件名 将文件保存在某位置,并命名
光标跳转:
字符间跳转
h 光标向左跳转一个字符
l 光标向右跳转一个字符
j 光标向下跳转1行
k 光标向上跳转1行
#h 光标向前跳#个字符
#l 光标向后跳#个字符
#j 光标向下跳#个行
#k 光标向上跳#个行
单词间跳转
w : 下一单词的词首
b:当前或前一个单词的词首
e:当前或后一个单词的词尾
#w 向后跳#个单词,词首
#b 向前跳#个单词,词首
#e 向后跳#个单词,次尾
行首跳转
^ : 跳转至行首的第一个非空白字符
0 :跳转至行首,绝对第1一个字符位置
$ :跳转至行尾
行间跳转
G 跳到行尾,第一个字符
#G 跳转到#数行首 1G 跳转到文件第一个行第一个字符
句间跳转
) 跳转至下一句
( 跳转至上一句
段间跳转
} 跳转至下一段
{ 跳转至上一段
翻屏操作
ctrl + f 向文件尾部翻一屏
ctrl +b 向文件首部翻一屏
ctrl +d 向文件尾部翻半屏
ctrl +u 向文件首部翻半屏
回车键 向文件尾部翻一行
vim编辑命令
字符编辑
x 删除光标所在处字符
#x 删除光标所在处起始后#个字符
xp 将光标所在位置处字符前后互换
替换命令replace
r 字符(任何字符) :替换光标所在处的字符
删除命令
d 删除命令,可结合光标跳转字符,实现范围删除
d$ 删除光标所在处至行尾的内容
d^ 删除光标所在处至行首的内容
#dw 向后删除#个单词,词首
#db 向前删除#个单词,词首
#de 向后删除#个单词,次尾
dd 删除光标所在行 删除一次后,向继续删下面内容,可以用.号继续删
#dd 删除光标所处的行起始的共n行 删除内容保存在缓冲区,可以粘贴
:1,10 d 加回车键 删除1,10行
粘贴命令
p :缓冲区的内容如果为整行,则粘贴在当前光标所在行的下方,否则,粘贴至当前光标所在处后方:
P 大 :缓冲区的内容如果为整行,则粘贴在当前光标所在行的上方,否则,粘贴至当前光标所在处前方
复制命令yank
y: 复制,工作行为相似于d命令
y$ 复制光标至行尾内容
y^ 复制光标至行首内容
y0 复制光标至行首内容
ye
yw
yb
yy 复制以整行
#yy 复制#号行 ,内容在缓存区,可以通过p进行粘贴
改变命令(change c)
编辑模式—>输入模式,实现删除操作
c$ 删除光标至行尾
c^ 删除光标至行首
c0 删除光标至行首
cb 删除光标后一个单词,并开启词首插入模式
cw 删除光标前一个单词,并开启词首插入模式
ce 删除光标后一个单词,并开启词尾插入模式
#command
cc 删除光标行,并开启行首插入模式
可视化模式:
v 按字符选定
V 按行选定
结合编辑命令:d,c,y
撤销操作 undo
u 撤销此前操作
#u 撤销#次操作
撤销此前的撤销
ctrl r 重复执行前一个编辑操作
vim自带的练习教程:
[root@localhost testdir]# vimtutor
vim末行模式:内键的命令行接口
vim末行模式:
内键的命令接口:
(1)地址定界
startpost,endpost 起始位置,末尾位置
. 表示当前行
m: 特定的第m行
$ : 最后一行 .,$-1 从当前行到倒数第二行
% 全文
m,n 指定m-n行
m,+n 起始行m处,在加n行,右侧为相对左侧行号的偏移量:
例如:3,7 :从3第三行处开始数7行,也就是3-8行
/pattern/ 从光标所在处起始向维基尾部第一模式所匹配到的行
/first/,$ d 从光标所在处起始向维基尾部第一模式所匹配到的行
/pattern1/,/pattern2/ 从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束间的行
可以编辑命令一同使用,实现编辑操作
d
y
c
w /path/to/somewhere :将范围内的文本保存至指定位置。
#r /path/to/somewhere 将指定的文件中的文本读取并插入至指定位置
查找:
/pattern 从当前光标所在处向文件尾部查找能被匹配到的所有字符
?pattern 从光标所在处向文件首部查找能够被当前模式匹配到的所有字符串
n :下一个,与命令方向相同
N : 上一个,与命令方向相反
(3)查找并替换
s:末行模式命令:
s/要查找的内容/替换为的内容/修饰符
要查找的内容:可以使用正则表达式
替换为的内容:不能使用正则表达式,但是可以引用:\1
如果'要查找的内容",部分在模式中使用分组符号,在‘替换为的内容’中使用后向引用
直接引用查找匹配到的文本
修饰符:
I:忽略大小写 1,40 s/this/THIS/Ig
g:全局替换,意味着一行中如果匹配到多次,则都替换:
\ :转义字符
将文件中/cgroup/systemd/替换成/etc/sysconfig/
%s/\/cgroup\/systemd/\/etc\/sysconig/g
可将分隔符替换成其他非常用字符
s@@@ %s@\<t\([[:alpha:]]\+\)\>@T\1@g 将文本中所有t开头的词,全部替换为T开头的词
s### %s#\<t[[:alpha:]]\+\>#&er#g 将文本中所有t开头的词,词后都加上er,重点:&替换单词
练习:
1.复制/etc/grb2.cg文件至/tmp目录中,用查找替换命令删除/tmp/grub1.cfg文件中以空白字符开头的行的行首空白字符
%s@^[[:space:]]\+@@ 答案不符合:
2.复制/etc/rc.d/init.d/functions文件至/tmp目录中,用查找替换命令为/tmp/functions文件的每个以空白字符
开头的行首加上#号
%s@^$@# 或者 %s/^$/# %s@^[[:space:]]\+@#
3.为/tmp/grub2.cfg文件的前三行加#号
1,3 s/^/#
4.将/etc/yumrepos.d/CentOs-Base.repo文件中所有的enabled=0替换为enabled=1
% s/enabled=0/enabled=1/g
vim的多文件模式:
vim file1 file2 file3
:next 进行至下一个文件
:prev 上一个文件
:first 切换至第一个
:last 切换至最后一个文件
并且可以跨文件复制
退出所有文件:wq保存所有文件,并退出
退出单个文件用q
多窗口: vim
-o:水平分割窗口
-O : 垂直分割窗口
ctrl+w 后,用上下做右,回落至hjkl键可以进行,窗口切换
ctrl +w +s,可对文件进行水平二次分割
ctrl +w +v,可对文件进行垂直二次分割
q键退出一个窗口
qall退出所有
wqall保存,并退出所有文件
注意单个文件也可以分割为多个窗口进行查看
定制vim的工作特性
永远有效:
全局:/etc/vimrc
用户个人:~/.vimrc 不一定存在,需要用户自己创建
个人vimrc设置:
vim .vimrc , 在.vimrc里写入set nu,即完成设置行号设置。
1.行号
显示行号:set number ,简写为set nu
不显示行号:set nonumber,简写文 set nonu
注意:在末行模式设置只对当前有效
2.括号匹配高亮显示
匹配 :set showmatch ,set sm 设置高亮
取消 :set noshowmatch,set nsm 取消高亮
3.自动缩进功能
set ai 设置缩进
set noai 取消设置缩进
4.搜索高亮
set hlsearch :设置高亮搜索
set nohlsearch :设置取消高亮搜索
5.语法高亮
syntax on 开启语法
syntax off 关闭
6.忽略字符大小写
set lc 启用忽略
set nolc 取消大小写
vim内容内
:help set 能查看用户帮助
help subject :q! 退出
sed命令
sed options file
-n 不输出模式空间的内容至终端
-e 可以指定多个命令的编辑
-r 支持使用扩展正则表达式
-i 直接编辑元文件 ,有危险可以用 -i.bak(sed -i.bak "/^#//" /etc/fstab )命令先保存一份文件在编辑。
地址定界:
(1)空地址:不给地址,对全文进行处理
(2)单地址:
#:指定第#行
/pattern/:被没收所匹配到的每一行
(3)地址范围:
m,n : m行至n行
m,m+5 :m行至m+5行
m,/part1/ :从m行到模式匹配到的第一行
/part1/,/part2/ 重模式匹配到的第一行至模式匹配到的第二行
(4)步进:
1~2:基数行
2~2:偶数行
sed选项
-d :删除模式空间中的内容 : sed "/^$/d" /etc/fstab
-p :打印匹配到的行 sed "3p" /etc/fstab
-a \文本:在匹配行后下一行,追加文本,支持使用\n实现多行追加 "3a \xiong\nxiong\n" fstab
-i \文本:在匹配的前一行,行首追加文本,支持使用\n实现多行追加.
-c \文本: 将匹配的行替换成其他信息。sed "2c \xiong" fstab拍
-w 位置+文件 :将匹配的内容保存至某个文本: sed "/^U/w /root/sedResult" fstab
-r 文件 : 将文本内容读入匹配行后 sed '3r /etc/issue' fstab
=:匹配的行前加行号: sed "/^UUID/=" /etc/fstab
! :匹配的到模式取反,放在命令之前 sed '/^#/!d' fstab
rev命令 将内容反向显示 echo "/etc/rc.d/init.d/functions" | rev
s///查找替换,其分隔符可以咨询指定,常用的有s@@@,s###等 ,一定要写全///这个符号
替换标记:
g:全局替换
w /path/to/somefile:将替换成功的结果保存至指定文件中
p:显示替换成功的行
& :代表替换原文内容 sed -i “s/root/&man/g” /etc/passwd
高级编辑命令:
h:将模式空间中内容覆盖至保存空间中内容
H:将模式空间中的内容追加至保存空间内容
g:将保存空间中内容覆盖至模式空间中内容
G:将保存中间中内容追加至模式空间中内容
x:将模式空间中内容与保存空间中内容互换
n:读取匹配的下一行覆盖至模式空间中
N:读取匹配的下一行追加至模式空间中
d:删除模式空间中的行
D:删除多行模式空间的所有行
; 命令行间用;隔开
原创文章,作者:maoxiong,如若转载,请注明出处:http://www.178linux.com/32340
评论列表(1条)
文章都是一些理论的东西建议加上自己的实际操作,理论加上实践,让自己的文章更加丰满起来哦。