首页 > 其他分享 >系统集成03-文本编辑器

系统集成03-文本编辑器

时间:2023-05-06 16:47:12浏览次数:45  
标签:03 文本编辑 文件 模式 vim 系统集成 命令 文本

系统集成03-文本编辑器

文本处理是操作系统对文件管理的基础操作,文本编辑器是计算机软件中的一种,主要用来编写和查看文本文件。不同的文件编辑器有不同的辅助功能。

1 Linux常用文本编辑器介绍

文本编辑器是操作系统基础的功能软件之一。根据使用环境的不同,Linux的文本编辑器有很多类型

常见的Linux文本编辑器有:

  1. emacs

    emacs是一款功能强大的编辑器,与其说是一款编辑器,它更像一个操作系统。emacs带有内置的网络浏览器、IRC客户端、计算器,甚至是俄罗斯方块。当然,emacs需要在图形化界面的Linux中使用

  2. nano

    nano是命令行界面下一个相对简单的文本编辑器,它是为了代替闭源的Pico文本编辑器而开发的,1999年以GPL协议发布第一个版本,是一个自由软件,同时也是GNU计划的一个组成部分。nano有很多人性化的功能设计,如语法高亮、正则表达式搜索和替换、平滑滚动、多个缓冲区、自定义快捷键、撤销或重复编辑。

  3. gedit

    gedit是一个GNOME桌面环境下兼容UTF-8的文本编辑器。它简单易用,有良好的语法高亮,对中文支持很好,支持包括GB2312、GBK在内的多种字符编码。gedit是一款自由软件。gedit包含语法高亮和标签编辑多个文件的功能。利用GNOMEVFS库,它还可以编辑远程文件。它支持完整的恢复和重做系统以及查找和替换。

  4. kedit

    与gedit类似,kedit是KDE图形化桌面中常用的一种文本编辑器。kedit是一个非常小的编辑器,特别适用于浏览文本和各种配置文件

  5. vi

    vi是标准的Unix文本编辑器,也是最古老的文本编辑器、最通用的文本编辑器。所有的Linux、Unix都默认带有vi文本编辑器。虽然vi的操作方式与其他常用的文本编辑器(如gedit)很不相同,但是由于其运行于字符界面,并可用于所有unix/linux环境,仍被经常使用

    vi的三种命令模式:

    • Command:命令模式,用于输入命令
    • Insert:插入模式,用于插入文本
    • Visual:可视模式,用于浏览文本
  6. vim

    Vim是从vi发展出来的一个文本编辑器。其代码补完、编译及错误跳转等方便编程的功能特别丰
    富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。

    Vim具有多种模式:

    • 基本模式:普通模式、插入模式、可视模式、选择模式、命令行模式、Ex模式
    • 派生模式:操作符等待模式、插入普通模式、插入可视模式、插入选择模式、替换模式
    • 其他:Evim

2 唯一神vim

2.1 vim编辑器命令格式

命令格式:

vim [options] [file]...	#编辑指定文件
vim [options]-	#从标准输入(stdin)读取文本
vim [options]-t tag	#编辑tag定义出的文件
vim [options]-q [errorfile]	#编辑第一个出错处的文件

常见参数:

  • -c:打开文件前线执行指定的命令
  • -R:以只读方式打开,但是可以强制保存
  • -M:以只读方式打开,不可以强制保存
  • -r:回复崩溃的会话
  • +num:从第num行开始

2.2 vim基础操作

2.2.1 vim打开文件

vim filename
  • 如果filename文件存在,则会打开文件并显示文件内容
  • 如果filename文件不存在,vim会在下面提示[NewFile],并且会在第一次保存时创建该文件

2.2.2 移动光标

  • 快速移动光标
    • 上下左右键或k、j、h、l键上下左右移动光标
    • 0 移动到行首
    • g0 移到光标所在屏幕行行首
    • :n 移动到第n行
    • gg: 到文件头部
    • G: 到文件尾部
  • 数据操作
    • yy or Y: 复制整行文本
    • y[n]w: 复制一(n)个词
    • d[n]w: 删除(剪切)1(n)个单词
    • [n]dd: 删除(剪切)1(n)行
    • u: 复原前一个动作(撤销)

2.2.3 数据操作

  • 复制:
    • yy or Y: 复制整行文本
    • y[n]w: 复制一(n)个词
  • 粘贴:
    • 面向行的数据:
    • p放置数据在当前行的下面
    • P放置数据在当前行的上面
    • 面向字符的数据:
    • p放置数据在光标的后面
    • P放置数据在光标前
  • 删除:
    • d[n]w: 删除(剪切)1(n)个单词
    • [n] dd: 删除(剪切)1(n)行

2.2.4 查找与替换

  • 查找
    • :/word 在光标之后查找一个字符串word,按n向后继续搜索,N向上搜索。
    • :?word 在光标之前查找一个字符串word,按n向后继续搜索。
  • 替换
    • :1,5s /word1/word2/g 将文档中1-5行的word1替换为word2,不加g则只替换每行的第一个word1。
    • :%s /word1/word2/gi 将文档所有的word1替换为word2,不区分大小写。

2.2.5 设置搜索高亮

  • 临时设置时,在命令模式下输入

    :set hlsearch

  • 永久设置,需要在/etc/vimrc中配置,增加一行set hlsearch,然后更新变量即可

2.2.6 修改文件

使用vimfilename打开文件后,进入的是普通模式。当想要修改文件时,可以按i键进入插入模式。进入插入模式时,会在最下面提示当前模式是Insert。按ecs可以退出插入模式,回到普通模式。

2.2.7 撤销或重做

  • u 撤销最近的改变
  • U 撤销当前行自从光标定位在上面开始的所有改变
  • Ctrl+r 重做最后一次“撤销”改变

2.2.8 保存文件并退出

  • 退出插入模式:

    在插入模式下按ecs键退出插入模式

  • 常用的保存/退出的命令:

    • :w 保存
    • :q 退出
    • :wq 保存并退出
    • :q! 强制退出
    • :wq! 强制保存并退出

3 文本处理

查看文件方面可以使用cat、more、less、more、tail等等, 上一篇博客有写到, 这里就不展开介绍了

提取列或字段-cut&awk

cut用于显示文件或者标准输入的特定列

命令格式:

cut [option] ... [文件]

常用选项:

  • -b[范围]:仅显示行中指定直接范围的内容
  • -c[范围]:仅显示行中指定范围的字符
  • -d:指定字段的分隔符,默认的字段分隔符为“TAB”
  • -f[范围]:显示指定第num个字段的内容,可以用逗号隔开显示多个字段

awk是一个强大的文本分析工具,简单来说awk就是把文件或者标准输入逐行读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理

[root@openEuler~]#last -n 5 | awk ‘{print$1}’	#显示最近登录系统的5个账号

awk基本命令格式:awk动作文件名,如:awk '{print$0}'t est.txt

管道命令符“|”的作用是将前一个命令的标准输出当作后后一个命令的标准输入,格式为“命令A | 命令B”

提取关键字-grep

grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。

命令格式:grep [option] [file] ...

常用选项:

  • -c:统计符合样式的行数
  • -i:忽略大小写
  • -w:只显示全子符合的行
  • -x:只显示全行符合的行

文本统计-wc

wc命令用于计算字数。利用wc指令我们可以计算文件的字节数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据

命令格式:wc [option] ... [file] ...

常用选项:

  • -c或--bytes或--chars:只显示字节数
  • -l或--lines:只显示行数
  • -w或--words:只显示字数

文本排序-sort

sort命令可以将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。

命令格式:sort [option] ... [file] ...

常用选项:

  • -b:忽略每行前面开始的空格字符
  • -c:检查文件是否已经按照顺序排序
  • -d:排序时,处理英文字母、数字及空格字符外,忽略其他字符
  • -f:排序时,将小写字母视为大写字母
  • -n:依照数值的大小排序
  • -r:以降序排列,默认升序
  • -o <文件>:将排序后的结果存入指定的文件
  • -u:忽略相同行(重复项)

文本比较-diff

diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录

命令格式:diff [option] ... file

常用选项:

  • -B:不检查空白行
  • -c:显示全部内文,并标出不同之处
  • -i:忽略大小写的不同
  • -r:比较子目录中的文件
  • -w:忽略全部的空格字符

文本操作工具-tr&sed

tr指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备,常用于转换或删除文件中的字符

命令格式:tr [option] ... set1 [set2]

[root@openEuler~]#cat text.txt | tr a-z A-Z	#将小写转换为大写输出

常用选项:

  • -c:反选设定字符,也就是符合set1的部分不做处理,不符合的剩余部分才进行转换
  • -d:删除字符
  • -s缩减连续重复的字符成指定的单个字符
  • -t:削减set1指定范围,使之与set2设定长度相等

相比较tr,sed可以修改字符串。sed是一种在线编辑器,可以对来自文件、以及标准输入的文本进行编辑。执行时,sed会从文件或者标准输入中读取一行,将其复制到缓冲区,对文本编辑完成之后,读取下一行直到所有的文本行都编辑完毕。所以sed命令处理时只会改变缓冲区中文本的副本,如果想要直接编辑原文件,可以使用-i选项或者将结果重定向到新的文件中。

命令格式:sed [option] ... [option] {script-only-if-no-other-script} [input-file]...

常用选项:

  • -n:取消默认输出
  • -e:多点编辑,可以执行多个子命令
  • -f:从脚本文件中读取命令
  • -i:直接编辑原文件
  • -l:指定行的长度
  • -r:在脚本中使用扩展表达式

标签:03,文本编辑,文件,模式,vim,系统集成,命令,文本
From: https://www.cnblogs.com/konjac-wjh/p/17377853.html

相关文章

  • ICT实战系统集成-LAB9-Samba文件共享服务器管理
    ICT实战系统集成-LAB9-Samba文件共享服务器管理实验步骤1安装samba服务端安装samba、samba-common、samba-clientyuminstallsambasamba-commonsamba-client启动samba:ststemctlstartsmb.service查看samba状态2添加系统组share,添加系统账号xiaoming、hanmeimei......
  • ICT实战系统集成-LAB6-openEuler管理文件系统及存储
    LAB6-openEuler管理文件系统及存储1实验要求1.1添加两块scsi硬盘,大小分别为10G1.2对新添加的硬盘1(如:/dev/sdb)进行MBR分区、格式化、挂载1、使用fdisk对/dev/sdb进行分区:/dev/sdb1为主分区1大小2G、/dev/sb2为扩展分区大小8G,在/dev/sb2的基础上建立扩展分区/dev/sdb5,大小......
  • ICT实战系统集成-LAB5-OpenEuler软件管理
    系统集成-LAB5-OpenEuler软件管理1实验要求任务一:使用rpm包安装zziplib工具1、完成安装2、查询zziplib工具是否安装成功3、查询zziplib工具的文件列表和完整目录4、查询zziplib工具的详细信息5、对zziplib工具进行卸载任务二:使用yum/dnf安装java-1.8.01、完成yum/dnf源......
  • ICT实战系统集成-LAB2-openEuler 命令行基础操作入门
    ICT实战系统集成-实验02-openEuler命令行基础操作入门1思考题1.1创建一个/iamthebest目录;1.2在/iamthebest目录下创建/cat和/dog两个目录;1.3将/etc/passwd文件复制到/iamthebest目录;并查看被复制文件的操作权限;1.4尝试执行cp-i/etc/passwd.你会发现什么?为什么......
  • 【JVM 堆 03】
    一、堆的细分内存结构1、Java8及之后堆内存逻辑上分为三部分:新生区+养老区+元空间YoungGenerationSpace 新生区Young/New又被划分为Eden区和Survivor区TenureGenerationspace 养老区Old/TenureMeta Space 元空间......
  • TypeError: 'numpy.float64' object cannot be interpreted as an integer
    报错内容:Traceback(mostrecentcalllast):File"C:\Users\xuan\.conda\envs\pytorch1-6\lib\site-packages\scipy\sparse\_sputils.py",line225,inisintlikeoperator.index(x)TypeError:'numpy.float64'objectcannotbeinterpre......
  • 界面控件DevExpress WPF富文本编辑器,让系统拥有Word功能(二)
    DevExpressWPF控件的富文本编辑器允许开发者将文字处理功能集成到下一个WPF项目中,凭借其全面的文本格式选项、邮件合并以及丰富的终端用户选项集合,可以轻松地提供MicrosoftWord功能。DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。......
  • 浅谈(0,eval)('window')
    浅谈(0,eval)('window')最近研究qiankun源码,在import-html-entry包中看到这个,一脸懵,研究了一下,记录一下。参考了这篇博客这个干啥用的 //通过这种方式获取全局window,因为script也是在全局作用域下运行的,所以我们通过window.proxy绑定时也必须确保绑定到全局window上......
  • The plugin distribution bundles IDE packages 'com.intellij.uiDesigner.core',
    错误描述:TheplugindistributionbundlesIDEpackages'com.intellij.uiDesigner.core','com.intellij.uiDesigner'.BundlingIDEpackagesisconsideredbadpracticeandmayleadtosophisticatedcompatibilityproblems.Considerexcludingthe......
  • LeetCode 203. 移除链表元素
    题目链接:LeetCode203.移除链表元素本题是一个经典的单链表删除元素的题目,主要注意的有两点:如果删除的元素是不是头元素,则直接p.Next=p.Next.Next即可如果删除的元素是头元素,则需要进行单独的处理forhead!=nil&&head.Val==val{head=head.Next}ifh......