2016-10-01 3 views
0

내 TEXTFILE은 다음과 같습니다"<" and ">"이 포함 된 단어를 반복하는 방법은 무엇입니까?

laudare 
at 
dominus 
serere1 
enim 

그리고 내가 필요한 것은 :

(defun insert-angle-brackets-at-word() 
    "Insert angle brackets, i.e. <WORD>." 
    (interactive) 
    (goto-char (point-min)) 
    (insert "\<") 
    (forward-word) 
    (insert "\>") 
    (forward-line 1)) 
:

<laudare> 
<at> 
<dominus> 
<serere1> 
<enim> 

나는이 elisp 함수를 작성하려고 프로그래밍 초보자이야을

이 함수는 분명히 텍스트 파일의 첫 단어에만 "작동"합니다. 함수가 전체 텍스트 파일에서 어떻게 작동해야합니까?

답변

0

루프 필요가 없습니다, 당신은 모든 줄 바꿈을 대체 할 replace-string를 사용할 수 있습니다

(goto-char (point-min)) 
    (insert "<") 
    (replace-string "\n" ">\n<") 
    (goto-char (point-max)) 
    (insert ">") 
+0

작동합니다! 고맙습니다. –

+0

@DanRu : "감사합니다"StackOverflow = upvote/accept :-) – choroba

+0

쉽게 지역에서도 작동하도록 만들 수 있습니다. 그냥'(저장 제한 (좁은 지역 b e) ...)'로 감싸십시오. – jpkotta

0

다른 사람이, 당신은 그러나 당신은 또한 macros에서 살펴 봐야 할 수 있습니다, 찾기 및 바꾸기 사용할 수 있습니다 말했듯 및 multiple cursors. 당신이하고 싶은 일에 따라 미래의 이런 종류의 행동을 성취 할 수있는보다 간단한 방법 일 수 있습니다. 매크로, 당신은 M-f으로 한 단어 앞으로 이동, 오프닝 delete<을 삭제 한 후 home와 줄의 시작 부분으로 이동하여 매크로 기록을 시작하기 f3을 눌러 delete와 닫는 >을 삭제할 수와

및 그런 다음 down을 사용하여 다음 줄의 시작 부분으로 이동 한 다음 home을 사용하십시오. f4으로 매크로를 마칩니다.

그래서, 요약하자면 : f3, home, delete, M-f, delete, down, home, f4.

그런 다음 매크로 (f4도 사용)를 호출 할 수 있으며 현재 점 위치에서 일련의 명령을 다시 실행합니다. 복수 실행을 얻으려면 접두사 인수를 C-u으로 입력하십시오.

여러 커서는 비슷하게 작동하지만 여러 지점에서 동시에 작업을 실행합니다. 그것은 내가 실험 해본 패키지가 아니지만 같은 원칙을 사용합니다.

+0

질문의 경우에 대해 구체적인 예를 들어야 할 수도 있습니다. – Drew

+0

좋은 지적. 예제를 추가했습니다. – JackCC

관련 문제