답변:
expand-region.el을 사용하십시오 .
영역 확장은 선택한 영역을 의미 단위로 증가시킵니다. 원하는 것을 선택할 때까지 키를 계속 누르십시오.
예를 들면 :
(setq alphabet-start "abc def")
커서가 c에 있으면 전체 단어 abc를 표시 한 다음 인용 부호 abc def의 내용으로 확장 한 다음 전체 인용 부호 "abc def"로 확장 한 다음 sexp setq의 알파벳 순서로 시작합니다. def "그리고 마지막으로 전체 sexp.
다음과 같이 설정할 수 있습니다.
(require 'expand-region)
(global-set-key (kbd "C-=") 'er/expand-region)
너무 멀리 확장하면 음수 접두사로 리전을 다시 축소 할 수 있습니다.
expand-region
다른 답변에서 제안한대로 시도해야한다는 것에 동의합니다 (투표합니다).
그러나 관련 내장 명령에 익숙하지 않은 경우를 대비하여 :
C-M-u, backward-up-list
C-M-SPC, mark-sexp
영역이없는 첫 번째 예에서는 C-M-u C-M-SPC
둘러싸는 목록을 표시하는 데 사용할 수 있습니다 . 이미 선택된 영역이있는 경우이 명령은 해당 영역을 확장합니다. 따라서 42
를 선택하고 C-M-u
눌렀을 때 선택은 목록의 시작 부분으로 뒤로 확장되지만 닫는 파엔은 포함되지 않습니다.
그래서 뭔가가 없을 경우처럼 expand-region
나는 칠 것이다 C-g
다음, 현재의 모든 선택을 취소하는 C-M-u
당신이 원하는대로 다음, 많은 괄호로 돌아가 C-M-SPC
마크
활성 지역의 경우 lispyh 에서 원하는 것을 수행합니다. 최근 소개 글을 참조하십시오 .
첫 번째 경우 M-m h.
lispy
로 시작:
(defn foo [x] (+ x ~42|))
여기서, ~
마크 (영역의 시작)를 |
나타내고, 포인트 (영역의 끝)를 나타낸다.
h당신 과 함께 :
(defn foo [x] |(+ x 42)~)
l당신 과 함께 :
(defn foo [x] ~(+ x 42)|)
으로 k당신은 (와 취소 수 j) :
(defn foo [x] (+ ~x| 42))
와 함께 2k또는 kk당신은 얻는다 :
(defn foo [x] (~+| x 42))
d당신 과 함께 :
(defn foo [x] (+ x |42~))
으로 d>당신은 (와 취소 수 <) :
(defn foo [x] (+ |x 42~))
함께 d2>또는 d>>얻을 :
(defn foo [x] (|+ x 42~))
m당신 과 함께 :
(defn foo [x] (+ x 42|))
다만 영역이 활성 상태이면, 요약 h, j, k, l 영역을 이동 화살표이다. >점의 방향으로 하나의 의미 단위로 영역을 성장시킵니다. <점의 방향으로 하나의 의미 단위로 영역을 축소합니다. m마크를 비활성화합니다. i영역의 첫 번째 요소를 선택하고 d포인트와 마크를 교환합니다.
expand-region
목록을 즉시 표시 하는 특정 함수를 호출er/mark-outside-pairs
합니다.