2011-09-30 6 views
2

grep 결과 버퍼의 경로를 줄이는 것이 가능합니까? 기본적으로 이맥스에서 그렙 결과의 각 행은 다음과 같습니다 공간을 많이 필요하고 다른 창은 옆에있다, 특히, 매우 읽을 지저분하지 보이는grep 버퍼에서 경로 이름을 줄이는 방법은 무엇입니까?

/home/pawel/tmp/avro-src-1.5.4-fixed/lang/c/src/datum.c:107:int avro_string_set(avro_datum_t datum, const char *p) 

합니다.

난 그냥 파일 이름 또는 부분 경로를보고 싶습니다 -만큼 그들은 예를 들어, 그렙 버퍼에 고유 같이

datum.c:107:int avro_string_set(avro_datum_t datum, const char *p) 

또는

/home/(...)/src/datum.c:107:int avro_string_set(avro_datum_t datum, const char *p) 

내가 이맥스 생각이 가득 알 필요가 경로를 내부적으로 사용하므로 'grep'매개 변수로 재생하는 것보다 grep 결과 만 표시하는 것이 좋습니다. 이 작업을 수행하는 방법? grep 버퍼의 숨김 모드 정의가 트릭을 수행합니까, 아니면 이렇게하는 것이 더 쉬운 방법일까요?

감사합니다.

답변

3

나는 당신을 위해 하나를 만들었다 : scf-mode. 마이너 모드로 작동하므로 원래 파일 이름을 끄면 복원 할 수 있습니다.

설치 지침은 파일 헤더를 참조하십시오.

+0

이것은 대단하다. & 광고 된 작품, 감사합니다 백만! –

0

어떤 이맥스 버전을 사용하고 있습니까? 난 내 이맥스 (23.3.1)에 그렙을 실행할 때, 난 당신이 이맥스 이외의 동일한 grep 명령을 실행할 때

또한
file1:25:some result 
file2:26:some other result 

은, 무슨 일이 당신의 상자에서 발생, 예컨대 : 어떤 경로를 얻을?

+0

오케이, 제 질문이 정확하지 않았던 것 같습니다. 내 이맥스 버전은 23.2.1입니다. 이맥스의 'grep'함수를 사용하여 현재 작업 디렉토리에서만 실행하면 grep 명령에 의해 반환 된 경로이기 때문에 샘플 에서처럼 파일 이름을 얻습니다. 문제는 특정 경로 (예 : grep -nH -e set/home/pawel/tmp) 또는 'find-grep'과 함께 'grep'을 사용할 때만 발생합니다. –

2

Emacs lisp을 알고 있다면 구현하기가 어렵지 않을 수 있습니다. 경로 이름의 공통 부분을 찾아서 제거하고 공통 부분을 로컬 변수에 저장 한 다음 grep 결과를 열면 저장된 부분의 전체 경로 이름을 조합해야합니다.

grep-find 출력의 가독성을 향상시킬 수 있으므로 여기에 답을 얻지 못하면 to emacs help이라는 질문을 게시하는 것이 좋습니다. 전문가가 있으면 아이디어를 찾을만한 가치가있는 솔루션을 신속하게 조합 할 수 있습니다.

0

M-x grep을 실행하기 전에 M-x cd /home/pawel/tmp/avro-src-1.5.4-fixed/lang/c/src/을 실행하십시오.

히트 파일이 현재 디렉토리 (default-directory)에 없으면 grep 히트의 디렉토리 부분 만 가져옵니다.

관련 문제