如何在视觉上选择,然后直接在vim中执行shell命令?

时间:2015-09-18 10:40:19

标签: bash shell vim

在vim中编写bash脚本时,能够从脚本中选择性地仅运行几行是很有用的,例如:如果我有一些脚本

#! /bin/bash

# more commands

mkdir /tmp/test_dir
echo "some output to STDOUT"
touch /tmp/test_dir/new_file

# more commands

说我只想执行脚本的这一部分

mkdir /tmp/test_dir
echo "some output to STDOUT"
touch /tmp/test_dir/new_file

如何在vim中突出显示并执行它? 我试过了

  • v,选择目标文字:

提示:'<, '>

的提示

然后尝试:! w

但它不能正常工作。
我不需要将shell命令的STDOUT写入文件或任何东西,但我希望能够至少看到输出。

2 个答案:

答案 0 :(得分:4)

从pacholik的答案中,你可以推断:

在可视模式下,点击:并撰写w !bash

这样你的整个命令就是:'<,'>w !bash

您将获得输出结果(但它不会更改文件

如果删除w,它将用缓冲区的输出替换该行。

我有例如将 r 映射到&#34;运行命令&#34;在视觉模式。

像这样:

vnoremap r :w !bash<cr>

我也有正常模式(运行当前行), yr (你运行)

nnoremap yr :.w !bash<cr>

答案 1 :(得分:0)

您可以使用Quickrun插件:http://vimawesome.com/plugin/quickrun-vim

它可以动态运行多种语言(bash,python,c ++ ...),并且只能运行选定的区域。

您需要的一切是:

  • 设置文件的文件类型(通常会自动检测到,除非您创建了新文件,在这种情况下只需执行::set ft=sh bash
  • 使用 V 选择文件的一部分。
  • 运行:'<,'>QuickRun

输出将在新窗口中打开。 您可以在许多点上调整插件,请参阅帮助。