VIM - EX 命令行 - 执行 shell 命令
-
概述
- VIM 下执行 Shell 命令
- 没啥用的知识, 又增长了...
- 你会发现, 其实学会了这些, 好像也没什么实质性的提高
-
背景
- 使用 VIM
- 使用途中, 可能需要执行一些 linux 命令
- 执行的之前, 必须要 退出去, 执行, 然后再重进
- 感觉 有点麻烦...
- 会不会有别的一些方法, 不至于这么麻烦呢?
- 当然有啦...
-
思路
- 切出去切回来
- 不切出去
-
环境
-
OS
- win10
-
shell
- mintty-2.9.4
- git 自带的 shell
- mintty-2.9.4
-
-
提示
- 养成随手保存内容的习惯
1. 思路1: 切出去切回来 - EX 命令行
-
概述
- 切出去切回来 的第一种方式
-
操作
-
切出去
# 切换到 命令模式 # 我这里只有 sh 可以, 也许其他环境, 可以试试 别的 shell : sh # 结果 # 直接切回 命令行
-
切回来
# 快捷键 ctrl + d
-
-
优劣
-
优势
- 简单
- sh 是很常见的命令
- 快捷键 返回感觉比输入 vim
要高级一些...
- 简单
-
劣势
-
sh 只能执行 sh 里的基本命令
- 诸如 ll 之类需要 环境变量 alias 的命令, 都执行不了
-
一次只能 后台一个 vim
- 如果有多个, 则必须嵌套
- 嵌套的时候, 必须关掉一个, 才能返回另一个
-
-
-
问题
- 我有时候真的需要多个 vim 打开多个文件, 有办法吗?
- 当然有啦
- 你可以多开几个 shell
- 或者用 jobs 来处理
- 当然有啦
- 我有时候真的需要多个 vim 打开多个文件, 有办法吗?
2. 思路2: 切出去切回来 - job
-
概述
- 另一种方式
-
操作
-
切出去
# 快捷键 ctrl + z
-
切回来
# 输入命令 > fg
-
-
优劣
-
优势
- 简单
- 快捷键简单
- 支持多个 vim
- 可以同时后台 多个 vim
- 完整命令行
- 可以执行 ll 类需要 alias 的命令
- 速度较快
- 可以当半个 老板键 来用
- 简单
-
劣势
- 需要理解 jobs 命令
- 多个后台时, 需要用 jobs 查看, 才能明确 vim 之间的区别
- 唤醒需要带上 job 编号
- 需要理解 jobs 命令
-
-
问题
- 这还是要切出去. 能不切出去吗?
- 当然可以啦
- 这还是要切出去. 能不切出去吗?
3. 思路3: 不切出去 - EX 命令: !
-
概述
- 不切出去的思路
-
操作
-
执行命令
# 切换到 命令模式 # 假设要执行 ls :! ls # 命令执行
-
返回 vim
- 敲回车就回来了
-
-
优劣
-
优势
- 简单
-
劣势
- 命令行没法执行 ll
-
-
问题
- 有时候我执行的命令, 需要追加到文本里, 有方便的方法吗?
- 有啊
- 有时候我执行的命令, 需要追加到文本里, 有方便的方法吗?
4. 思路4: 不切出去 - 命令结果, 输入 VIM
-
概述
- 结果直接输入文本
-
操作
-
执行命令
# 切换到 命令模式 # 假设要执行 ls # 1. 结果输出在 光标行 后面 :r! ls # 2. 覆盖文件 :%! ls
-
-
优劣
-
优势
- 可以根据光标, 将命令结果追加到指定位置
- 覆盖那个, 应该也会有场景可用吧
-
劣势
- 类似
ll
之类的 alias 命令, 执行不了
- 类似
-
5. 后续
- 注意
- 保存文件
ps
-
ref
-
jobs
- 之前好像用的不多
- 相关命令
- jobs
- fg
- bg
尽量尝试解释清楚; 自己校对能力有限, 如果有错误欢迎指出