emacs : 파이썬 코드의 영역을 4 칸 들여 쓰거나 들여 쓰는 방법?


60

emacs에서 선택한 파이썬 코드 영역이 있습니다. 4 줄씩 모든 줄을 들여 쓰기하고 들여 쓰기를 해제하는 가장 효율적인 방법은 무엇입니까?

이상적으로 나는 문맥에 민감하지 않은 것을 원합니다 (예 : 들여 쓰기가 파이썬 구문과 관련이없는 docstrings 내에서 구절을 들여 쓸 수있게 해줍니다).

내 모드 라인이 표시 (Python)됩니다. 웹을 검색하는 python-mode대신 python에을 사용 하는 것에 대한 많은 토론을 찾았 지만 며칠 전에 emacs를 사용하기 시작했기 때문에 이해할 수있는 기회를 갖기 전에 기본값을 변경하는 것에주의를 기울였습니다. 로 변경하는 python-mode것이 최선의 선택 이라면 이 답변을 받아 드리겠습니다.

내가 시도한 것 (매뉴얼에서) :

  • <TAB> 효과가 없다
  • C-M-\ 효과가 없다
  • C-x <TAB> (단단하게 들여 쓰기) 모든 행을 하나의 열로 들여 쓰기 (및 영역 선택 해제)
  • M-i 첫 번째 줄을 탭으로 들여 쓰기 (길이 8 칸)
  • C-M-q - "CMq가 정의되지 않았습니다"

내가 찾은 유일한 방법은 regex-replace를 사용하는 것이지만, 그러한 간단한 작업을 위해 엄청나게 많은 키 입력입니다.

답변:


69

변수 python-indent가 4 라고 가정합니다 .

M-x python-shift-right (C-c >)
M-x python-shift-left  (C-c <)

5
나는해야했다 python-indent-shift-left.
nnyby 2016 년

17

indent-rigidly들여 쓰기 정도를 나타내는 접두사 인수를 사용하므로 C-u 42 C-x TAB42 개의 열 이 들여 쓰기되고 기본 접두어 인수가 4이므로 C-u C-x TAB4 개의 열이 들여 쓰기됩니다.

지역을 다시 선택하려면 C-x C-x나중에 수행하십시오 .


8

indent-rigidly 명령을 숫자 접두사와 함께 사용하십시오.

C-u 4 M-x indent-rigidly네 개의 공백으로 영역을 들여 쓰고 네 개의 공백 C-u -4 M-x indent-rigidly을 제거합니다.


4

Cx Cx 코드를 표시 한 다음 Mx 들여 쓰기 탭 모드

모든 줄에 대해 탭을 누르면 저장됩니다.


3

열 모드를 사용할 수도 있습니다.

열 모드에서 행을 선택한 다음 한 번에 모두 네 개의 공백을 추가하십시오.

  1. 들여 쓰기하려는 첫 번째 행의 열 1로 이동하십시오.
  2. C-<space> 마크를 설정
  3. 점을 마지막 줄로 이동 (1 열에 머물러)
  4. C-x r t열 모드로 들어가기 (또는 C-<RET>CUA 모드가있는 경우)
  5. <space><space><space><space><RET>

비슷한 조작을 수행하여 4 개의 공백을 삭제할 수 있습니다. 표시된 영역에 4 개의 열을 포함하고 (2-3 단계) <DEL>


3

현재 (Emacs 24.4.1에서 테스트) 위에 Chen의 솔루션을 업데이트하면 명령 이름이 바뀌 었습니다. 따라서 python-indent 변수에 따라 들여 쓰기를 가정하면 명령은 python-indent-shift-left 및 python-indent-shift-right입니다. 당신은 할 수 있습니다 :

  1. 입력하여 발행 M-x python-indent-shift-right하거나M-x python-indent-shift-left

  2. 기본 파이썬 모드 단축키를 사용 C-c >하고C-c <

  3. 그것들을 리 바인드하십시오. 예를 들어 Windows 버튼이있는 키보드에서는 다음을 사용합니다.

    (global-set-key (kbd "s-s") 'python-indent-shift-left) 
    (global-set-key (kbd "s-d") 'python-indent-shift-right)
    


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.