Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取vim中:vs中的exe文件的结果_Vim - Fatal编程技术网

读取vim中:vs中的exe文件的结果

读取vim中:vs中的exe文件的结果,vim,Vim,我的许多程序都是类似于控制台的应用程序,它们获取数据文件,并在屏幕上或其他文件中打印结果 因为这些天我在做一些分析,需要对一个输入数据文件进行很多小的诱惑,只是为了得到一些数字,我通常会去:编辑数据文件,启动程序,获取结果,编辑数据文件,启动程序,获取结果 所以我想知道,在vim中,当打开输入文件时,有没有一种方法可以定义一个函数来打开一个垂直拆分并在其中加载pro12.exe程序的结果 那怎么办呢 最简单的方法可能是编写一个Makefile来运行程序并将输出重定向到一个文件,并且:在Vim中设

我的许多程序都是类似于控制台的应用程序,它们获取数据文件,并在屏幕上或其他文件中打印结果

因为这些天我在做一些分析,需要对一个输入数据文件进行很多小的诱惑,只是为了得到一些数字,我通常会去:编辑数据文件,启动程序,获取结果,编辑数据文件,启动程序,获取结果

所以我想知道,在vim中,当打开输入文件时,有没有一种方法可以定义一个函数来打开一个垂直拆分并在其中加载pro12.exe程序的结果


那怎么办呢

最简单的方法可能是编写一个Makefile来运行程序并将输出重定向到一个文件,并且:在Vim中设置autoread选项。然后,您可以通过键入qr:makeq创建一个宏r,并使用@r运行该宏。宏将导致Vim调用make,make将运行程序更新数据文件。自动读取选项将确保vim刷新更新的文件而不首先提示您。

假设pro12.exe位于您的%PATH%中,这将调用您的助手应用程序并垂直拆分打开静态输出文件名。映射到您喜欢的任何键。QND:当相对路径bufnames通过cd更改时将不起作用。YMMV

我不喜欢:bufdo解决方案,因为这个命令总是会搞乱当前的windows组织

在正常情况下,如果命名缓冲区已经打开,我会使用跳转到打开该缓冲区的窗口,否则会打开该窗口

function! s:Run0()
  call lh#buffer#jump('/path/to/pro12.exe.output', 'vsp')
  silent exe '!ls'
endfunction
考虑到需要定义一个打开垂直拆分的函数,我们可以简单地使用:

function! s:Run1()
  let bn = bufnr('/path/to/pro12.exe.output')
  if bn >= 0
    exe 'bw '.bn
  endif
  silent exe '!pro12'
  vsp /path/to/pro12.exe.output
endfunction
nnoremap µ :call <sid>Run1()<cr>
可以将/path/to/pro12.exe.output替换为任何唯一的输出。通常,我会使用一个具有唯一名称的临时缓冲区,其中包含pro12结果

PS:如果在函数中这很重要,请添加

nnoremap <buffer> q :bw<cr>

您只需在输出窗口内点击q即可退出输出窗口。

pro12.exe是否支持将输出发送到标准输出?接受标准数据网的数据?或者,它是否需要在命令行中输入、输出文件名?不确定第一个STD…-它不是一个C程序。它不需要任何命令行参数。输入文件名是硬编码的,它所做的只是写出一些东西。这是一个不错的方法。然而,vs分裂只是继续以这种方式打开。你有没有关于关闭所有vs的想法,以及在每个功能启动时只关闭一个打开的vs?也就是说,你会如何在按下任何键(例如enter)时关闭当前vs?
vsp /path/to/pro12.exe.output
r!pro12
nnoremap <buffer> q :bw<cr>