gvim:将视觉选择的文本传递给命令行

时间:2011-01-18 14:47:34

标签: command-line vim

我使用gvim来存储我将执行的命令的配方,具体取决于输出。目前,我在gvim中选择文本并将命令粘贴到终端控制台中,但我敢打赌,我可以通过视觉选择的范围将其传递到命令行中进行执行。

2 个答案:

答案 0 :(得分:17)

假设您的意思是Vim命令行:

(如果您的意思是OS命令行,请参阅下文)。

对于部分行(即没有行尾字符),您可以执行以下操作:

" Visually select lines, then:
y:<C-R>"<ENTER>

其中<C-R>表示按 Ctrl + R y'选中'所选文本,:进入命令模式,<C-R>""(最后一个被拉动的文本)寄存器的内容拉到命令行上,{ {1}}(显然)运行命令。


如果你想做直线的东西,它会有点复杂(因为命令行不喜欢命令中的<ENTER>)。我会在你的vimrc中推荐这样的东西:

^M

选择行(重启vim后)并按function! RunCommands() exe getline('.') endfunction command -range RunCommands <line1>,<line2>call RunCommands() vmap ,r :RunCommands<CR>


另一种有用的方法是复制所需的行,点击,r打开命令行窗口并将所需的行粘贴到那里,然后将光标移到所需的行上并按下输入。这样做的好处是可以在按 ENTER 之前编辑命令。它一次只能运行一个命令。

如果您指的是(例如)Windows或Linux命令行:

使用我上面列出的功能,而不是:

q:

使用

exe getline('.')

或者,如果你想看到结果:

call system(getline('.'))

echo system(getline('.'))

更多信息:

echomsg system(getline('.'))

答案 1 :(得分:2)

如果您使用的是vim GUI,则可以执行set guioptions+=a。这样,gvim中可视模式下的任何突出显示的文本都会粘贴到剪贴板。