답변:
이맥스는 그렇게 할 수있다 :
untabify
한 후returnindent-region
한 후return이것은 탭을 제거하고 모든 것을 올바르게 들여 쓰기합니다.
이 작업을 더 자주 수행해야하고 Emacs를 편집기로 사용하지 않는 경우 모두 스크립트로 압축 할 수 있습니다.
#!/usr/bin/emacs --script
(setq require-final-newline 'visit)
(defun indent-files (files)
(cond (files
(find-file (car files))
(untabify (point-min) (point-max))
(indent-region (point-min) (point-max))
(save-buffer)
(kill-buffer)
(indent-files (cdr files)))))
(indent-files command-line-args-left)
;; EOF ;;
M->
에 대한 일반적인 바인딩입니다 end-of-buffer
. 키보드에서 손을 떼는 것은 악하기 때문입니다.
C-x h
하는 실행, mark-whole-buffer
.
untabify
모든 것이 선택 해제 된 후에 지역을 다시 선택해야 하며, (2) 메뉴에있는 것만 사용하지 않았습니까? 그럴 가치가 있습니다!
Vi / Vim에서 올바른 파일 구문 ( :set syntax=sh
)을 설정 한 후에는 gg=G(또는 1G=G)을 눌러 전체 파일의 들여 쓰기를 수정할 수 있습니다.
전체 파일을 적절한 형식으로 지정하는 명령은 다음과 같습니다.
ex +"set syn=sh" +"norm gg=G" -cwq foobar.sh
참고 : 위 명령을 실행하기 전에 백업하십시오.
포맷을 먼저 테스트하려면 Vim에서 파일을 편집하고 다음을 실행하십시오 :norm gg=G
.
참조 : Vi SE에서 잘못 들여 쓰기 된 코드 다시 들여 쓰기
if
하고 fi
키워드. 아마도 일부 플러그인이 필요합니까?
filetype=sh
(또는 ft
) 해야합니다 .
shfmt -i 2 -ci ~/mariadb-qa/pquery-run.sh
아마도 Super Shell Indent를 원할 것입니다 . ~ / .vim / indent에 저장하고 다음 vim에있을 때 실행하십시오.:source ~/.vim/indent/sh.vim
.vimrc에서 파일 기반 스마트 들여 쓰기를 설정하려고 할 수도 있습니다.
" Turn on smart indenting
filetype indent on
set smartindent
vim이 당신의 서식을 망칠 염려가 없다면 vimrc 에도이 줄을 추가하십시오.
" When you load/save a shell script, auto indent it
autocmd BufRead,BufWritePre *.sh normal gg=G
어쨌든, 여기 당신이 기다리고있는 것이 있습니다. 다음에 vim에서 쉘 스크립트를 편집 할 때 스마트 들여 쓰기를 설정하고 수퍼 쉘 ID를 설치했다고 가정하면 다음 키를 눌러 스크립트를 다시 들여 쓰기하십시오.gg=G