热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux删除文本中长度小于行_Linux零基础:vi的使用

vi是unix平台下一个著名的的文本编辑器,需要使用命令进行操作,但是熟练使用它能极大地提高你的效率vi是“visualinterface”的缩写&#x

vi 是 unix 平台下一个著名的的文本编辑器,需要使用命令进行操作,但是熟练使用它能极大地提高你的效率vi是“visual interface”的缩写,vim是vi IMproved(增强版的vi)。可以方便地使用sudo apt-get install vim来安装。

首先,快速入门。vi/vim有三种工作模式:

4843a3f8c04cb4926d665bad0af52c08.png

有的教程中,会把命令模式和底线命令模式合并,形成两种模式。

  • 输入模式 (insert) 用于输入文本。在输入模式下,输入的任何字符都将显示在屏幕并保存于文件中。
  • 命令 (command) 模式用于大多数编辑功能。在命令模式下,所有的输入都将产生一定的响应而不是直接到文本中,例如移动光标、删除一块文本、拷贝文本等。
  • 底线命令模式是执行另外的功能,可以保存文件、退出vi、设置vi、查找、全局替换、处理多个文件等功能。

来详细解释一下。使用vi 后面跟上一个文件名,如果文件存在,则打开;如果文件不存在,则创建一个。

6fa8b6709f8673f6f4721ca80cca0ad2.png

【值得注意的是,在Linux中,文件夹同样也是文件,所以使用vi 也可以打开文件夹。】

f8cd5620d4bdd37def516dfb87d21289.png

所以,如果看到类似这种情况,可能就是操作失误了。


首先,从/etc中拷贝passwd出来。

cp /etc/passwd .

输入模式操作

在使用vi打开文档的时候,默认进入的是命令模式。结合上面的图,在命令模式中, 可以通过输入i、a等命令,进入输入模式。

  • a //在当前光标位置的右边添加文本
  • i //在当前光标位置的左边添加文本
  • A //在当前行的末尾位置添加文本
  • I //在当前行的开始处添加文本(非空字符的行首)
  • O //在当前行的上面新建一行
  • o //在当前行的下面新建一行
  • R //替换(覆盖)当前光标位置及后面的若干文本
  • J //合并光标所在行及下一行为一行(依然在命令模式)

如果想要取消刚才的操作,在命令模式下输入 u。

  • :w //保存文件
  • :w a.txt //保存至a.txt文件
  • :q //退出编辑器,如果文件已修改,使用下面两个命令
  • :q! //退出编辑器,且不保存
  • :wq //退出编辑器,且保存文件
  • :w [filename] //另存为新文件
  • :r [filename] //读入新文件内容
  • :n1, n2 w [filename] //将n1到n2的内容保存为新文件

在命令模式下控制光标的移动:

使用上下左右方向键;h 向左、j 向下 、k 向上、l 向右。

c1b848cf161f5b82955c8977bdb0ed5b.png

可以在命令前边添加一个数字作为前缀,例如,2j 将光标向下移动两行;10l向右移动10个字符;也可以将数字和上下左右方向键结合使用。

8d7cba491496c1c221e65da34578ec5f.png

空格键 向右、Backspace 向左、Enter 移动到下一行首、- 移动到上一行首。

  • 按「ctrl」+「b」:屏幕往“后”移动一页。
  • 按「ctrl」+「f」:屏幕往“前”移动一页。
  • 按「ctrl」+「u」:屏幕往“后”移动半页。
  • 按「ctrl」+「d」:屏幕往“前”移动半页。
  • 按数字「0」:移到文章的开头。
  • 按「G」:移动到文章的最后。
  • 按「$」:移动到光标所在行的“行尾”。
  • 按「^」:移动到光标所在行的“行首”
  • 按「w」:光标跳到下个字的开头
  • 按「e」:光标跳到下个字的字尾
  • 按「b」:光标回到上个字的开头
  • 按「#l」:光标移到该行的第#个位置,如:5l,56l。
  • n+ //向下跳n行
  • n- //向上跳n行
  • nG //跳到行号为n的行
  • G //跳至文件的底部

在命令模式下删除

  • x //删除当前字符
  • nx //删除从光标开始的n个字符
  • dd //删除当前行
  • ndd //向下删除当前行在内的n行
  • u //撤销上一步操作
  • U //撤销对当前行的所有操作

更复杂的操作:

  • :x,.d #从x行删除到当前行;
  • :.,xd #从当前行删除到x行;
  • :x,.+3d #从x行删除到当前行后第三行;
  • :x,.-1d #从x行删除到当前行前一行
  • 删除包含特定字符的行: g/pattern/d
  • 删除不包含指定字符的行: v/pattern/d g!/pattern/d

在命令模式下复制

  • yy //将当前行复制到缓存区,也可以用 "ayy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。
  • nyy //将当前行向下n行复制到缓冲区,也可以用 "anyy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。
  • yw //复制从光标开始到词尾的字符。
  • nyw //复制从光标开始的n个单词。
  • y^ //复制从光标到行首的内容。
  • y$ //复制从光标到行尾的内容。
  • p //粘贴剪切板里的内容在光标后,如果使用了前面的自定义缓冲区,使用"ap 进行粘贴。
  • P //粘贴剪切板里的内容在光标前,如果使用了前面的自定义缓冲区,使用"aP 进行粘贴。
  • 全部删除:按esc键后,先按gg(到达顶部),然后dG
  • 全部复制:按esc键后,先按gg,然后ggyG

设置和显示行号

  • :set nu //显示行号
  • :set nonu //取消显示行号

替换(底行命令模式下使用)

  • :s/old/new //用new替换行中首次出现的old
  • :s/old/new/g //用new替换行中所有的old
  • :n,m s/old/new/g //用new替换从n到m行里所有的old
  • :%s/old/new/g //用new替换当前文件里所有的old
  • :%s/old/new/gc //用new替换当前文件里进行替换,并且给出提示

修改文件格式

:set fileformat=unix //将文件修改为unix格式,如win下面的文本文件在linux下会出现^M


vi练习

  1. 请在 /tmp 这个目录下建立一个名为 vitest 的目录;
  2. 进入 vitest 这个目录当中;
  3. 将 /etc/manpath.config 复制到本目录中;
  4. 使用 vi 开启本目录下的 man.config 这个档案;
  5. 在 vi 中设定一下行号;
  6. 移动到第 55 行,向右移动 10 个字符?
  7. 移动到第一行,并且向下搜寻一下『global 』这个字符串,请问在第几行?
  8. 接着下来,我要将 50 到 100 行之间的『小写 man 字符串』改为『大写 MAN 字符串』,并且一个一个挑选是否需要修改,如何下达指令?如果在挑选过程中一直按『y』, 结果会在最后一行出现改变了几个 man 呢?
  9. 修改完之后,突然反悔了,要全部复原,有哪些方法?
  10. 我要复制 65 到 73 这九行的内容(含有MANPATH_MAP),并且贴到最后一行之后;
  11. 21 到 28 行之间的开头为 # 符号的批注数据我不要了,要如何删除?
  12. 将这个档案另存成一个 man.test.config 的檔名;
  13. 去到第 27 行,并且删除 15 个字符,结果出现的第一个单字是什么?
  14. 在第一行新增一行,该行内容输入『I am a student...』;

答案:

  1. mkdir /tmp/vitest
  2. cd /tmp/vitest
  3. cp /etc/manpath.config .
  4. vi man.config
  5. :set nu然后你会在画面中看到左侧出现数字即为行号。
  6. 先按下55G 再按下10→ ;
  7. 先执行1G或gg后,直接输入/global
  8. 直接下达:50,100s/man/MAN/gc 即可!若一直按『y』最终会出现『在45 行内置换 60 个字符串』的说明。
  9. (1)简单的方法可以一直按『 u 』回复到原始状态,(2)使用不储存离开『 :q! 』之后,再重新读取一次该文件;
  10. 65G 然后再 9yy 之后最后一行会出现『复制九行』之类的说明字样。 按下『 G 』到最后一行,再使用 p 粘贴九行。
  11. 因为 21~28 8 行,因此21G 之后,再使用 8dd 就能删除
  12. :w man.test.config ,你会发现最后一行出现 "man.test.config" [New].. 的字样。
  13. 27G 之后, 15x 即可删除 15 个字符;
  14. 先1G 去到第一行,然后按下大写的O 便新增一行且在插入模式;开始输入“I am a student...“后, 按下[Esc]回到一般模式等待后续工作;
  15. :wq

交互式练习:

Interactive Vim tutorial​www.openvim.com


推荐阅读
  • systemd-nspawn可以创建最轻量级的容器(ns的意思就是namespace),本文的实验平台是Ubuntu16.04,x86_64机器。本文的目的是:在Ubuntu中用syst ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • linux qt打开常用文件格式,设置Linux Qt文件默认打开方式为QtCreator
    Linux自定义文件打开方式也可参照文本抱歉,本文前段时间写的ubuntu下的Qt工程文件默认打开方式是不好用的,因为其他的文本文件也会受到影响,强迫症患者,每次打开Qt工程都是先 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • 本文主要介绍关于linux文件描述符设置,centos7设置文件句柄数,centos7查看进程数的知识点,对【Linux之进程数和句柄数】和【linux句柄数含义】有兴趣的朋友可以看下由【东城绝神】投 ... [详细]
  • 树状笔记软件for linux,Ubuntu 14.04安装开源树状笔记管理软件 WikidPad 2.2
    WikidPad是一款开源免费的wiki风格的树状笔记管理软件,类似于Notepad。基于Python,支持Windows、Mac、Linux等平台。W ... [详细]
author-avatar
若v0丷會飛的獨角獸
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有