Emacs가 코드 블록을 풀도록 하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/68993

  •  09-06-2019
  •  | 
  •  

문제

Emacs 버퍼에 다음과 같은 줄이 있다고 가정해 보겠습니다.

foo -option1 value1 -option2 value2 -option3 value3 \
    -option4 value4 ...

나는 그것이 다음과 같이 보이기를 원합니다 :

foo -option1 value1 \
    -option2 value2 \
    -option3 value3 \
    -option4 value4 \
    ...

각 옵션/값 쌍을 별도의 줄에 표시하고 싶습니다.또한 고정된 양의 공백을 추가하는 대신 모드에 따라 후속 라인을 적절하게 들여쓰기하기를 원합니다.코드가 현재 블록에서 작동하는 것을 선호합니다. 비어 있지 않은 첫 번째 줄이나 옵션/값 쌍이 포함되지 않은 줄에서 멈추는 것이 좋습니다. 하지만 선택한 영역에서 작업하는 것으로 만족할 수는 있습니다.

이 작업을 수행하는 elisp 함수를 아는 사람이 있나요?

도움이 되었습니까?

해결책

내가 찾고 있던 것을 아무도 갖고 있지 않았기 때문에 나는 elisp 매뉴얼의 먼지를 털어내고 직접 만들기로 결정했습니다.출력이 내가 요청한 것과 정확하게 일치하지는 않지만 이것은 충분히 잘 작동하는 것 같습니다.이 버전에서는 첫 번째 옵션이 원래 질문처럼 첫 번째 줄에 머무르는 대신 단독으로 한 줄에 표시됩니다.

다른 팁

이 경우에는 매크로를 사용하겠습니다.C-x로 매크로 기록을 시작하고 C-x로 기록을 중지할 수 있습니다.매크로를 재생하고 싶다면 C-x e를 입력하세요.

이 경우 C-a C-x ( C-s v a l u e C-f C-f \ RET SPC SPC SPC SPC C-x )를 입력하겠습니다.

그러면 "값"을 검색하고, 앞으로 2로 이동하고, 슬래시와 개행 문자를 삽입하고, 마지막으로 줄 바꿈을 위해 새 줄을 간격으로 두는 매크로가 기록됩니다.그런 다음 이 매크로를 몇 번 반복할 수 있습니다.

편집하다:방금 깨달았습니다. 문자 그대로의 텍스트는 "value1"만큼 검색하기 쉽지 않을 수 있습니다.공백을 검색하고 히트 항목을 순환할 수도 있습니다.예를 들어 첫 번째 경기 후 C-s를 몇 번 누르면 일부 경기를 건너뛸 수 있습니다.

메모:귀하의 예는 "임시"이므로 이 솔루션도 마찬가지입니다.임시 솔루션이 필요할 때 매크로를 사용하는 경우가 많습니다.매크로를 보다 일관되게 적용하는 한 가지 방법은 원본 명령문을 모두 한 줄에 넣는 것입니다(매크로를 사용하거나 수동으로 수행할 수도 있음).

편집하다:( 대 C-(에 대한 의견을 보내주셔서 감사합니다. 제 실수가 맞습니다!

개인적으로 저는 항상 이런 일을 합니다.

그러나 나는 매일 1 년 동안 그것을하지 않는 한 기능을 작성하지 않습니다.

다음과 같이 쿼리 교체를 사용하여 쉽게 수행할 수 있습니다.

m-x(쿼리 교체 " -option" "^Q^J -option")

나는 ^q ^j라고 말합니다. 그것이 당신이 새로운 라인을 인용하고 문자열에 넣기 위해 입력 할 것입니다.

그런 다음 문자열을 교체 할 수 있도록 'y'를 눌러 'n'을 눌러 찾을 수있는 더 이상한 코너 케이스를 건너 뜁니다.

또 다른 주변 기능은 정규 표현식을 대체 할 수있는 쿼리-리스 플레이트 레지스스입니다.

또한 Grep-Query-Replace는 GREP 명령의 출력을 구문 분석하여 쿼리-재구성을 수행합니다.100 파일에서 "foo"를 검색 한 다음 파일에서 파일로 건너 뛰는 각 발생에 대해 쿼리를 제공 할 수 있기 때문에 유용합니다.

귀하의 모드가 이미 이를 지원할 수도 있습니다.C 모드와 Makefile 모드에서는 최소한 M-q(채우기 단락)가 채우기 열에 줄 연속을 삽입하고 줄을 줄바꿈합니다.

이거 어떤 모드로 편집하시나요?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top