VIM - EX 命令行 - 执行 shell 命令

  1. 概述

    1. VIM 下执行 Shell 命令
    2. 没啥用的知识, 又增长了...
      1. 你会发现, 其实学会了这些, 好像也没什么实质性的提高
  2. 背景

    1. 使用 VIM
    2. 使用途中, 可能需要执行一些 linux 命令
    3. 执行的之前, 必须要 退出去, 执行, 然后再重进
      1. 感觉 有点麻烦...
    4. 会不会有别的一些方法, 不至于这么麻烦呢?
      1. 当然有啦...
  3. 思路

    1. 切出去切回来
    2. 不切出去
  4. 环境

    1. OS

      1. win10
    2. shell

      1. mintty-2.9.4
        1. git 自带的 shell
  5. 提示

    1. 养成随手保存内容的习惯

1. 思路1: 切出去切回来 - EX 命令行

  1. 概述

    1. 切出去切回来 的第一种方式
  2. 操作

    1. 切出去

      # 切换到 命令模式
      # 我这里只有 sh 可以, 也许其他环境, 可以试试 别的 shell
      : sh
      
      # 结果
      # 直接切回 命令行
      
    2. 切回来

      # 快捷键
      ctrl + d
      
  3. 优劣

    1. 优势

      1. 简单
        1. sh 是很常见的命令
        2. 快捷键 返回感觉比输入 vim 要高级一些...
    2. 劣势

      1. sh 只能执行 sh 里的基本命令

        1. 诸如 ll 之类需要 环境变量 alias 的命令, 都执行不了
      2. 一次只能 后台一个 vim

        1. 如果有多个, 则必须嵌套
        2. 嵌套的时候, 必须关掉一个, 才能返回另一个
  4. 问题

    1. 我有时候真的需要多个 vim 打开多个文件, 有办法吗?
      1. 当然有啦
        1. 你可以多开几个 shell
        2. 或者用 jobs 来处理

2. 思路2: 切出去切回来 - job

  1. 概述

    1. 另一种方式
  2. 操作

    1. 切出去

      # 快捷键
      ctrl + z
      
    2. 切回来

      # 输入命令
      > fg
      
  3. 优劣

    1. 优势

      1. 简单
        1. 快捷键简单
      2. 支持多个 vim
        1. 可以同时后台 多个 vim
      3. 完整命令行
        1. 可以执行 ll 类需要 alias 的命令
      4. 速度较快
        1. 可以当半个 老板键 来用
    2. 劣势

      1. 需要理解 jobs 命令
        1. 多个后台时, 需要用 jobs 查看, 才能明确 vim 之间的区别
        2. 唤醒需要带上 job 编号
  4. 问题

    1. 这还是要切出去. 能不切出去吗?
      1. 当然可以啦

3. 思路3: 不切出去 - EX 命令: !

  1. 概述

    1. 不切出去的思路
  2. 操作

    1. 执行命令

      # 切换到 命令模式
      # 假设要执行 ls
      :! ls
      
      # 命令执行
      
    2. 返回 vim

      1. 敲回车就回来了
  3. 优劣

    1. 优势

      1. 简单
    2. 劣势

      1. 命令行没法执行 ll
  4. 问题

    1. 有时候我执行的命令, 需要追加到文本里, 有方便的方法吗?
      1. 有啊

4. 思路4: 不切出去 - 命令结果, 输入 VIM

  1. 概述

    1. 结果直接输入文本
  2. 操作

    1. 执行命令

      # 切换到 命令模式
      # 假设要执行 ls
      
      # 1. 结果输出在 光标行 后面
      :r! ls
      
      # 2. 覆盖文件
      :%! ls
      
  3. 优劣

    1. 优势

      1. 可以根据光标, 将命令结果追加到指定位置
      2. 覆盖那个, 应该也会有场景可用吧
    2. 劣势

      1. 类似 ll 之类的 alias 命令, 执行不了

5. 后续

  1. 注意
    1. 保存文件

ps

  1. ref

    1. VIM中获取命令的打印结果
    2. 使用vim在文件中插入命令执行的输出结果
    3. vi使用时如何切换到terminal再切换回去
  2. jobs

    1. 之前好像用的不多
    2. 相关命令
      1. jobs
      2. fg
      3. bg
posted @ 2020-10-30 14:49  轩辕拾銉  阅读(237)  评论(0编辑  收藏  举报