3

私は長年の vim ユーザーであり、最近、emacs に viper-mode があり、両方の長所を提供していることを発見しました (少なくとも私にとっては)。ただし、私は主に Python でコーディングしており、タブとスペースの混在が大きな問題であるため、本当に気になることが 1 つあります。

挿入モードでは、TAB を押したときに、TAB の代わりに viper-shift-width スペースを挿入したいと思います。これどうやってするの?いくつかの単純な Lisp 関数/設定が解決策だと思います。

これを実行できるviper-mode設定には何も見つかりませんでした。

編集:

私は(setq-default indent-tabs-mode nil).emacs に持っていますが、viper-mode で挿入モード (挿入モードの vim で) にあるとき、これは機能しません

4

2 に答える 2

6

最初に、次のように のデフォルト値が'indent-tabs-modeisnilであることを確認する必要があります。

(setq-default indent-tabs-mode nil)

次に、 ではviper-mode、あなたの にも依存しますviper-expert-level。レベル 1 または 2 では、モード マップTABを介してバインドされているように見えます(エキスパート レベルが 1 または 2 の場合に有効になります)。最大限の vi 互換性を提供しようとしていると思います。これは、かなり基本的なカスタマイズの使用を含む、いくつかの Emacs 機能を犠牲にすることを意味します。'self-insert-commandviper-insert-diehard-minor-mode

つまり... エキスパート レベルを 3 以上に上げることができます。

(setq viper-expert-level 5)        ; really, why use anything less?

レベル 1 または 2 が本当に必要であるが、TAB を自己挿入コマンドにしたくない場合は、これを .viper ファイルに追加します。

(define-key viper-insert-diehard-map (kbd "TAB") 'viper-insert-tab)

レベル1でも、それは私にとってはうまくいきます。

于 2009-07-07T19:50:34.983 に答える
0

おそらくindent-tabs-mode?

nil に設定したり、設定を解除したりするとどうなりますか?

viper モードになったら、Mx apropos を実行してから、スペース、タブ、またはインデントを検索してみてください。

于 2009-07-07T19:39:28.783 に答える