함수 내의 문자열로 현재 영역의 내용에 액세스하려고합니다. 예를 들면 :Emacs Lisp에서 현재 영역의 내용에 어떻게 접근합니까?
(concat "stringa" (get-region-as-string) "stringb")
감사
에드
함수 내의 문자열로 현재 영역의 내용에 액세스하려고합니다. 예를 들면 :Emacs Lisp에서 현재 영역의 내용에 어떻게 접근합니까?
(concat "stringa" (get-region-as-string) "stringb")
감사
에드
region-beginning
과 함께 buffer-substring
및 region-end
그렇게 할 수 있습니다.
starblue에서 말하듯이 (buffer-substring (mark) (point))
은 표시가 설정된 경우 영역의 내용을 반환합니다. string properties을 원하지 않으면 'buffer-substring-no-properties
변형을 사용할 수 있습니다.
대화 형 명령을 작성하는 경우 (interactive "r")
양식을 사용하여 영역의 끝점을 얻는 더 좋은 방법이 있습니다. 당신은 버퍼뿐만 아니라 지역의 어떤 부분에 라인을 계산이 기능을 사용할 수 있도록
(defun count-lines-region (start end) "Print number of lines and characters in the region." (interactive "r") (message "Region has %d lines, %d characters" (count-lines start end) (- end start)))
의 (interactive ...)
형태로, 무시 : 여기 simple.el
에서 예입니다 적절한 인수를 전달합니다 (예 : (count-lines-region (point-min) (point-max))
). 버퍼의 좁은 부분의 행을 계산합니다. 그러나 대화식으로 호출 될 때 (interactive ...)
양식이 평가되고 "r"
코드는 포인트와 표시를 두 개의 숫자 인수로 가장 작은 것으로 제공합니다.
이멕스 리스프 매뉴얼 21.2.1 Using Interactive과 21.2.2 Code Characters for interactive을 참조하십시오.
Lisp 코드의 영역 내용을 kill-ring, X clipboard 또는 register와 같은 사용자 액세스 가능 데이터 구조로 복사하려면 이멕스 Lisp 매뉴얼에서 buffer-substring
대신 filter-buffer-substring
을 사용할 것을 권장합니다. 복사하기 전에이 함수는 filter-buffer-substring-functions
이라는 목록 변수에서 필터 함수를 적용합니다. 이 함수는 added in version 22.3입니다.
정말 멋지 네. 고마워. 나는 나 혼자서 그것을 명확히 발견하지 못했을 것이다. – Singletoned