使用Vim编辑器与Shell命令补充——从入门到实战

前言
本文是《使用vim编辑器和shell命令补充》课程的实践总结,通过在Xshell中连接虚拟机,亲手操作了vim编辑器的基本使用、高级操作以及echo、管道符、重定向、文件合并等Shell命令。本文将按照PPT的顺序,逐一演示每个知识点的用法,并附上操作截图和常见参数说明,帮助正在学习Linux的你快速上手。
一、实验环境
操作系统:Ubuntu(VMware虚拟机)
远程连接工具:Xshell
Shell环境:GNU Bash
二、Vim编辑器简介
vi编辑器是Unix系统最初的编辑器,它使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行、在文件中移动、插入、编辑和替换文本。vim是vi improved的简称,是vi的增强版本。
安装vim
在Ubuntu发行版中需要安装基础版的vim包:
sudo apt-get install vim
查看vim软件包的位置:
which vim
ls -l /usr/bin/vim
三、Vim编辑器的基本操作
打开文件
命令用法:vim filename
如果在使用命令vim时,指定了一个不存在的filename,vim会开辟一段新的缓冲区域来编辑,编辑完保存后相当于新建了这样一个文件。
如果在使用命令vim时,指定了一个已有文件的名字,vim会读取该文件的所有内容,放到一段缓冲区域来准备编辑。
两种操作模式
vim编辑器有两种操作模式:
普通模式:当你刚打开要编辑的文件时,vim编辑器会进入普通模式。在普通模式中,vim编辑器会将按键解释成命令。
插入模式(编辑模式):在插入模式下,vim会将你在当前光标位置输入的每个键都插入到缓冲区。在普通模式下按下i键就可以进入插入模式。要退出插入模式回到普通模式,按下键盘上的退出键(ESC键)就可以了。在插入模式下,你可以向缓冲区输入内容,就跟记事本输入一样。
操作截图:在这里插入图片描述

四、Vim编辑器普通模式下的移动命令
在普通模式下,可以用方向键在文本区域移动光标。vim中有用来移动光标的命令:
h 左移一个字符
j 下移一行(文本中的下一行)
k 上移一行(文本中的上一行)
l 右移一个字符
小键盘上的上下左右键也可以使用。
但是一行一行地来回移动会特别麻烦,vim提供了一些能够提高移动速度的命令:
PageDown(或Ctrl+F) 下翻一屏
PageUp(或Ctrl+B) 上翻一屏
G 移到缓冲区的最后一行
gg 移到缓冲区的第一行
五、Vim编辑器命令行模式
vim编辑器在普通模式下有个特别的功能叫命令行模式。命令行模式提供了一个交互式命令行,可以输入额外的命令来控制vim的行为。
要进入命令行模式,在普通模式下按下冒号键(:)。光标会移动到消息行,然后出现冒号,等待输入命令。注意是英文状态下的冒号!
在命令行模式下有几个命令可以将缓冲区的数据保存到文件中并退出vim:
q 如果未修改缓冲区数据,退出。如有修改,则出现提示
q! 取消所有对缓冲区数据的修改并强制退出
w filename 将文件保存到另一个文件中
wq 将缓冲区数据保存到文件中并退出
wq! 将缓冲区数据保存到文件中并强制退出
操作截图:在这里插入图片描述

六、Vim编辑器高级操作

1.编辑命令

在普通模式下,可以不进入命令行,而是直接键入命令。下面列出了一些常用的vim编辑命令:
x 删除当前光标所在位置的字符
dd 删除当前光标所在行
dw 删除当前光标所在位置的单词
d$ 删除当前光标所在位置至行尾的内容
J 删除当前光标所在行行尾的换行符(拼接行)
u 撤销前一编辑命令
a 在当前光标后追加数据
A 在当前光标所在行行尾追加数据
r char 用char替换当前光标所在位置的单个字符
R text 用text覆盖当前光标所在位置的数据,直到按下ESC键
有些编辑命令允许使用数字修饰符来指定重复该命令多少次。比如,命令2x会删除从光标位置开始的两个字符,命令5dd会删除从光标当前所在行开始的5行。

2.复制与粘贴

vim在删除数据时,实际上会将数据保存在单独的一个缓存器中。可以用p命令取回数据。
比如:可以用dd命令删除一行文本,然后把光标移动到要放置该行文本的位置,按下p命令。该命令会将文本插入到当前光标所在行之后。可以将它和任何删除文本的命令一起搭配使用,相当于剪切文本。
复制文本则要稍微复杂点。vim中复制命令是y(代表yank),表示复制当前光标位置的字符。还可以用yw表示复制一个单词,y$表示复制到行尾。在复制文本后,把光标移动到你想放置文本的地方,输入p命令。复制的文本就会出现在该位置。

3.可视模式复制

可视模式会在你移动光标时高亮显示文本。可以用可视模式选取要复制的文本。
要进入可视模式,应移动光标到要开始复制的位置,并按下v键。你会注意到光标所在位置的文本已经被高亮显示了。下一步,移动光标来覆盖你想要复制的文本(可以向下移动几行来复制更多行的文本)。在覆盖了要复制的文本后,按y键来激活复制命令。最后移动光标到你要放置的位置,使用p命令来粘贴。这样就可以实现多行文本的复制粘贴操作。

4.查找文本

在vim普通模式下,可以轻松查找文本中的字符串:
普通模式下,按下斜线键(/),光标会跑到命令行。然后在斜线后面输入你要查找的文本后,按下回车键,即可定位到第一个符合文本的位置。
要继续查找同一个单词,按下n键,表示下一个(next)。
操作截图:在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

5.替换文本

替换命令允许你快速用另一个单词来替换文本中的某个单词。必须进入命令行模式才能使用替换命令。
替换命令的用法:
😒/old/new/ 替换当前行中第一个匹配的old为new
😒/old/new/g 替换当前行中的所有old
:n,ms/old/new/g 替换行号n和m之间所有old
:%s/old/new/g 替换整个文件中的所有old
:%s/old/new/gc 替换整个文件中的所有old,但在每次出现时提示
操作截图:
在这里插入图片描述
在这里插入图片描述

七、Nano编辑器简介
nano编辑器的使用方法:
nano filename
在nano编辑器窗口的底部显示了各种命令以及简要的描述。这些命令是nano的控制命令。脱字符表示Ctrl键,因此^X表示的就是组合键Ctrl+X(大小写均可)。
nano常用控制命令:
CTRL+C 显示光标在文本编辑缓冲区中的位置
CTRL+G 显示nano的主帮助窗口
CTRL+J 调整当前文本段落
CTRL+K 剪切文本行,并将其保存在剪切缓冲区
CTRL+O 将当前文本编辑缓冲区的内容写入文件
CTRL+R 将文件读入当前文本编辑缓冲区
CTRL+T 启动可用的拼写检查器
CTRL+U 将剪切缓冲区中的内容放入当前行
CTRL+V 翻动到文本编辑缓冲区中的下一页内容
CTRL+W 在文本编辑缓冲区中搜索单词或短语
CTRL+X 关闭当前文本编辑缓冲区,退出nano,返回shell
CTRL+Y 翻动到文本编辑缓冲区中的上一页内容
操作截图:
(CTRL+O)
在这里插入图片描述(CTRL+W 查找s)
在这里插入图片描述

八、其他编辑器简介
除了vim和nano之外,还有其他常见的文本编辑器:
emacs编辑器:vim和nano作为控制台模式文本编辑器无法提供图形化编辑功能。emacs编辑器一开始也是作为控制台编辑器,但如今已经迁移到了图形化世界。
KDE系编辑器:
KWrite:单屏幕文本编辑程序
Kate:功能全面的多窗口文本编辑程序
GNOME编辑器:gedit编辑器是一个基本的文本编辑器,同时还提供了一些高级功能,例如代码语法高亮显示和行编号。
九、Shell命令补充——echo
echo命令用于在终端中显示文本或变量的值。echo是Linux系统中的内置命令,主要用于:
在终端显示文本信息
输出变量的值
生成格式化的字符串
向文件追加内容
注意:若想正常输出变量的值,必须用双引号("),不能用单引号。
echo “Hello, World!”
输出:Hello, World!
name=“Linux User”
echo “Welcome, $name!”
输出:Welcome, Linux User!
echo ‘Hello, World!’
输出:Hello, World!
echo ‘Welcome, $name’
输出:Welcome, $name
操作截图:
在这里插入图片描述

十、Shell命令补充——管道符
Linux管道符(pipeline)是shell编程中众多控制操作符其中的一个,用来分隔一个或多个命令的序列。shell编程中管道符号是竖杠(|)。
在shell中使用管道的格式如下:
command1 | command2 | command3
代表command1的输出作为command2的输入使用,而command2的输出又作为command3的输入使用。
例如:第一个命令使用echo来输出文字,第二个命令使用grep将第一个echo的输出当作输入:
echo “Hello, world!” | grep “world”
输出:Hello, world!
操作截图:
在这里插入图片描述

十一、Shell命令补充——重定向
在执行命令之前,我们可以使用shell解释的特殊符号重定向其输入和输出,因此重定向符分为两种。
重定向输入
[n]< file
意思是将输入从文件描述符为n的文件重定向到file。简单理解为,将文件file的内容作为输入,输入给n。
cat < file_new.txt
当然也可以用管道符来实现同样的效果。
重定向输出
[n]> file
意思是将输出从文件描述符为n的文件重定向到file。简单理解为,将n输出的结果作为输入,输入给文件file。
这里需要注意的是,如果file不存在,将会创建file,如果file存在,原有的文件内容将被新的输入内容所覆盖。
如果需要将内容附加到文件中,需要使用>>来替代>符号。
echo “Hello, world!” > file_new.txt
cat file_new.txt
输出:Hello, world!
echo “No!” > file_new.txt
cat file_new.txt
输出:No!
echo “No!” >> file_new.txt
cat file_new.txt
输出:No! No!
操作截图:
在这里插入图片描述

十二、Shell命令补充——文件合并
有两种文件合并的方式,分别是paste和join的方式。
paste命令可以将多个文件以列对列的方式加以合并,是单纯的合并。
join命令可以将多个文件中有相同特征的列进行合并。
操作截图:
(paste)
在这里插入图片描述
(join)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值