如何在查看器中执行 !gvim 当前行?

如何在查看器中执行 !gvim 当前行?

代码find-xargs(less)-gvim

%http://unix.stackexchange.com/a/277889/16920
find . -name "*.tex" -exec grep -il "agent" {} + | less -s -M +Gg

输出

./InfectiousDiseases/1.4.2016.tex
./InfectiousDiseases/2.11.2015.tex
./InfectiousDiseases/21.4.2016.tex
...

在 less 中,命令!gvim

  • 您可以在底部的状态栏设置当前行号。它位于窗口的顶部。
  • 预期输出是文件./传染病/1.4.2016.tex新窗口中的当前行格维姆
  • 当前输出不成功,vim 中文件为空。

Muru 对 Xargs 的提议更少

|X xargs gvim

这是关于

|Xcommand 当前位置和标记 X 之间的管道文件到 shell 命令。

...

穆鲁的建议find-vim-gvim

find . -name "*.tex" -exec grep -il "agent" {} + | vim -

我成功地做到了:tabe <cfile>,或者:vs <cfile>只是将光标保持在当前行上。我成功了,!gvim <cfile>但列表视图转到了Press ENTER or type command to continue我不喜欢的另一个视图。我想将视图保留在列表视图中。如果有一个绑定/宏可以在当前行快速启动许多外部窗口,那就太好了。

:nnoremap gff :silent! exec "!gvim " shellescape('<cfile>') <bar> redraw!<cr>

gff通过按当前光标位置即可成功运行。我认为序列绑定gff太慢了。如果有一个立体声绑定,按下两个按钮来激活宏,那就太好了。我记得 CTRL-1 或 CTRL-ESC 或 CTRL-F1 都是可能的。

...

我在立体按键绑定方面遇到了一些问题,<C-1>因为立体按键绑定在 Vim 中是不可能的,但在某些 Gvim 中则不然。我扩展了 OS X 特定部分这里在 Apple Stackexchange 中,但注意到 Vim Stackexchange 更了解,所以这里


如何在查看器的当前行上执行 gvim?

答案1

问题的解决方案[已弃用]

所以首先要做

find . -name "*.tex" -exec grep -il "agent" {} + | vim -

在 .vimrc 中,来自 vi.stackexchange 的一个宏可gff打开许多视觉选择窗口

% https://vi.stackexchange.com/a/7627/2923
if has("win32") || has("win64")
  :vnoremap gff :<C-U>'<,'>g/^/silent! exec "!START /B gnvim " . shellescape('<cfile>') <bar> redraw!<cr>
else
  :vnoremap gff :<C-U>'<,'>g/^/silent! exec "!gnvim " . shellescape('<cfile>') . " &" <bar> redraw!<cr>
endif

挑战

更好的解决方案

使用提案这里只需使用选项卡.vimrc

nnoremap <leader>gf :silent! execute "tabe " . expand('<cfile>') <bar> redraw!<CR>

function! OpenSelectionAsTabs() range
    let tabnr = tabpagenr()
    for line in range(a:firstline, a:lastline)
        execute "tabedit " . getline(line)
        execute "tabp"
    endfor
endfunction

nnoremap <leader>gf :'<,'>call OpenSelectionAsTabs()<CR>
vnoremap <leader>gf :call OpenSelectionAsTabs()<CR>

相关内容