Linux基础(day18)

5.5 进入编辑模式

  • 编辑模式:就是进入到可以编辑文本文件的模式
  • 进入编辑模式方法:
    • i ,直接在当前光标处进入编辑模式
    • I (大写I),光标直接移动到该行的行首,并进入编辑模式
    • o (小写o),从光标所在的行跳转到下一行写入东西
    • O (大写O),从光标所在的行,跳转到上一行写入东西
    • a (after),光标会从当前的字符移动到下一个字符,进行写入
    • A ,光标会直接移动到该行的行末字符,并移动到下一个字符进行编写

5.6 vim命令模式

搜索内容

  • 在命令模式中,用 /root (root为要搜索的内容)去搜索,然后会高亮显示出来,从上往下查找
    • 按 n 键,会从上到下依次显示出搜索内容(搜索到最后一个 高亮的词 会在左下角提示)
    • 按 shift+n 键或 N 键,向上查看
  • 用 ?root (root为要搜索的内容)去搜索,高亮显示,从下往上查找
    • 按 n 键,从下往上依次查看高亮显示的内容
    • 按shift+n 键或 N 键,从上往下查看高亮显示的内容

替换内容

  • 批量更换内容 :/1,100s/root/hanfeng/g 表示在1到100行中,把root全局替换成hanfeng
    • 1,100 确认范围
    • s 表示要开始替换了
    • g 表示全局替换,(比如在一行中,有两个root字符,不加g,就只替换第一个;加g,就会都替换掉)
  • 输入 : 后,按方向键可调出上次所按的命令
  • 不指定范围,全文替换
    • :1,$s/bash/1234/g 表示文本中,全文替换,将bash替换成1234
  • 按 u 键,返回上次操作

特殊替换

  • 将全文中 /etc/hf 文件,替换成 hhh
    • 法一 :1,$s//etc/hf/hhh/g 其中的 \ 表示脱义,否则会识别不了
    • 法二 :1,$s#/etc/hf#hhh#g 用#号,来表示语法的组成字符
    • 法三 :1,$s@/etc/hf@hhh@g 用@ 符号,来表示语法组成符号
      • 法二、法三这两种方法,适用于,在替换的内容中也存在 /,就可以使用

保存

  • :q 直接退出
  • wq 常规保存退出
  • wq! 强制保存退出

显示行号和不显示行号

  • :set nu 表示显示出行号
  • :set nonu 表示不显示行号

不显示高亮

  • 当搜索的内容,会显示背景色,不想显示背景色
  • 按 :nohl 就会取消显示高亮

特殊的保存退出

  • :x 表示保存退出,类似于:wq
  • :x和:wq不同之处
    • 若是修改文件之后,去保存,这两种效果是相同的
    • 若是打开后,没有任何操作,仅仅是查看
      • 使用 :x ,未操作,就不胡更改任何的东西
      • 使用 :wq ,就会更改mtime,更改成你保存查看文件的时间

5.7 vim实践

  • 多练习,记好笔记
# cp /etc/dnsmasq.conf  /tmp/1.txt

(1) 分别向下、向右、向左、向上移动6个字符(6j 6l 6h 6k)。
(2) 分别向下、向上翻两页(分别按两次ctrl+f和ctrl+b)。
(3) 把光标移动到第49行(49G)。
(4) 把光标移动到行尾,再移动到行首(Shift+4, Shift+6)。
(5) 移动到1.txt文件的最后一行(G)。
(6) 移动到文件的首行(gg)。
(7) 搜索文件中出现的“dnsmasq”,并数一下该字符串出现的次数(/dnsmsq 然后按n)。
(8) 把从第1行到第10行出现的dnsmasq替换成dns(:1,10s/dnsmasq/dns/g)。
(9) 还原上一步操作(u)。
(10) 把整个文件中所有的etc替换成cte(:1,$s/etc/cte/g)。
(11) 把光标移动到第25行,删除字符串 “ly”(25G 然后按 l 向右移动光标找到"ly",按v选中,然后按x)。
(12) 还原上一步操作(u)。
(13) 删除第50行(50G dd)。
(14) 还原上一步操作(u)。
(15) 删除第37-42行的所有内容(37G 6dd)。
(16) 还原上一步操作(u)。
(17) 复制第48行的内容并粘贴到第52行下面(48G yy 52G p)。
(18) 还原上一步操作(u)。
(19) 复制第37-42行的内容并粘贴到第44行上面(37G 6yy 44G P)。
(20) 还原上一步操作(按u)。
(21) 把第37-42行的内容移动到第19行下面(37G 6dd 19G p)。
(22) 还原上一步操作(按u)。
(23) 把光标移动到首行,把第1行内容改为“#!/bin/bash”(先按gg,把光标定位到第1行,然后按字母A,进入编辑模式,同时>光标到行末尾,进行修改操作,完成后按ESC)。
(24) 在第1行下面插入新的一行,并输入“# Hello!”(按o进入编辑模式,同时光标向下另起一行,输入“# Hello!”)。
(25) 保存文档并退出(按Esc键,输入“:wq”)。

扩展

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏xingoo, 一个梦想做发明家的程序员

Express开发实例(2) —— Jade模板引擎

前一篇通过helloworld,简单介绍了Express中的开发,本篇继续深入的学习express的模板。 关于Jade的用法,网上有很多,本篇参考:Jad...

22260
来自专栏cloudskyme

Maven项目中如何将自定义标签的tld文件添加到META-INF目录下

项目开发中为了提高复用性,经常把自定义标签打成单独的jar文件,同时将tld文件添加到jar文件中的META-INF目录下,这样其他的项目就能很方便的使用这些自...

35670
来自专栏LanceToBigData

linux(五)之vi编译器

前面介绍了linux的常用命令和对文本的操作,接下来我将对大家领略一下vi编译器的强大功能。 希望大家觉得写的还不错的话可以点个“推荐”哦! 一、vim/vi编...

23180
来自专栏前端儿

Node.js起步 -- (1)

  我们知道JavaScript是运行在浏览器中的,浏览器为它提供了一个上下文(context),从而让JavaScript得以解析执行。

16920
来自专栏欧阳大哥的轮子

深入iOS系统底层之XCODE对汇编的支持介绍

一个好的IDE不仅要提供舒适简洁和方便的源代码编辑环境,还要提供功能强大的调试环境。XCODE是目前来说对iOS应用开发支持的最好的IDE(虽然Visual S...

11320
来自专栏吴老师移动开发

[Flutter]Flutter Dart 静态变量值为null的bug

Flutter还在学习中,我是以开发一个小的App来学习的,昨天做到一个需求是用户登录后用一个static的变量来缓存登录用户的信息。变量的赋值什么的都没有问题...

73220
来自专栏Golang语言社区

Golang通用连接池

连接池在编程中并不少见,链接数据库,redis等操作都需要连接池,否则就会出现并发问题,如果每次操作都建立一条新的链接将会大大消耗资源,笔者也是在使用thrif...

14940
来自专栏DHUtoBUAA

【持续更新】.Net 开发中给自己埋下的坑!

1、文件“XXX”正在由另一进程使用,因此该进程无法访问此文件。 原因剖析:文件在主线程操作,在子线程中读写操作文件,刚开始没有意识到程序的问题所在,总是在Fi...

30240
来自专栏代码GG之家

Scoops android app多主题架构(五)

原理分析 核心代码位置 https://github.com/52inc/Scoops/tree/master/scoops/src/main/java/com...

21390
来自专栏吴伟祥

关于在linux下清屏的几种技巧 转

在windows的DOS操作界面里面,清屏的命令是cls,那么在linux 里面的清屏命令是什么呢?下面笔者分享几种在linux下用过的清屏方法。

16020

扫码关注云+社区

领取腾讯云代金券