Linux基础之vi编辑器(二)
vi 编辑器
man vim
一 打开文件,定义光标
vi +# test 打开文件,定位于#行。
vi + test 打开test文件,定位于最后一行。
vi +/pattern test 打开定位到第一次查到的pattern处。
二 关闭文件
1 末行模式下关闭文件
w 保存
q 不保存退出
wq 保存并退出
q! 不保存退出
w! 强行保存
:wq=:x
2 编辑模式下退出
ZZ 保存并退出
三 移动光标(编辑模式下)
1 逐字符移动:
h:向左移动
l:向右移动
j:向上移动
k:向下移动
可以加数字:
#h :移动#个字符
2 逐个单词移动
w :移到下一个单词的词首
e:跳至当前或者下一个单词的词尾
b:跳到当前或者前一个单词的词首
#w :移动到第#个单词的词首
3 以行为单位,行内跳转
0:绝对行首
^:行首的第一个空白字符
$:绝地行尾
4 行间跳转
#G:跳转到第#行
G:最后一行
四:翻平
Ctrl+f 向下翻屏
Ctrl+b 向上翻屏
ctrl+d 向下翻屏
Ctrl+u 向上翻屏
五:删除单个字符
x:删除光标所在处的单个字符
#x:删除光标所在处的及向后的#个字符
六:删除命令
d命令和跳转命令结合使用
#dw #da #db
dd
#dd:删除包括当前光标所在内的#行
末行模式下: start,end dd
当前行到100行
:.,100dd
.:表示当前行
$:最后一行
+#:向下的#行
七:粘贴命令
p:如果删除或复制为整行内容,则粘贴至光标所在行的下方,入股复制或者删除的内容为非整行,粘贴至光标所在字符后面
P:如果删除或复制为整行内容,则粘贴至光标所在行的上方,入股复制或者删除的内容为非整行,粘贴至光标所在字符前面
八:复制命令
y 用法同d命令
九:修改:先删除内容,在转换为输入模式
c:用法同d命令
十:替换r
R:替换模式
十一:撤销
u:撤销前一次的编辑操作
连续u命令撤销50次操作
#u:直接撤销最近#次编辑操作
撤销最近一次撤销操作:Ctrl+r
十二:重复前一次编辑操作
.
十三:可视化模式
V:按矩形块选取
v:按字符选取
利用v模式,我们可以很方便的处理多行文本,比如在Bash脚本中一次性注释多行文本。可以如下操作:
1 ctrl+v 进入列编辑模式
2 向下或向上移动光标
3 把需要注释的行的开头标记起来
4 然后按大写的I
5 再插入注释符,比如"#"
6 再按Esc,就会全部注释了
如果想一次性的删除多行注释标记符,则可以这样做:
1 ctrl+v 进入列编辑模式
2 向下或向上移动光标,选择要删除的“#”
3 按d键即可删除
十四:查找替换
n
N
:/he 查找he,按n
十五:查找并替换
在末行模式下使用s命令
:ADDR1,ADDR2s@PATTERN@string@gi
从当前行到末两行将he改成HE
:.$-1 s/he/HE/g
在末行模式下
①显示或取消行号
set nu(set number):显示行号
set nonu:取消显示行号
②显示忽略或区分字符大小写
set ic (set ignorecase):忽略大小写
set noignorecase:区分大小写
③设定自动缩进
set ai(set autoindent):自动缩进
set noai:取消自动缩进
④查找到的文本高亮或取消高亮显示
set hlsearch:高亮显示搜索到的文本
set nohlsearch:取消高亮显示搜索到的文本
⑤语法高亮
syntax on:打开语法高亮显示
syntax off:关闭语法高亮显示
复制代码
vim配置文件
全局vim配置文件:/etc/vimrc
个人vim配置文件:~/.vimrc
[root@libaoliang ~]# echo "set nu" >> /root/.vimrc # root用户用vim打开文件时,显示行号。
vim 模式:
编辑模式
输入模式
末行模式
输入模式
i :光标所在字符的前面,转换为输入模式
a :光标所在字符的后面,转换为输入模式
o :光标所在字符下面一行,转换为输入模式
I :转换为输入模式后,在当前光标的行首
A : 转换为输入模式后,在当前光标的行尾
O : 转换为输入模式后,在当前光标的上一行
输入模式--------->编辑模式
ESC
编辑模式--------->末行
:
删除第九行: 在末行模式下输入9d
删除十到二十行:在末行模式下输入10,20d
显示行号: set nu
在末行模式下,查看etc下的password: ! cat /etc/passwd 然后回车
末行模式------->编辑模式
ESC 多少用几次
001在普通模式下,输入:进入命令模式完成替换
:s/root/admin 将光标当前行出现的第一个root替换为admin,没有则不替换
:s/root/admin/g 将光标当前行中的所有的root替换为admin
:3,5 s/sbin/bin/g 将第三行至第五行之间的所有sbin替换成bin
:% s/nologin/fault/g 将所有行的nologin都替换成fault
002指向shell命令
执行shell命令并不想退出编辑器,通过:{命令}来实现,
例如:查看当前目录下文件名称
:!ls 执行完后返回vim编辑器