Vimに似たEvilのアンドゥ動作を取得するにはどうすればよいですか?


17

Evilのデフォルトのアンドゥ動作は、挿入モードに入ってからそれを1つの編集操作として終了するまでの間に行われることをすべて考慮しているため、粒度が粗すぎます。1回の挿入中にテキストの段落全体を入力してから元に戻すを実行すると、段落全体が削除されます。それとは対照的に、Vimは、テキストを入力する以外の方法で挿入モードでカーソルを移動するたびに、新しい取り消しユニットを開始します。

Evilには、よりきめ細かい取り消し履歴を取得するために使用できるカスタマイズ変数があります。

(setq evil-want-fine-undo t)

この設定では、Vimと同様に、カーソルが挿入モードで移動すると、Evilは新しい取り消しユニットを開始します。ただし、この設定は、置換操作の処理方法も混乱させます。を使用して単語を置換する場合cw、元の単語を復元するために2回元に戻す必要があります。これはVimと矛盾しており、replaceはアトミックでなければならないため、あまり意味がありません。

質問:Vimの取り消し動作を取得するために、どのように悪と取り消しツリーを構成できますか?


ここに問題を提出してください:bitbucket.org/lyro/evil/issues?status=new&status=open(一般的に、悪はvimからの分岐をバグと見なします)。
shosti 14年

@shosti、あなたは正しいですが、カスタマイズ変数の存在は、彼らがこのケースでそのルールに例外を作ることにしたことを示唆しています。とにかくバグを報告します。しばらく様子を見てみましょう。
tmalsburg

カスタマイズ変数は、実際にはより多くのEmacsのような取り消し動作を取得するためのものだと思います(Emacsはvimと同じ方法でアトミック操作を行いません)。
shosti 14年

:ここでは新しい問題だbitbucket.org/lyro/evil/issue/444/...
tmalsburg

回答:


10

@shostiが、EvilはVimの動作からの逸脱をバグと見なしていると指摘したので、バグを提出し、Evilの作者の1人が次の値を新たに追加しましたevil-want-fine-undo

(setq evil-want-fine-undo 'fine)

この設定を使用すると、挿入モードでカーソルを移動するときに新しい元に戻す単位を取得できますが、置換操作は1ステップで元に戻ります。私が知る限り、これはVimと一致しています。詳細はこちらをご覧ください。


2
'fine設定が廃止されているため、このソリューションは推奨されません。
-tmalsburg

1

変数の説明(を参照C-h v evil-want-fine-undo)によると、値fineは一貫性のない動作のためにサポートされなくなりました。

入力ミスを元に戻すために[元に戻す]を使用するか、上記の設定が私の割り当てに役立ちました。

(setq evil-want-fine-undo t) 

で変更する場合は挿入モードを終了する必要がないため、組織テーブルの数式編集でエラーを取り消すのに問題があり*Edit Forumlas*ましたC-'


更新していただきありがとうございます。Bitbucketの問題の再開をリクエストしました。
-tmalsburg
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.