Justin Standard
그는 물었다 12년 전
6

Emacs 에서 주요 조합으로의 정규식이 바인딩한 어떻게 합니까?

내가 한 일을 위한 컨텍스트로, emacs 뉴비. 내가 haven& 매우 긴 것이지만, 그것을 사용한 t # 39, 점점 더 (맘에들었어요 많이유) 이용해 왔습니다. 또한, 리스프, 슈퍼 익숙한 엘리스프 I& # 39 m 편하게 사용할 수는 없습니다.

내가 할 수 있기 때문에 이 특정 내가 사용하는 키보드 조합으로 regex 는 바인딩한 정규식이 너무나 자주.

39, ve I& 어떤 작업을 수행해 왔습니다.

M-C-s ^.*Table\(\(.*\n\)*?GO\)

새줄 문자, 메모, I 've I& # 39 위에 사용되는 있지만, 정말로 교체해야 할 수 있는 것은 "에 대한 정규 표현식 이즈라크 전달하십시오. &lt code&gt \n&lt /code>;;; 이 결과를 통해, kbd&gt 캜 q q-j&lt /kbd&gt 정규식이 <.;; 이 날 넣을 수 있는 ipv6-literal. 삽입물의 개행 문자 (끝내지 않고 명령) 에 걸쳐 표현식에서는 개행 문자 및 일치시킵니다 흐름선.

이 주요 조합으로의 바인딩하지 어떻게 해야 합니까?

내가 알고 있는 '기능' 을 (를 만들려면 생기기 데릭쉐퍼드와 엘리스프 실행하므로 정규 표현식 이즈라크 전달하십시오. 표현식에서는 i& # 39 m 희미함을 있지만, 이 정보에 대한. # 39 구글 검색, ve and found to be a tad i& 대부분의 문서화에 혼란스럽다.

  • 어떻게 바인딩한 정규식이 emacs 에서 주요 조합으로의 가능*

      • 정확히요 마이크 스톤은 경식도 해답을 찾고 있었어 하지만 지금까지 내가 아닌 내가 필요한 뭐하러요 협력했습니다 *

편집 - 이러한 종류의 협력했습니다 저장 후 나중에 다시 사용할 수 있지만, 내가 couldn& 뒤로를 나가보니 매크로 # 39, t 이 기능을 사용하여 &lt kbd&gt c x e&lt /kbd>.;;; (즉, 만약 내가 재부트 emacs, 입력한 후 &lt, kbd&gt, m x macro-name&lt, /kbd&gt, 다음 &lt, kbd&gt, c x e&lt, /kbd>, i get a # 39, & # 39 마지막 kbd macro& 같은 메시지에 미니부퍼 없습니다. 또는 비슷한)

-

@Mike 스톤, 정보를 주셔서 감사합니다. 따라서 매크로를 만드는 등 찾았다.

C-x( M-C-s ^.*Table\(\(.*C-q C-J\)*?GO\) C-x)

이 때, 나는 내가 만든 내 매크로, 하지만 내 didn& csetup 매크로 # 39 를 사용하고, 저는 그 때 얻을 수 없다, 일반적으로 동일한 강조표시하기 &lt code&gt /code&gt isearch-forward-regexp<;). 대신 그냥 다음 경기 종료 이후 표현식입니다. # 39, t really 작동합니까 도왔으매 doesn& 뭐하러요 데릭쉐퍼드와. 아무 생각 없어?

편집: I do what I want, 매크로를 사용할 수 있는 것 같습니다 위부의 상자 '그냥' 정규 표현식 이즈라크 전달하십시오. 할 것 같다. # 39, ll 시도하시겠습니까 i& 너희는너희가 제안했다.

답변 4 개

매크로, just do &lt kbd&gt c x 사용할 수 있습니다 (&lt /kbd>;;; 그 후, 모든 것을 재동기화할 매크로의 &lt kbd&gt, c x) &lt /kbd>; 끝까지 어졌다면 &lt kbd&gt c x e&lt, 매크로, /kbd>; 마지막 매크로 정의 시행할 예정이다. 그런 다음,, /kbd&gt name-last-kbd-macro&lt m x kbd&gt &lt 이름을 사용할 수 있습니다. 그 이름을 지정할 수 있습니다,, /kbd&gt TESTIT&lt m x kbd&gt 호출하십시오 &lt 함께 할 수 있는 저장, 사용 후, 정의, &lt kbd&gt m x insert-kbd-macro&lt /kbd&gt. 동일팔레트에 macro 를 현재 버퍼 후 이를 '오마치 파일' 에 저장할 수 있습니다.

예:

C-x( abc *return* C-x)

유형 (type) 으로 &quot abc&quot, 매크로를 정의하는 것이다. 및 누름에 귀의하노라

C-xeee

위의 실행하므로 매크로 즉시 3 회 (첫 번째 ᅦ 실행하므로 # 39, s 는 다음과 같은 경우에는 2 e& autoexec. 두 번 더).

M-x name-last-kbd-macro testit

매크로를 이름을 &quot testit";

M-x testit

매크로 (macro, 인쇄, abc&quot &quot 실행하므로 release. 선 그럼 반환).

M-x insert-kbd-macro

다음과 같은 기능을 제공해 기존 버퍼:

(fset 'testit
   [?a ?b ?c return])

'오마치 파일에 저장해 들 수 있다' 라는 매크로를 사용 후 다시 운명인것 재시작하기 emacs.

39, ve, 문제를 해결하는 말 그대로 i& 시작됐다.

(defun search-maker (s)
  `(lambda ()
     (interactive)
     (let ((regexp-search-ring (cons ,s regexp-search-ring)) ;add regexp to history
           (isearch-mode-map (copy-keymap isearch-mode-map)))
       (define-key isearch-mode-map (vector last-command-event) 'isearch-repeat-forward) ;make last key repeat
       (isearch-forward-regexp)))) ;`

(global-set-key (kbd "C-. t") (search-maker "^.*Table\\(\\(.*\\n\\)*?GO\\)"))
(global-set-key (kbd "<f6>") (search-maker "HELLO WORLD"))

키보드 조합으 code&gt &lt /code>;; (kbd.) 에서 &lt. 새 빈 검색 시작합니다. 실제로 문자열 검색 키를 누르면 다시 last key 만큼 합니다. 그래서, c, code&gt &lt. t t t&lt /code>; 또는 lt;;; gt, f6&amp &amp code&gt <; &amp f6&amp, gt, lt;; lt;;;;; gt f6&amp &amp &lt /code>. 이 솔루션은 해킹, 하지만 기본적으로는 I& # 39, 여기에서 ll 남겨두십시오 확인표시를 테스트하려면 거잖나.

다음은 가장 가까운 필요한 것이다.

(defmacro define-isearch-yank (key string)
  `(define-key isearch-mode-map ,key 
     (lambda ()
       (interactive) 
       (isearch-yank-string ,string)))) ;`

(define-isearch-yank (kbd "C-. t") "^.*Table\\(\\(.*\\n\\)*?GO\\)")
(define-isearch-yank (kbd "<f6>") "HELLO WORLD")

현재는 주요 콤보 작업하십시오 이즈라크 모드. 일반적으로 다음 검색 키를 콤보 삽입하십시오 시작하기 위해 미리 정의된 구체화하십시오.

일반적으로 사용자 정의 케이빈딩 정의하십시오 # 39 에서 Emacs, you& 쓰기; d

(define-key global-map (kbd "C-c C-f") 'function-name)

이 함수는 ',' 는 주요 정의하십시오 놀라지 않게 정의하십시오 새 키. '세계' 가 아닌 개별 매핑하므로 글로벌 매핑해야 키 맵, 각 모드. ' (c c c-f&quot kbd ";)' '키 조합을 나타내는 문자열으로 되돌려줍니다 c c c f'. 문자열을 입력 등 직접 수행할 수 있는 다른 방법도 있지만, 이것은 일반적으로 가장 쉽게 걸리는 만큼 일반 기록되었으므로 표현. # 39, & # 39 는 심볼에는 that& 함수 이름 ',' s 함수명.

지금 사용하는 함수가 정의된 you& # 39, ll 정의할 경우 이미 사용하기 전에 이. 이를 위해 쓰기

(defun function-name (args)
  (interactive)
  stuff
  ...)

'-' c-시간 지펑 f 함수를 정의하여 사용할 지펑 '' 보다 자세한 내용은. # 39 는 함수 호출 (interactive) ',' 지금 't really isn&. # 39 에 있는 정보기술 (it) 에서 컴파일러와의 it& 그땅은 호출할 함수를 사용하여 '와' 를 통해 사용자가 m x 함수 이름 단축키.

특히 이 제품은 양방향 검색: 지금은 까다로운. # 39 는 ',' t really doesn& 이즈라크 모듈에서는 공존할 수 있지만, re trying to do 설정되었습니다 뭐하러요 you& # 39 이 비슷한 뭔가를 사용할 수 있습니다.

@Justin:

매크로 # 39 의 it& 실행할 때, 조금 다릅니다. 그냥 한 번 일어날 수 있으며, 매크로를 다시 실행하십시오 변동분 검색은 확인표시를 다시 검색을 합니다. 더 강력하고 복잡한 것 같은 키워드 검색 할 수 있지만, 선, 마크 http://www. gnu. orghttp://www. 줄 끝 부분에 이동줄을, m w (복사), 그리고 다른 버퍼 관심용 이동줄을 캜 y (붙여넣습니다) 한 후, 다른 버퍼에 이동줄을 백됩니다 종료할 매크로. 그런 다음, 매크로를 실행할 때마다 줄을 복제할 수 있습니다 다음 것을 의미한다.

이 때 하지 않을 것이라고 보는 것은 정말 멋진 대해서 emacs 매크로 종소리에서. 실패 했을 때 어떤 일이 발생합니까 일치시키려면 변동분 검색 (그밖에 다른 것들로). 그래서 위의 매크로, 할 수 있는 매크로 1000년 배 c u c x ᅦ 1000년 시행할 예정이다. 그러나 이를 때까지 1000년 만 회선 또는 재발했지 prepress 복제본에 검색 실패! 즉, 그렇지 않을 경우 100 만 일치시킵니다 실행하십시오 매크로 100 배.

편집: 이를 통해 모든 것을 보여 캜 hf 체크아웃합니다 정규 표현식 매칭 흐름선 강조표시할 강조표시합니다 regex 일치하는 명령입니다. 내가 모르는 don& 어쨌든요 강조표시를 명령취소할 방법 # 39. 애니웨이 저장됩니까 매크로 모두 강조표시됩니다 regex 일치하는 사용할 수 있습니다 다음 다음 다른 매크로를 com/go/downloads_kr 불신하니?

추가 편집: M x 운하이라이트 정규 표현식 강조표시를, regex 는 명령취소할 입력해야 할 마지막 표시되어도 (하지만 설정값으로 regex 를 사용한 강조표시하려면)