mal*_*vim 8 unix bash vim vi command-line
我已经阅读了很多关于从 vim 运行 shell 命令的线程,很多关于 vim 命令的文档,.vimrc 等等,但我似乎无法很好地理解“ex”语言或 vim 映射来完成我的工作想要,所以我在这里问这个问题。开始:
我在 vim 中有一个打开的缓冲区(在 Snow Leopard 上使用最新的稳定 MacVim,但不是在 gui 模式下),我稍后会将其内容输入到命令行工具中,该工具将处理它并给我一些输出。我想要的是能够:
所以,总而言之:我可以跑
$ cat ~/myinput.txt | myScript > output.txt
Run Code Online (Sandbox Code Playgroud)
但是我想在 vim 内部做类似的事情,如果可能的话,将输出放在一个新的拆分窗口中。
更新:
当然,在发布后,我发现了有关该主题的更多信息。我现在知道我可以在 vim 中做到这一点:
:%! myScript
Run Code Online (Sandbox Code Playgroud)
它会将 myScript 的输出(缓冲区内容通过管道传送到它)放入我当前的缓冲区,替换我现在拥有的任何内容。
那么有没有办法将这些内容放入一个新的、拆分的窗口、缓冲区?谢谢!
我会把这样的东西放在我的 ~/.vimrc 或 ~/.vim/plugin/ 中带有 .vim 扩展名的文件中:
command! FW call FilterToNewWindow('myscript')
function! FilterToNewWindow(script)
let TempFile = tempname()
let SaveModified = &modified
exe 'w ' . TempFile
let &modified = SaveModified
exe 'split ' . TempFile
exe '%! ' . a:script
endfunction
Run Code Online (Sandbox Code Playgroud)
然后你就可以做“ :FW”了。
更改命令定义以要求将过滤器脚本名称参数传递给函数而不是“硬编码”它可能是一个好主意。
| 归档时间: |
|
| 查看次数: |
6567 次 |
| 最近记录: |