나는 타이핑을 적게 하는 방식으로 Emacs를 구성하려고 노력하고 있지만, 프로그래밍할 때 어느 정도 동일한 작업을 반복해서 수행(타이핑)한다는 사실을 활용하여 동일한 목표를 달성하려고 합니다. 의학적 이유뿐만 아니라 전반적으로 의미가 있기 때문에 이것이 필요합니다.
내가 구상하는 Emacs 인터페이스는 기본적으로 명령과 인수가 혼합되어 있습니다. 제가 한 가지 예만 말씀드리면, 여러분은 바로 이해하실 것입니다.
글쎄요, C에서 "무언가보다 적으면 하나를 추가하세요"라는 for 루프가 매우 일반적이라는 것을 알기 위해 그렇게 예민할 필요는 없습니다. 그래서 다음과 같은 글을 써야겠다고 생각했습니다.
(defun C-for-loop-new-int-less-inc (var start stop)
"Shortcut for putting a C for loop at point.
Note: There are some specifics to i."
(interactive "sVariable: \nnStarts at: \nnLess than: ")
(insert
(format "for (int %s = %d; %s < %d; %s++) {\n\n}"
var start var stop var) )
(previous-line)
(c-indent-line-or-region) )
그리고 타이핑을 줄이세요:
(defalias 'fnili 'C-for-loop-new-int-less-inc)
이제 M-x fnili RET i RET 0 RET 10 RET
널 데려가야겠어
for (int i = 0; i < 10; i++) {
}
커서는 들여쓰기된 두 번째 줄에 있습니다.
이것이 개선되었지만 어떻게 다음과 같이 명령을 시작할 수 있습니까?
fnii0l10i
이렇게 하면 모든 RET
-wait-reorient 주기가 사라지고 전체 명령을 한 번만 작성하면 항상 표시됩니다.
이제 문자열을 가져와서 구문 분석하는 함수를 작성할 수 있지만 Emacs가 내가 찾고 있는 인터페이스를 이미 지원했다면 그렇게 하지 않았을 것입니다.
편집하다
그렇다면 "템플릿 시설"이 바로 그것입니까?
나는 그렇게 생각하지 않는다저것하기가 어렵습니다. 가능한 모든 우여곡절을 포함하여 전체 C 언어가 이와 같기를 원한다면 동의합니다. 그러나 시간이 많이 걸리는 일부 사례(예: 스위치 케이스, 헤더 파일의 가드)를 식별하고 구현하는 것은 유용한 기능이 될 것입니다.
물론 작업이 이미 완료되었다면 처음부터 다시 할 수는 없으므로 (말씀드린 대로 :) 꼭 링크를 확인하겠습니다.
하지만... 제 생각에는 제 예제가 너무 복잡해서 인터페이스에 관한 실제 문제를 가리고 있습니다. RET
각 매개변수에 대해 빈 행을 입력하고 가져오는 대신 명령줄에 모두 입력하세요.
더 간단한 예: 을 제외하고 M-x man RET irssi RET
어떻게 해야 합니까 M-x man"irssi" RET
? 이 경우에는 단지 단일 인수일 뿐이고 (기억해야 할) 복잡한 것도 없고 실수할 일도 거의 없기 때문에 별로 도움이 되지 않습니다(어쩌면 약간). 수정하려면 "역추적"을 선택하세요. 그러나 원본 게시물의 for 루프 예제 명령(존재하는 경우 본 적이 없기 때문에 가상임) - 이 경우 실제로 이점을 얻을 수 있습니다.