代码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
挑战
- OS X 中窗口的均匀分布,https://vi.stackexchange.com/q/7637/2923;分布在 Ubuntu 16.04 中均匀运行
更好的解决方案
使用提案这里只需使用选项卡.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>