位置: 编程技术 - 正文

从Vim中访问shell或者运行外部命令的方法(vim中执行shell命令)

编辑:rootadmin

推荐整理分享从Vim中访问shell或者运行外部命令的方法(vim中执行shell命令),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux如何在vim中查询,vim中执行shell命令,用vim打开sh文件,linux调用vim,vim中执行shell命令,vim进入命令,shell脚本调用vim,vim中执行shell命令,内容如对您有帮助,希望把文章链接给更多的朋友!

Vim——正如你可能已经了解的那样——是一个包含很多特性的强大的编辑器。我们已经写了好多关于 Vim 的教程,覆盖了 基本用法、 插件, 还有一些 其他的 有用的 特性。鉴于 Vim 提供了多如海洋的特性,我们总能找到一些有用的东西来和我们的读者分享。

在这篇教程中,我们将会重点关注你如何在编辑窗口执行外部的命令,并且访问命令行 shell。

但是在我们开始之前,很有必要提醒一下,在这篇教程中提及到的所有例子、命令行和说明,我们已经在 Ubuntu . 上测试过,我们使用的的 Vim 版本是 7.4 。

在 Vim 中执行外部命令

有的时候,你可能需要在 Vim 编辑窗口中执行外部的命令。例如,想象一下这种场景:你已经在 Vim 中打开了一个文件,并做了一些修改,然后等你尝试保存这些修改的时候,Vim 抛出一个错误说你没有足够的权限。

现在,退出当前的 vim 会话,重新使用足够的权限打开文件将意味着你会丢失所做的所有修改,所以,你可能赞同,在大多数情况不是只有一个选择。像这样的情况,在编辑器内部运行外部命令的能力将会派上用场。

稍后我们再回来上面的用例,但是现在,让我们了解下如何在 vim 中运行基本的命令。

假设你在编辑一个文件,希望知道这个文件包含的行数、单词数和字符数。为了达到这个目的,在 vim 的命令行模式下,只需要输入冒号 :,接下来一个感叹号 !,最后是要执行的命令(这个例子中使用的是 wc)和紧接着的文件名(使用 % 表示当前文件)。

这是一个例子:

填入的上面提及的命令行准备执行:

下面是终端上的输出:

从Vim中访问shell或者运行外部命令的方法(vim中执行shell命令)

在你看到输出之后,输入回车键,你将会退回到你的 vim 会话中。

你正在编写代码或者脚本,并且希望尽快知道这段代码或者脚本是否包含编译时错误或者语法错误,这个时候,这种特性真的很方便。

继续,如果需求是添加输出到文件中,使用 :read ! 命令。接下来是一个例子:

read 命令会把外部命令的输出作为新的一行插入到编辑的文件中的当前行的下面一行。如果你愿意,你也可以指定一个特定的行号——输出将会添加到特定行之后。

例如,下面的命令将会在文件的第二行之后添加 wc 的输出。

注意: 使用 $ 在最后一行插入, 0 在第一行前面插入。

现在,回到最开始我们讨论的一个用例,下面的命令将会帮助你保存文件而不需要先关闭文件(这将意味着没有保存的内容不会丢失)然后使用 sudo 命令重新打开。

在 Vim 中访问 shell

除了可以执行单独的命令,你也可以在 vim 中放入自己新创建的 shell。为了达到这种目的,在编辑器中你必须要做的是运行以下的命令:

或者:

当你执行完了你的 shell 任务,输入 exit —— 这将带你回到原来离开的 Vim 会话中。

要谨记的漏洞

虽然在真实世界中,能够访问的 shell 绝对符合它们的用户权限,但是它也可以被用于提权技术。正如我们在早期的一篇文章(在 sudoedit 上)解释的那样,即使你提供给一个用户 sudo 的权限只是通过 Vim 编辑一个文件,他们仍可以使用这项技术从编辑器中运行一个新的 shell,而且他们可以做 root 用户或者管理员用户可以做的所有内容。

总结

能够在 Vim 中运行外部命令在好多场景中(有些场景我们已经在这篇文章中提及了)都是一个很有用的特性。这个功能的学习曲线并不麻烦,所以初学者和有经验的用户都可以好好使用它。

linux的Sudo/su授权命令详解 由于Ubuntu是基于Debian的操作系统,在默认的情况下,是没有超级用户(superuser,root)的,但有些系统操作必须有超级用户的权限才能进行,如手动释放内存

Linux basename命令的使用详解 关于LinuxShell命令basename的使用总结。以下操作在Ubuntu.BashShell中通过。最近在使用shell脚本时需要获取脚本执行时的名称,一般采用$0来获取脚本执行

Linux如何过滤空文件?Linux过滤空文件的命令总结 在Linux中有经常做文件的操作,今天有个同事在生产环境统计数据,发现有很多日志文件都是空的,文件太多了,他想查看一下有哪些文件不是空文件。

标签: vim中执行shell命令

本文链接地址:https://www.jiuchutong.com/biancheng/363108.html 转载请保留说明!

上一篇:利用linux命令行工具进行文本行过滤的方法(linux命令怎么执行)

下一篇:linux的Sudo/su授权命令详解(linux7.2 sudo权限配置)

  • 未达到起征点的增值税会计处理
  • 小微企业的资产总额看哪里判断的
  • 子公司是长期股权投资吗
  • 小规模纳税人开票税率
  • 村集体土地出租公示
  • 单位发放中秋月饼价值有规定吗
  • 企业建设项目审批流程
  • 商业保理公司票据贴现账务处理
  • 公司用现金支付的形式有哪些
  • 公司预支了然后来报销的帐怎么做?
  • 确认委托代销收入会计分录
  • 应收账款贷方余额怎么处理
  • 内蒙古地税电子税务局app
  • 卖菜公司有税务优惠吗
  • 专利权计入什么所得
  • 销售货物收入与租金收入的纳税区别
  • 理财赎回本金没赎回利息咋办
  • 减少其他应付款冲费用做以前年度损益调整如何做分录
  • 委外加工企业怎么样降本
  • 增值税的调增调减
  • 企业所得税年报和增值税收入不一致
  • 企业销售使用过的汽车如何开票
  • 收到进项专用发票会计分录
  • 网页浏览器字体颜色怎么改
  • windows10你需要trustedinstaller提供的权限才能更改
  • 电脑店u盘装系统步骤
  • 劳务公司的账务怎么做账
  • PHP:oci_field_precision()的用法_Oracle函数
  • 单位收到的投标通知书
  • 金融资产的会计处理方法
  • 上飞机可以带2个充电宝吗
  • 个体工商户需要报哪些税
  • 独立核算的基金是会计主体吗
  • 前端vscode配置
  • 股本减少是什么意思
  • 假如你知道这样是什么歌
  • java开源二次开发平台
  • thinkphp codeigniter
  • php中array用法
  • wordpress限制邮箱注册
  • 信息技术服务是什么公司
  • 子公司减资母公司怎么算
  • 计提工会经费明细表
  • 增值税报销是什么意思
  • 周转材料包装箱属于存货分类的
  • 认缴出资和实缴出资时间怎么填
  • python如何反编译
  • 银行承兑汇票存在的风险
  • 年数总和法怎么算年折旧额
  • 投资性房地产由成本模式转为公允价值模式
  • 认证一般纳税人之后,之前开的发票作废重新填开的税率
  • 实收资本报表怎么填
  • 固定资产办理竣工结算之后的处理方式
  • 预缴企业所得税计算公式
  • 劳务公司账务处理实操
  • 帮人家开税票对自己生意有影响么
  • 企业每月利润多少合适
  • 小规模纳税人所得税怎么计算
  • 营业外收入记入企业的什么
  • 高速过路费怎么补交
  • 如果对装修费用有异议怎么办
  • 主营业务成本和其他业务成本区别
  • 发票被认证
  • 辅助生产成本应计入什么
  • 工业增值税怎么算
  • 正确使用气体钢瓶的原则
  • win10好几个操作系统
  • ubuntu能玩什么
  • win7无线网络连接不上怎么解决方法
  • win10系统玩英雄联盟可以吗
  • 如果打招呼了不理是什么原因
  • android openconnect
  • Node.js node-schedule定时任务隔多少分钟执行一次的方法
  • javascript脚本怎么用
  • nodejs+websocket实时聊天系统改进版
  • 基于javascript的毕业设计
  • js延时加载的方法
  • 个体办税控盘需要什么材料
  • 徐州市税务局第三稽查局
  • 津补贴怎么算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设