命令进阶

回忆上节课内容

  • 我们上次研究vim的历史
  • 为什么会有行编辑器这种东西
  • 竟然是当年
  • 没有显示器只有纸的时代的无奈之举
  • vim进化到今天
  • 依然还有好多人使用
  • 而且ssh连接的时候直接vim就很方便
  • 命令行还有什么好玩的么?

缩进控制

  • 我们学习过用<kbd><</kbd><kbd><</kbd>、<kbd>></kbd><kbd>></kbd>控制缩进

    • <kbd><</kbd><kbd><</kbd> 向左一个shiftwidth
    • <kbd>></kbd><kbd>></kbd>向右一个shiftwidth
    • 如果忘了的话,可以:h 'shiftwidth'
  • 如果我们想要多行进行控制呢?
    • :20,40>

      • 20-40 行向右一个 shiftwidth
    • :'a,$>
      • a标记结尾 向右一个 shiftwidth
    • %<
      • 所有行向左一个 shiftwidth

范围添加分号结尾

  • 我们如果想要给从4到10行添加分号结尾,应该如何呢?

  • :4,10normal A;

    • 首先是range,先打上:4,10
    • 然后让这个范围内的东西进入 normal 格式再
    • :4,10normal切换为normal模式
    • 打一个空格,后面打上命令A;
      • A是normal模式下的命令在行尾进入插入模式
      • 在最后的位置插入;
    • 整体的命令为:4,10normal A;
  • 思考

    • 如果我想在8,15行添加//应该如何做呢?
    • 动手试一试!
  • 但是这些都是执行 vim 的内部命令

    • 我想要执行外部命令
    • 比如 shell 中的 ls 可以么?

直接执行外部命令

  • 要直接执行外面的命令比如 ls
  • 我们在前面加上!就可以
    • 比如:!ls
    • 更复杂一些的
      • !javac oeasy.java
      • !source o2z.sh
      • !python3 %
  • 这很方便,直接在vi里面就可以执行命令了
  • 而且编译运行能看到报错的结果
    • 直接G跳到出错那行就可以!
  • 可以直接修改,很爽!!!
  • 超爽!!!
  • 不过这一行命令执行完了就没了
  • 看不见前面执行的结果了
  • 我想一直看见前面的命令和执行结果
  • 可以么?

进入命令模式 ex-mode

  • Normal 模式下直接按下<kbd>Q</kbd>
  • 进入Ex-mode
  • 全屏执行命令格式
  • 可以执行各种命令行
    • :ls
    • :1,3d
    • :1,7p
    • :visual 退回到正常模式
  • 可视化模式 visualvi 名字的来源
  • vi 就是ed + 可视化模式 visual

  • 能直接挂起vim运行命令么?

跳到shell

  • 我们知道我们是从 shell 运行 vim 然后进来的

    • 如果我们想退出 vim 的话需要保存并退出:wq
    • 如果我不想保存并退出
    • 就想切到外面
    • vim 整个进程先挂起放到后台
    • 我们就 <kbd>ctrl</kbd>+<kbd>z</kbd>
    • 我们就挂起 vim 切出去了
  • shell 运行完命令之后
    • fg就可以把vim切回到前台
    • fg的意思是foreground前台

  • 但是我们可以直接不挂起 vim 的情况下
  • 执行 shell 命令么?

分屏终端 :term

  • :term
  • 上面切出一个窗口
    • 执行命令
    • exit 退出 shell

  • 上下切换

    • <kbd>ctrl</kbd>+<kbd>w</kbd> <kbd>j</kbd> 切换到下方窗口
    • <kbd>ctrl</kbd>+<kbd>w</kbd> <kbd>k</kbd> 切换到上方窗口
    • 可以切来切去
    • 一边修改一边运行
  • 这个 :term 什么意思

:term 帮助

  • 什么不会,:h什么

    • :h :term

总结

  • 我们这次研究范围命令执行方法
  • 批量控制缩进
    • :20,40>
  • 批量执行普通模式下的命令
    • :4,10normal A;
  • 直接切换到全屏命令模式 ex-mode
    • Q
  • 执行外部命令
    • !javac oeasy.java
  • 新开一个termianl窗格
    • :term
  • 这个方式真的很爽!
    • vi 什么都干了!
  • 命令模式本身可以再提高效率吗?
  • 下次再说

[Github地址] (https://github.com/overmind1980/oeasyvim)

[Gitee地址] (overmind1980/oeasyvim)

[蓝桥实验楼] (oeasy 教您零基础玩转编辑神器 Vim_Linux - 蓝桥云课)

oeasy教您玩转vim - 49 - # 命令进阶的更多相关文章

  1. oeasy教您玩转vim - 56 - # 字符可视化模式

    ​ 可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...

  2. oeasy教您玩转vim - 57 - # 行可视化

    ​ 可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...

  3. oeasy教您玩转vim - 53 - # 批量替换

    查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...

  4. oeasy教您玩转linux010203显示logo

    我们来回顾一下 上一部分我们都讲了什么?

  5. oeasy 教您玩转linux010101查看内核uname

    linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...

  6. oeasy教您玩转linux010202软件包管理apt

    顾一下 上一部分我们都讲了什么?

  7. oeasy教您玩转linux010201持续输出yes

    我们来回顾一下 上一部分我们都讲了什么?

  8. oeasy教您玩转linux010108到底哪个which

    到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?

  9. oeasy教您玩转linux-010110内容回顾

    我们来回顾一下 我们都讲了什么?

  10. oeasy教您玩转linux010109clear清屏

     回忆上次内容 上次讲了灵魂三问 whatis whereis which 通过这三个问题,可以对命令基本了解,我们来试一下!!

随机推荐

  1. Hugging Face ZeroGPU 计划正式发布—提供价值一千万美元的免费共享 GPU

    在人工智能技术领域,GPU 资源一直是推动研究和应用的关键因素.然而,GPU 的成本和可用性对于许多研究人员和开发者来说却是一个显著的障碍. 在 Hugging Face,我们希望人工智能技术可以更加 ...

  2. 全球厂商之最,华为17篇论文入选国际数据库顶会ICDE

    本文分享自华为云社区<全球厂商之最,华为GaussDB&GeminiDB,17篇论文入选国际数据库顶会ICDE> ,作者:GaussDB 数据库. 5月13-17日,国际数据库顶级 ...

  3. Vue3.0极速入门(二) - 目录和文件说明

    目录结构 以下文件均为npm create helloworld自动生成的文件目录结构 目录截图 目录说明 目录/文件 说明 node_modules npm 加载的项目依赖模块 src 这里是我们要 ...

  4. 将编译过的C++库迅速部署在Visual Studio新项目中

      本文介绍在Visual Studio中,通过属性表,使得一个新建解决方案中的项目可以快速配置已有解决方案的项目中各类已编译好的C++第三方库的方法.   例如,我们现有一个解决方案,其中的一个项目 ...

  5. 使用Docker快速安装Redis

    1.使用docker命令下一个redis的镜像 docker pull redis 2.创建 redis 的 data 目录和 conf 目录 1. cd /home/fengsir/redis 2. ...

  6. 音视频积累-Wakeups 解决

    一.现象 ReplayKit2运行过程中经常会被系统杀掉,在USB连接手机后可以导出crash log Date/Time: 2017-09-29 12:16:59.321071 +0800 OS V ...

  7. ts的keyof

    keyof 是 TypeScript 中的一种类型操作符,用于获取一个类型的所有键(属性名)作为联合类型.它的语法如下: type KeysOfType = keyof ObjectType; 其中: ...

  8. python 如何判断一组数呈上升还是下降趋势

    1. python 判断一组数呈上升还是下降趋势的方法 要判断一组数(数列)是呈上升趋势.下降趋势还是无明显趋势,我们可以比较数列中相邻元素的差值.如果大部分差值都是正数,则数列呈上升趋势:如果大部分 ...

  9. 老张,你的服务是不是挂了?论全局 SLI 的重要性

    场景再现 你正在午休,正梦见中了彩票,突然收到电话告警,说服务对外接口 95 分位延迟突增,惊出一身冷汗,睡意全无,抓紧打开监控系统,查看服务的 SLI 指标,发现确实有问题,已经持续 1 分钟,这服 ...

  10. python3读csv文件,出现UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 0: invalid con

    使用csv.reader(file)读csv文件时,出现如下错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in positio ...