シェルスクリプト関数のインデントを設定する


11

sh-mode(bashサブモード)で新しい関数を開始するために、インデントごとのスペース数を設定しようとしています。私は設定しようとしました:

'(sh-basic-offset 2)
'(sh-indentation 2)
'(smie-indent-basic 2)

(に示されているようcustom-set-variables.emacs)およびいくつかの他にも、それらのどれも何の効果も持っていませんでした!


変数を設定する方法は経由ではありませんcustom-set-variables(カスタマイズによって内部的に使用されるものですが、手動で使用するためのものではありません)。のようなものをよりよく使用します(setq sh-basic-offset 2)
ステファン

回答:


6

sh-basic-offset必要なインデントに設定することが必要ですが、私が認識していなかったことは、カスタマイズを有効にする前に、すべてのシェルスクリプトファイルを閉じて再度開く必要があることです。emacsでこれを行う必要があったことを覚えていない。


1
を変更した後.emacs、emacsを終了して再起動するか、を使用M-x load-fileしてリロードする.emacs必要があります。エディタで開いているファイルをリロードする場合はC-x C-v RETURN、「再訪問」するように言うことができます。
Alex L

この特定のケースでは、@ AlexLロードファイルは機能しません。私が言ったように、これは非常に珍しいです。通常は、単に変数をカスタマイズするだけで十分です。
ロビン・グリーン

うーん...これが@ robin-greenになる理由を知っていますか?私は興味がある。
Alex L

1

私はbasic-offsetを2に設定しましたが、それはうまくいかなかったようでした、私は戻って押してC-h v sh-<TAB>sh-indentation私がその変数を2に設定したことがあり、すべてが今のように魅力的に機能しているように見えることに気付きました。


「set-basic-offset」の意味を明確に、「変数を2に設定する」方法を明確にしてください。
Stefan

大なり記号と小なり記号の間に配置したため、フォーラムはタブを省略しました。Ch v sh-「タブを押す」オートコンプリートにより、変数のリストが表示されます。
Albaro Pereyra

マークアップを修正しましたが、コメントにはまだ「set-basic-offset」の意味や「変数を2に設定する」方法が説明されていません。
ステファン

この変数は26.1以降廃止されましたsh-basic-offset。代わりに使用してください。
goetzc

0

私はアルバロと同じ経験をしました。sh-basic-offsetを設定しても効果はありませんが、sh-indentationを設定すると期待どおりに機能しました。

私の場合、私(setq sh-basic-offset 2)はemacsで評価しました。Mx eval-expressionを介して。私は走っていGNU Emacs 25.2.2 (x86_64-pc-linux-gnu, GTK+ Version 3.22.21) of 2017-09-22, modified by Debianます。私のメジャーモードはシェルスクリプトです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.