Questions tagged «external-command»

有关在Vi或Vim中调用外部(shell)命令的问题。

9
如何静默执行shell命令?
:!<command>可用于在Shell中执行命令。但这会“接管”我的终端,并用stdout该特定命令填充它。 如何在后台执行仅在非零退出代码时通知我的命令?

4
如何将gdb与Vim集成?
取而代之的gdbtui或ctrl+x在gdb其中显示了我想看到这在我的Vim编辑器将标签之间跳跃在屏幕上方的源代码,以及相应的缓冲区。 我怎样才能做到这一点?

4
如何在Vim中使用外部命令来修改选定的单词和行?
我发现在其他编辑器中有用的是以下功能: 选取所选文字 运行一个外部命令并将选择传递给它 stdin 接受外部命令stdout并用其替换当前选择。 这样,您可以编写有用的文本工具,使用可以执行基本io的任何语言对选择进行操作。 vim如何使用选择来完成?单个字符,单词,段落等 (直接在命令行中,还是通过键绑定?) 注意 之类的命令!sort在行级上工作,之所以问这个问题,是因为我想对选择进行操作。(即,如果x按下该文本将被删除)。

2
将shell命令的结果提取到.vimrc文件中的变量?
在我的.vimrc文件中,我想将外部命令的结果存储在变量中,以我为例: $ echo $LANG 这样我的vimrc文件将具有: let language = output(!echo $LANG) if language == 'en' nnoremap <somekey> <ohanotherkey!> end if 到目前为止,我还没有找到方法。我发现在命令模式下,:read !echo $LANG会将所需的内容插入到当前文件中。但是我不知道如何将其记录在vimrc文件中。

2
从vim执行bash脚本
我使用vim进行bash脚本编写。有时候我不想创建一个新文件,使其可执行,执行然后删除。我的意思是仅将使用一次的脚本。 例如,我打开vim并输入以下内容: #!/bin/bash ll | while read line do echo $line done 我没有保存该文件,只是使用vim来简化bash脚本编写。我知道我可以通过!vim 执行bash命令。但是如何执行缓冲区中的所有内容呢?

1
如何使gx识别vim中的完整URL?
默认情况下,如果vim中的缓冲区包含URL(例如)http://www.google.com,则gx在正常模式下将使用该URL打开浏览器。非常方便。但是,如果URL具有URL参数(例如http://www.google.com/search?q=stuff),则将丢失URL参数(即,仅http://www.google.com/search将其打开)。 我正在使用MacVim 7.4补丁183,将Chrome作为主要浏览器(在OS X 10.9上)。 是否有一种简单的方法,最好是最少的自定义,即可gx识别完整的URL?

3
我可以在Vim窗口中发布交互式shell吗?
我知道我可以:!或:r!执行外部命令和可选插入其输出为文本。我什:!sh至可以执行,并且会生成一个可以生存的外壳,直到退出该外壳为止-但是在外壳处于活动状态时,Vim处于“睡眠状态”且无法访问。如果我想回到Vim片刻,我必须退出shell,并生成一个新的shell,这不是很有用。 我可以在另一端访问外壳,用暂停的Vim ^Z和管理通过Vim的工作bg,fg和jobs。这更有意义,但从长远来看非常麻烦。我可以使用Screen它是否可用(它通常不可用),或者打开我的窗口管理器的几个窗口(然后按ssh依次从每个窗口中定位主机,以使vim和shell都位于远程主机上,这又很麻烦。) 如果Vim允许我打开一个shell会话并将其保存在其(内部)窗口之一中,或者让我切换回它,那将是最愚蠢的。这样的事情可能吗?

2
如何更改Vim的启动或简介屏幕?
当我启动没有任何文件的Vim时,总是看到以下信息: VIM - Vi IMproved version 7.4.580 by Bram Moolenaar et al. Vim is open source and freely distributable Become a registered Vim user! type :help register<Enter> for information type :q<Enter> to exit type :help<Enter> or <F1> for on-line help type :help version7<Enter> for version info 我该如何更改? 具体来说,我想将shell命令(fortune)的输出放在这里。 我知道vim-startify ; …

1
如何使用反引号扩展来填充arglist?
来自帮助:help backtick-expansion: On Unix and a few other systems you can also use backticks for the file name argument, for example: :next `find . -name ver\\*.c -print` :view `ls -t *.patch \| head -n1` The backslashes before the star are required to prevent the shell from expanding "ver*.c" prior to …


4
:在光标之后而不是在行之后读取
我:r !uuidgen经常使用新的uuid插入缓冲区。这可行,但我通常试图在引号之间插入uuid,并:r !uuidgen在新行上打印uuid。 为了解决这个问题,我目前正在使用一个简单的键盘映射: nnoremap <C-u> mm:r!uuidgen<CR>dW"_dd`mp 此宏设置标记mm,插入uuid r!uuidgen,删除插入的uuid dW,删除多余的行"_dd,返回标记BACKTICKm,最后粘贴uuid p。 :r在没有此宏/键绑定的情况下,是否有一种方法可以将光标移到游标之后呢?

3
如何在不离开vim的情况下计算文件部分中的单词?
我有一个充满文本的文件(例如Markdown或LaTeX)。我想计算一下该文件一部分中的单词数。 我知道我可以:! wc -w %在当前缓冲区上运行wc -w。而且我知道我可以将感兴趣的部分拖到一个命名寄存器中。我猜想有一种方法可以将命名寄存器发送到操作系统以在命令或管道中使用,但是我一直找不到。还是有更好的方法来计数寄存器中的单词? 我的用例是,我在vim中进行了许多非编程的写作(笔记,论文等),并且我想计算在编辑过程中我给文件的给定部分添加了多少个单词。会议。

3
我怎么知道我在vi命令:sh的shell中?
在vi中,我可以使用:sh命令获得一个shell终端。然后,我可以通过exitshell 返回vi 。 但是,如果我长时间使用Shell终端,却忘记了exit关闭任何东西还是将vi返回给我。 有什么方法可以检查我是否返回到vi?jobs或fg不起作用。

1
如何用外部命令修改视觉选择的块?
我有一个由两个垂直部分组成的文件。在左侧,数据已经被格式化,我不想更改它。我只想在右侧格式化数据。说我有一个像这样的文件 foo=bar baz # Neato Junk quux=xyzzy # Bilbo Baggins Ring 还有更多类似的内容 我只想修改“#”字符右侧的文本。我使用以下表达式选择了所需的文本: gg /# ctrl-v G $ 但是,如果我随后尝试对其进行修改(例如使用:'<,'>!column -t),则实际上它会修改每一行的整体。仅用于修改视觉选择的零件的正确表达是什么?

1
为*和+寄存器定义自定义命令
如果我正在使用带有该xterm_clipboard功能的Vim版本,则可以通过寄存器获取系统剪贴板内容+。 如果我使用的构建不具有此功能,我可以使"+注册调用我的自定义程序来检索和设置系统剪贴板(xsel -bo和xsel -bi,或同样使用xclip)吗?与"*呼叫xsel -po和相同xsel -pi。 关键是能够键入类似内容,"+p而不必担心该功能是否可用。打字:r !xsel -b<Enter>是不是我要找的:我希望同样的击键工作,我想贴变种遵循什么可用的“真”寄存器(P,gp,...)。 好处:我可以为其他寄存器名称定义自定义命令吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.