目前这是我纯命令行工作的唯一不太爽的地方,grep 完后,不能纯键盘操作,需要手动复制文件名,然后 vim 打开编辑。
谢谢各位指点分享。
1
quinoa42 2019-01-31 10:36:34 +08:00 via Android
通过 xargs 把找到的文件名传给 vim
|
2
SamsonWang 2019-01-31 10:37:29 +08:00 via Android
grep 和 awk 组合使用能够取得文件名,再通过管道传给 vi ?
﹉ 我平常用 emacs,可以直接在 emacs 里调用 grep,不知道 vi 有没有类似的功能。 |
3
quinoa42 2019-01-31 10:38:20 +08:00 via Android
直接用 command substitution 也是可以的
|
4
quinoa42 2019-01-31 10:39:05 +08:00 via Android
另外如果你用 tmux 的话,就可以纯键盘复制文字了 233
|
5
scriptB0y 2019-01-31 10:42:07 +08:00 1
|
6
ChristopherWu OP @quinoa42 xargs 这个是没有实用意义的吧。。因为你 grep 就不可能准确 grep 到一个文件
|
7
Yggdroot 2019-01-31 10:54:24 +08:00
vim `cmd | grep xxx`
|
8
quinoa42 2019-01-31 10:54:48 +08:00 via Android
@ChristopherWu 但可以都打开呀(
不过要手动选的话就用楼上上的 fpp 或者 fzf/skim |
9
ChristopherWu OP @scriptB0y fpp 似乎就是我想要的~
|
10
AsaMyth 2019-01-31 10:55:44 +08:00 via Android
一般开俩 terminal,一个 grep,一个 vim🤐
|
11
ChristopherWu OP @quinoa42 因为我用的语言跳转太弱了,迫于特殊架构,不能处理简化的模块。所以我只能 grep 来做跳转,所以大量文件这个是木有用的 - = -
|
12
quinoa42 2019-01-31 10:57:51 +08:00 via Android
@ChristopherWu 如果你经常需要这么做的话可以给 vim 装 denite/leaderF 等等 plugin 其中一个,方便很多
|
13
ChristopherWu OP @AsaMyth grep 了后,你还是要复制文件名或者手动打。fpp 是最优解~
|
14
trait 2019-01-31 10:59:24 +08:00
vim $(grep -l dididada)
|
15
pkookp8 2019-01-31 11:10:33 +08:00 via Android
vim
:grep! pattern path parameter 回车回车 |
17
pkookp8 2019-01-31 11:39:41 +08:00 via Android
function! UseGrepFind()
call inputsave() let p = input('dir search.Enter pattern:') let searchdir = input('dir:') if searchdir == "" let searchdir = "./src" endif call inputrestore() execute 'grep! -nrE "'.p.'" "'.searchdir.'"' execute 'copen' endfunction nnoremap <F7> :call UseGrepFind()<CR><CR> 自己看着改一下吧 |
18
pkookp8 2019-01-31 11:43:51 +08:00 via Android
|
19
shm7 2019-01-31 19:02:54 +08:00 via iPhone
管道吧
|