[?] emacs 에서 키 매핑(key mapping)
글쓴이: philos66 / 작성시간: 화, 2005/12/06 - 2:59오후
vi 에서
imap .e1 \em{<Esc>1ea}
하는 것처럼 2개 이상의 키입력을 하나의 함수와 연결하고 싶은데, emacs에서는 어떻게 해야 실현이 가능할까요?
예를 들어
(global-set-key "zx" 'my-func)
라고 하면 실행시 다음과 같은 에러가 나네요.
(error "Key sequence z x uses invalid prefix characters")
emacs의 키 매핑에서는 위와 같은 여러 개의 키입력을 하나의 함수에 연결하는 것이 본래 불가능한 것인가요? 그렇다면 달리 방법이 없을까요? 고수님들의 조언 부탁드립니다. 답변에 미리 감사드립니다.
Forums:
갑자기 Emacs 관련 질문이 많이 나오니, Emacs 사용자로서 기분이
갑자기 Emacs 관련 질문이 많이 나오니, Emacs 사용자로서 기분이 좋네요. :wink:
일단 질문의 의도가 궁금합니다. vi의 설정을 몰라서..
"zx"를 키로 쓰겠다는 것은 알파벳 'z'를 누른 다음 'x'를 누를 경우 특정 명령이 실행되게 하고 싶다는 것인가요?
(불가능한 것은 아니지만) 그 경우, "zx"라는 문자열을 어떻게 입력하실 건가요?
또, Emacs는 아시다시피 mode에 따라 다른 기능과 단축키를 제공합니다. 따라서 C 파일을 편집할 때와 LaTeX 파일을 편집할 때의 단축키가 약간씩 달라질 수 있습니다. 원하는 단축키의 기능이, 모드에 상관없이 쓸 수 있게 하는 것을 원하시는 것인가요? 아니면 특정 모드에서만 동작하는 것을 원하시나요?
이런 것들이 분명해져야 답변을 드릴 수가 있을 것 같군요.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
부연 설명입니다.
emacs는 쓰면 쓸수록 감칠 맛이 나는 프로그램이라는 생각이 듭니다. 처음 접할 때는, 마치 복잡한 비행기 계기판을 처음 대하듯, 너무 기능이 방대하고 복잡하게 보여서 무엇부터 어떻게 해야할 지 모르고 우왕좌왕했습니만, 일단 아는 것부터 쓰면서, 필요한 기능이 있을 때마다 그때 그때 매뉴얼을 읽으면서 익혀보니 정말 못할 것이 없는 프로그램이다라는 생각이 듭니다. :wink:
제가 하고자 하는 일은 다음과 같습니다. 지금 LaTeX 문서 작업을 하고 있는데요, \textbf{}로 감싸야 할 부분이 너무 많은 겁니다. 그래서 처음에는 abbrev-mode 방식으로 구현하려고 했는데요, 그런데 이 경우에는 문자열 치환은 되도 함수를 불러올 수는 없더군요. 그래서 다음과 같은 루틴을 생각했습니다.
1) 입력 버퍼 내에서 '.b'를 입력한다. '.' 과 'b'를 연달아 타이핑하는 것을 말합니다.
2) 이 '.b' 입력을 내가 작성할 insert-bf 함수에 키맵핑한다.
3) insert-bf 함수 내에서
3-1) (insert "\\textbf{}")를 호출해 '\textbf{'부분을 버퍼 내에 삽입한다.
3-2) mini-buffer 입력 함수를 호출해 몇단어를 건너뛰어 '}'를 입력할 지를 숫자로 입력 받는다. 예를 들어 3단어를 건너 뛴다고 하겠습니다.
3-3) 3단어를 건너 뛴 뒤, (insert "}") 함수를 호출해 닫는 괄호를 버퍼내에 삽입한다.
4) insert-bf 함수 종료
LaTeX 파일을 편집할 때에만 작동 하면 더 좋겠습니다. 마지막으로 관심 기울여 주셔서 감사드립니다.
Re: 부연 설명입니다.
위의 (insert "\\textbf{}")를 (insert "\\textbf{") 로 정정합니다.
흠.. 요청하신 사항은 Emacs style에는 아주 부합하는? 기능이
흠.. 요청하신 사항은 Emacs style에는 아주 부합하는? 기능이 아닌 것 같습니다. 보통 Emacs에서는 이런 기능을 만들어 씁니다.
1. 원하는 문자열을 자동으로 입력하고, 커서의 위치를 원하는 곳에 위치시킨다. 즉 "\textbf{}"를 자동으로 입력하고 커서를 "{}"사이에 위치시킨다.
2. 지정된 영역(region)을 원하는 문자열로 둘러 싼다. 즉 어떤 region을 "\textbf{...}"로 둘러싼다.
아래에 \textbf{}, \textit{}, \texttt{}를 쓸 수 있도록 만들어 보았습니다. 이 것을 .emacs에 넣고 쓰도록 하세요.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기