grep에서 검색한 결과 파일을 즉시 vim의 여러 탭에서 열기 명령을 만듭니다.
3309 단어 ShellScriptVimBashgrepZsh
개요
grep
해서 걸린 파일을 복사해 붙여넣고 vim
를 여는 것이 많았기 때문에, 이것도 어쩌면 굉장히 시간을 낭비하고 있는 것이라고는 생각했습니다.
그래서 전용 명령을 작성해 보았습니다.
명령 구현
실행 환경
zsh
파이므로, .zshrc
로 동작 확인하고 있습니다만, 아마 bash
하지만 움직인다고 생각합니다.
구현
~/.zshrcfunction svim() {
if [ "$1" = "" ]
then
echo 'no arguments';
return;
fi
vim -p `grep -lr $1 $2 | perl -pe 's/\n/ /g'`;
}
사용법
svim {引数}
에서 현재 디렉토리는 다음 파일을 인수 문자열로 검색하고 히트한 모든 파일을 vim
로 엽니다. 두 번째 인수에 폴더를 지정하면 해당 폴더에서 검색합니다.
$ svim HOGEHOGE
または
$ svim HOGEHOGE src/components
해설
모처럼이므로 약간의 해설도 씁니다.
인수 점검
우선 인수가 0, 즉 $1 = ""
의 경우는 return
합니다.
grep
-lr
선택적으로, 파일명만을 나열해, 부하의 디렉토리를 재귀적으로 검색합니다.
예$ grep -lr hoge *
Resources/views/base.html.twig
Resources/data/page.yml
perl
그런 다음 perl
-pe
옵션을 붙이는 것으로, sed
커멘드와 같이 s/hoge/fuga/g
의 서식을 사용한 검색을 할 수 있습니다.
예$ cat sample.txt
hoge
fuga
foo
bar
$ cat sample.txt | perl -pe 's/\n/ /g'
hoge fuga foo bar %
vim
마지막으로 vim
하지만 vim
는 -p
옵션으로 열면 여러 파일을 탭에서 한 번에 열 수 있습니다.
예$ vim -p sample.txt sample2.txt
2 files to edit
이런 식으로 엽니다.
나는 vim
의 단축키를 여러가지 바꾸고 있어, sn
라든지 sp
로 탭을 전후 이동할 수 있기 때문에, 탭으로 여는 편이 편리했던 것입니다.
여담
이상이 됩니다만, 이상을 말하면 grep
한 검색 결과가 너무 많으면 vim
가 펑크 해 버리므로, grep
여담Ⅱ
아 vimgrep
라는 것이 있는지 몰랐다. 그렇다고는 해도 쉘상에서 찾고 싶은 장면도 있다고 생각하므로 양쪽 사용할 수 있도록 이쪽도 공부해 보겠습니다.
Reference
이 문제에 관하여(grep에서 검색한 결과 파일을 즉시 vim의 여러 탭에서 열기 명령을 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mejileben/items/148ab472ecc1fae9c008
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
실행 환경
zsh
파이므로, .zshrc
로 동작 확인하고 있습니다만, 아마 bash
하지만 움직인다고 생각합니다.구현
~/.zshrc
function svim() {
if [ "$1" = "" ]
then
echo 'no arguments';
return;
fi
vim -p `grep -lr $1 $2 | perl -pe 's/\n/ /g'`;
}
사용법
svim {引数}
에서 현재 디렉토리는 다음 파일을 인수 문자열로 검색하고 히트한 모든 파일을 vim
로 엽니다. 두 번째 인수에 폴더를 지정하면 해당 폴더에서 검색합니다.$ svim HOGEHOGE
または
$ svim HOGEHOGE src/components
해설
모처럼이므로 약간의 해설도 씁니다.
인수 점검
우선 인수가 0, 즉 $1 = ""
의 경우는 return
합니다.
grep
-lr
선택적으로, 파일명만을 나열해, 부하의 디렉토리를 재귀적으로 검색합니다.
예$ grep -lr hoge *
Resources/views/base.html.twig
Resources/data/page.yml
perl
그런 다음 perl
-pe
옵션을 붙이는 것으로, sed
커멘드와 같이 s/hoge/fuga/g
의 서식을 사용한 검색을 할 수 있습니다.
예$ cat sample.txt
hoge
fuga
foo
bar
$ cat sample.txt | perl -pe 's/\n/ /g'
hoge fuga foo bar %
vim
마지막으로 vim
하지만 vim
는 -p
옵션으로 열면 여러 파일을 탭에서 한 번에 열 수 있습니다.
예$ vim -p sample.txt sample2.txt
2 files to edit
이런 식으로 엽니다.
나는 vim
의 단축키를 여러가지 바꾸고 있어, sn
라든지 sp
로 탭을 전후 이동할 수 있기 때문에, 탭으로 여는 편이 편리했던 것입니다.
여담
이상이 됩니다만, 이상을 말하면 grep
한 검색 결과가 너무 많으면 vim
가 펑크 해 버리므로, grep
여담Ⅱ
아 vimgrep
라는 것이 있는지 몰랐다. 그렇다고는 해도 쉘상에서 찾고 싶은 장면도 있다고 생각하므로 양쪽 사용할 수 있도록 이쪽도 공부해 보겠습니다.
Reference
이 문제에 관하여(grep에서 검색한 결과 파일을 즉시 vim의 여러 탭에서 열기 명령을 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mejileben/items/148ab472ecc1fae9c008
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ grep -lr hoge *
Resources/views/base.html.twig
Resources/data/page.yml
$ cat sample.txt
hoge
fuga
foo
bar
$ cat sample.txt | perl -pe 's/\n/ /g'
hoge fuga foo bar %
$ vim -p sample.txt sample2.txt
2 files to edit
이상이 됩니다만, 이상을 말하면
grep
한 검색 결과가 너무 많으면 vim
가 펑크 해 버리므로, grep
여담Ⅱ
아 vimgrep
라는 것이 있는지 몰랐다. 그렇다고는 해도 쉘상에서 찾고 싶은 장면도 있다고 생각하므로 양쪽 사용할 수 있도록 이쪽도 공부해 보겠습니다.
Reference
이 문제에 관하여(grep에서 검색한 결과 파일을 즉시 vim의 여러 탭에서 열기 명령을 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mejileben/items/148ab472ecc1fae9c008
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(grep에서 검색한 결과 파일을 즉시 vim의 여러 탭에서 열기 명령을 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mejileben/items/148ab472ecc1fae9c008텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)