回答:
Emacsはそれを行うことができます:
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
and fi
キーワードは処理されませんでした。おそらくいくつかのプラグインが必要ですか?
filetype=sh
(またはft
)。
shfmtがあなたのためにトリックを行うことができるようです。インデントを含むシェル/ bashコードをフォーマットします。
shfmt -l -w script.sh
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