linux中vim的使用以及linux中输入输出的管理
一、linux中vim的使用
在讲如何修改文件的时候我们提到了vim的使用,在这篇文章讲vim如何使用之前,我们得先了解vim的三种模式,它们分别是:命令模式、插入模式和退出模式。
使用vim+文件名(不管这个文件存在与否)打开文件,此时处于vim的命令模式,若要进入插入模式,按下i,o,a等就可以进入插入模式了,进入插入模式后左下角会出现 --INSERT-- 的提示,这表明我们现在可以在文件里编辑要记录的内容了,若要退出插入模式,按下<ESC>即可。下面是对三种模式的具体介绍。
1.命令模式
(1)vim帮助
在vim里查看帮助的方法:
- 1)在退出插入模式后,输入" : help "可以查看帮助内容
- 2)可以在shell界面输入"vimtutor"后回车来对vim有一个初步的认识
(2)vim工作参数设定
- 1)临时设定
:set 参数信息
例子:
:set nu ##显示行号
:set nonu ##取消行号显示
:set mouse=a ##解放鼠标在vim中的使用
:set cursorline ##显示行线
注意:
以上设定方式在vim退出后会还原默认
图为添加行号和下划线后的效果。
- 2)永久设定
临时更改会在退出后还原默认,有时不太方便,因此我们可以修改配置文件来达到永久显示的效果。
输入命令 "vim /etc/vimrc"后进入vim里
:set nu ##显示行号
:set nonu ##取消行号显示
:set mouse=a ##解放鼠标在vim中的使用
:set cursorline ##显示行线
注意:
以上操作必须用root用户才能完成
(3)字符管理
既然vim里鼠标没有windows里的好用,那么平时用的较多的复制剪切粘贴删除撤销等命令怎样方便的实现呢
- 1)复制
y ##复制
yl ##复制一个字母
y3l ##复制三个字母
yw ##复制一个单词
y3w ##复制三个单词
yy ##复制一行
y3y ##复制三行
- 2)剪切
c ##剪切
cl ##剪切一个字母
c3l ##剪切三个字母
cw ##剪切一个单词
c3w ##剪切三个单词
cc ##剪切一行
c3c ##剪切三行字母
注意:
当用c做剪切动作后,vim会进入插入模式,如果需要粘贴,那么要按<esc>退出插入模式, 然后按<p>粘贴。
- 3)删除
d ##删除
dl ##删除一个字母
d3l ##删除三个字母
dw ##删除一个单词
d3w ##删除三个单词
dd ##删除一行
d3d ##删除三行
- 4)其他
p ##粘贴
u ##撤销
ctrl+r ##恢复
(4)vim的可视化模式
ctrl+v ##进入可视化模式
如何进行可视化模式的批量添加:
crtl+v进入可视化模式,选中要添加字符所在列,按"I"进入插入模式,写入字符,按<esc>批量添加字符出现。
可以看到左下角出现-- VISUAL BLOCK --,表明现在已经进入可视化模式。
(5)字符的替换
:%s/源字符/替换后字符 ##每一行出现的第一个关键字
:%s/源字符/替换后字符/g ##全文替换,s所有行,g所有列
:%3,5s/源字符/替换后字符/g ##替换第三行到第五行的关键字
:/lp/,/halt/s/sbin/hello/g ##替换lp字符和halt字符之间的所有关键字
上图为替换前文件内容
现在使用:/dcjngm/,/m/s/dc/hello/g
意思是把从dcjngm到m出现的所有dc替换成hello
右图为替换后结果。
(6)在vim中编写多个文件
使用vim打开一个文件,在这个vim界面里输入":sp file1",意思是在file的vim里在打开一个file1.
可以使用"ctrl+w" 进行上下左右的切换,使光标在窗口间移动。
图为在vim编写多个文件。
(7)光标移动及字符搜索
- 1)光标的移动
:数字 ##光标移动到指定的行
<HOME> ##光标移动到行首
<END> ##光标移动到行尾
G ##光标移动到最后一行
gg ##光标移动到第一行
- 2)搜索字符
/关键字
n ##向下匹配
N ##向上匹配
2.插入模式
i ##光标所在位置插入
I ##光标所在行的行首插入
A ##光标所在行行尾插入
a ##光标所在字符的下个字符插入
s ##删除光标所在字符插入
S ##删除光标所在行插入
o ##光标所在行的下一行插入
O ##光标所在行的上一行插入
3.退出模式
:q ##退出,在打开文件后没有对文件做任何修改时可使用
:wq ##退出保存,在对文件修改后并保存内容时使用
:q! ##强制退出,在对文件做修改后要放弃修改时使用
:wq! ##强制退出保存,在对属于自己的文件或你时root用户时使用
二、linux中管理输入输出
1.输出重定向
> ##重定向正确输出
2> ##重定向错误输出
&> ##重定向所有输出
注意:重定向动作会覆盖源文件内容
例子:我们使用student普通用户登录系统,使用"find /etc/ -name passwd" 时,此命令在student用户下执行因为权限问题会报错。
此时可以使用
find /etc/ -name passwd > file
find /etc/ -name passwd 2> file
find /etc/ -name passwd &> file
2.输出追加
前面讲到find /etc/ -name passwd > file 的方法会覆盖源文件。所以可以采用输出追加的方式把定向的输出放到源文件最后而不覆盖源文件。
>> ##追加正确输出
2>> ##追加错误输出
&>> ##追加所有输出
所以在命令的书写形式上也要发生改变:
find /etc/ -name passwd >> file
find /etc/ -name passwd 2>> file.err
find /etc/ -name passwd &>> file.all
3.输入管理
<<与EOF一起使用时,表示后续输入的内容是子命令或子shell的输入,遇到EOF停止,再返回到主调shell。
由图可以看出处于<<EOF和EOF之间的内容写入westos中。
4.管道
| ##把第一条命令的正确输出变成第二条命令的输入
2>&1 ##将编号位2的错误输出转换成编号为1
tee ##将输出复制一份到指定位置
如上图的例子
ls /bin | wc -l ##统计/bin中有多少文件然后把bin中文件的行数显示出来
find /etc -name passwd 2>&1 | wc -l ##找到/etc/passwd,把里面的错误输出改成正确的然后显示出行号
find /etc/ -name passwd 2>&1 | tee file | wc -l ##找到/etc/passwd,把里面的错误输出改成正确的然后复制到file里并显示出行号
cat file ##查看file里复制过来的内容