내가 Vim에 대해 놓친 주요 기능 중 하나는 항상 현재 파일의 파일 이름을 %
버퍼 에 저장한다는 것입니다 ( 자세한 정보 ). 이를 통해 다음과 같은 명령을 쉽게 시작할 수 있습니다.
;; compile current file
:! gcc %
;; source current file (useful when I'm editing .vimrc
:source %
;; get the size of current file
:! du -sh %
;; etc, etc...
비슷한 기능을 원합니다 emacs
(버전 24, 차이 가 나는 경우). 즉, 현재 버퍼에서 열린 파일의 이름을 쉽게 삽입 할 수 있습니다.
내가하고 싶은 일의 예
여기서는 그러한 지름길이 필요할 때 더 잘 설명하기 위해 몇 가지 기본 사용 사례를 설명합니다.
컴파일 :
M-x compile
emacs를 입력 하면 컴파일 명령을 요청합니다.gcc (current-buffer)
쉽게 들어가고 싶습니다 .파일로드 : .emacs 파일을 편집 할 때 변경 사항을 테스트하기 위해 즉시로드하고 싶습니다. 내가하는 방법은
M-x load-file
항상 이름을 입력하는 것 . e m a c s입니다. 바로 가기를 갖고 싶습니다.외부 프로세스 시작 :
du -sh
예를 들어서 셸 명령을 실행할 때 바로 가기를 사용할 수 있음을 보여주기 위해 설명했습니다.M-!
내가 지금까지 찾은 것
- 이 질문 은 U & L에 있습니다. 주어진 답변은 기본적으로 버퍼의 파일 이름을 찾을 수있는 위치를 보여 주므로 킬 링에 추가 할 수 있습니다. 정확히 내가 찾는 것이 아니며 파일 이름을 사용하기 전에 파일 이름을 수동으로 죽이고 싶지 않습니다. (두 답변 모두에 설명 된 솔루션은 내 이맥에서 원활하게 작동하지 않는 것으로 보이며 약간의 키 입력이 필요하므로 약간의 고통이 있습니다).
편집 : 조금 관련이 없습니다.이 솔루션이 작동하지 않는 이유를 알았습니다. 더 나은지 나쁜지 IDO를 사용하도록 설정했습니다.
(current-buffer)
기능 설명서에 설명는 현재 버퍼에있는 파일의 이름을 반환하지 않습니다, 그러나 아무데도 예에 내가 elisp 코드를 평가하고, 이상했다. 이 함수의 평가 결과를 (미니) 버퍼에 삽입 하고이 방법을 바로 가기에 바인딩하는 방법이 있습니까?
이런 식으로 생각하는 것이 잘못입니까?
Vim을 몇 년 사용한 후에 emacs를 사용하는 법을 배우고 있습니다 (실제로 몇 달이 지났습니다). 예측 가능한 using-emacs-in-a-Vim-way 트랩 을 피하고 싶습니다 . 당신은 내가 무엇을 요구하고있어 매우 아니라고 느끼는 경우 이맥스-Y , 그것을 할 수있는 더 좋은 (청소기?) 방법이 있어야합니다, 귀하의 답변에 언급 마십시오.
(buffer-file-name)
미니 버퍼를 입력 하는 동안 달리면 미니 버퍼 nil
이기 (current-buffer)
때문에을 얻습니다 . 미니 버퍼에있는 동안에도 버퍼를 전환 할 수 있으므로, Emacs가 보는 것처럼 현재 버퍼가 미니 버퍼 인 시점에 따라 현재 버퍼에 대해 어떤 버퍼가 현재 버퍼인지 생각하는 것은 추적하기 어렵습니다.
(global-set-key (kbd "C-i") buffer-file-name)
Ctrl + I가되어야합니다. .emacs에M-x load-file RET
대해 원하는 것을 수행합니다. 아무 것도 쓸 필요가 없습니다.