通常在使用!运行外部Shell命令时,将显示提示信息“Press ENTER or type command to continue”,需要用户点击回车键才可以返回常规模式。

使用silent静默执行命令

如果不希望显示提示信息,那么可以使用:silent命令:

:silent !echo 'Hello World'

如果需要清除命令本身及其输出信息,那么可以使用Ctrl-L快捷键或:redraw!命令来重画屏幕。

您可以自定义命令,来合并以上两步操作:

:command! -nargs=1 Silent execute ':silent !'.<q-args> | execute ':redraw!'

使用以下自定义命令,将首先执行外部命令,然后重画屏幕:

:Silent echo 'Hello World'

通过结合:execute命令,可以生成并执行较复杂的命令:

:silent exec "!command"

定义以下快捷键,在Linux下静默执行命令。比如使用eSpeak将文字转换为语音:

:nnoremap <leader>es :silent exec '!espeak "hello world" &'<CR>

定义以下快捷键,在Windows下使用默认程序打开当前文件。比如使用默认浏览器,打开当前编辑的HTML文档:

:nmap <Leader>x :silent ! start "1" "%:p"<CR>

后台执行命令

使用以下命令,可以利用Shell后台执行命令和重定向的能力:

:silent exec "!(ping www.vim.org >ping.out >2&1) &"

  • >ping.out,即1>ping.out,表示将命令的标准输出(stdout)重定向到名为“ping.out”的文件;因为默认值为1,所以可以省略;
  • >2&1,表示将“2”代表的标准错误(stderr)也重定向至“1”代表的标准输出(stdout);即标准输出和标准错误都输出至名为“ping.out”的文件;
  • &,表示在后台执行命令。

如果不希望外部命令输出任何信息,那么可以将标准输出指向空设备文件“/dev/null”:

:silent exec "!(ping www.vim.org >/dev/null >2&1) &"

也可以静默执行外部命令,并在新建标签页(Tab)内显示命令输出:

:silent exec "!(echo 'Hello World') > test.txt" | :tabedit test.txt

如果希望在分割窗口内显示命令输出,那么可以使用:split命令:

:silent exec "!(echo 'Hello World') > test.txt" | :sp test.txt

后台打开应用窗口

使用以下命令,将打开与当前文件同名的PDF文档。由于Zathura窗口在前台显示,所以无法在Vim窗口中继续进行编辑;关闭zathura窗口之后,也需要在Vim中点击回车键以返回常规模式:

:!zathura %:r.pdf

使用以下命令,将打开与当前文件同名的PDF文档。由于zathura窗口在前台显示,所以无法在Vim窗口中继续进行编辑;关闭zathura窗口之后,不需要在Vim中点击回车键即可返回常规模式:

:silent !zathura %:r.pdf

使用以下命令,将在后台打开与当前文件同名的PDF文档。由于zathura窗口在后台显示,所以无需关闭zathura窗口,也无需点击回车键,即可以在Vim窗口中继续进行编辑:

:silent exec '!zathura '.expand("%:r").'.pdf &'

实例:静默压缩文件

使用以下命令,可以使用Zip压缩当前文件:

:!zip test.zip %:p

屏幕将显示以下信息,并等待用户按回车键以返回常规模式:

使用以下命令,则屏幕不会显示任何信息,并且自动返回常规模式:

:silent !zip test.zip %:p

使用以下命令,可以批量压缩所有打开的文件:

:silent bufdo !zip test.zip %:p

实例:静默载入视图

如果希望记忆光标位置和手动折叠(Fold),以便在重新打开文件时恢复到之前的编辑状态。那么可以在vimrc配置文件中,增加以下自动命令:

set viewdir=$HOME/vimfiles/views/
autocmd BufWinLeave * mkview
autocmd BufWinEnter * silent loadview

使用system()函数静默执行命令

通过调用system()函数,也可静默执行命令:

:call system('espeak "hello world" &')

函数system()!命令都可以调用外部命令,但system()函数不会切到shell终端,而是仍停留在vim界面。所调用外部命令的输出将会被system()函数捕获,可以将其保存在VimL变量中以供后续使用。

使用以下命令,可以查看更多帮助信息:

:help :silent
:help system()

关于本文中使用的第三方工具,请参阅以下网址:

  • eSpeak, text to speech
  • Zathura, document viewer
  • Zip, compression and file packaging/archive utility

Ver: 2.0 | YYQ<上一篇 | 目录 | 下一篇>

shell命令回车_VIM学习笔记 静默执行命令(silent)相关推荐

  1. shell脚本的系统性学习笔记

    shell脚本的系统性学习笔记 文章目录 shell脚本的系统性学习笔记 一.入门基础 1.1 脚本的书写格式 1.2脚本的各种执行方式 1.3数据的输入与输出 1.4输入输出重定向 1.5变量 二. ...

  2. STATA学习笔记:外部命令

    STATA学习笔记:外部命令 1.设置外部命令存储地址 //在电脑里设置好文件夹以备存储外部命令 //Set location where packages will be installed //方 ...

  3. Ubuntu学习笔记:使用命令查看当前登录系统的用户信息

    Ubuntu学习笔记:使用命令查看当前登录系统的用户信息 1 查看当前登录的用户名 2 查看当前登录的用户名.终端类型.时间.IP地址 3 服务器连接的所有用户及正在使用的进程 4 显示系统中有哪些使 ...

  4. Ubuntu学习笔记:使用命令查询系统开机信息

    Ubuntu学习笔记:使用命令查询系统开机信息 dmesg

  5. Linux 学习笔记2 常用命令

    Linux 学习笔记1 安装linux详细教程_O丶ne丨柒夜的博客-CSDN博客 Linux_目录结构 基本介绍 1.liux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录&quo ...

  6. 【学习笔记】Linux 命令万字解析(超详细)

    Linux 基础 命令 命令行提示符 进入命令行环境以后,用户会看到 Shell 的提示符.提示符往往是一串前缀,最后以一个美元符号 $ 结尾,用户可以在这个符号后面输入各种命令. 执行一个简单的命令 ...

  7. Linux Shell实例精讲学习笔记

    第一章:shell基础 ●umask   --查看当前用户创建文件或文件夹时的默认权限 eg: [test@szbirdora 1]$umask 0002 [test@szbirdora 1]$ls ...

  8. Linux常用命令,个人学习笔记

    以下是小生在学习linux过程中整理的笔记,因为个人比较菜,笔记比较细啰嗦,希望能给需要的小伙伴一点帮助. 1.立即关机 poweroff 跳出虚拟机,显示鼠标ctrl+alt 进入虚拟机,隐藏鼠标c ...

  9. 《LINUX与UNIX SHELL编程指南》学习笔记

    linux下文件的几种类型:目录,符号链接.套接字文件.....要注意,说到的文件类型是一个不一样的概念.linux下文件的类型不是后缀名上进行区别. "-"表示该文件是一个普通类 ...

  10. Shell基本应用(学习笔记)

    目录 一.shell的基本组成元素 二.变量 1.变量的分类 2.变量的设置 3.变量的引用 4.变量的替换 5.变量的清除 6.变量的作用域 7.类型变量 8.数组 9.变量的叠加 三.各种符号 1 ...

最新文章

  1. android listview settag,Android View中setTag的二三事
  2. spring----Bean的生命周期和循环依赖
  3. MOM SMS SharePoint
  4. CVE-2021-3156:隐藏10年之久的 Sudo 漏洞,可使任意用户获得root 权限(详述)
  5. 如何使用ExpressBurn Plus mac版刻录数据CD
  6. 使用.NET Mobile API即51Degrees.mobi检测User-Agent
  7. 计算机id换系统会变吗,小雷问答丨手机恢复出厂设置后会变成最原始的系统吗?...
  8. 计算机基础教案8,计算机应用基础教案8.2修饰演示文稿
  9. ShopTalk第19集
  10. Go 基础(二)关键字和代码注释
  11. [elixir! #0015][译] 学习 GenStage by Joseph Kain
  12. 阿里P10赵海平跳槽字节跳动:深度解析跳槽从开始到结束完整流程!
  13. 字节跳动 2023 校园招聘火热开启!
  14. 数据类型(int、short、long、long long、unsigned、char、float、double)
  15. 《MySQL必知必会》读书笔记
  16. 口腔医学会计算机专业委员会,2019年中华口腔医学会口腔医学计算机专业委员会第十七次全国口腔医学数字化学术会议第二轮会议通知...
  17. background-size:cover与-webkit-background-size
  18. DOM属性的增删改、属性的其他操作及DOM事件
  19. NTKO Word在线编辑器
  20. 山西省高中计算机考试要点,(山西省普通高中信息技术学业水平考试标准.doc

热门文章

  1. hibernate 3中要注意的地方
  2. ajax 跨域 提交cookie,Ajax跨域请求COOKIE无法带上的完美解决办法
  3. php中关系运算符的优先级,PHP 运算符优先级
  4. 垃圾回收相关算法总结
  5. Zookeeper案例之分布式全局唯一ID生成
  6. 并发编程学习之线程池工作原理
  7. 2017极客大奖评选进行时:年度十大消费科技产品花落谁家
  8. ES6学习笔记 -- 尾调用优化
  9. 记忆模糊知识点5-11
  10. IT十八掌掌第十一天课程总结