(n)vi - exモードで消去

(n)vi - exモードで消去

(n)vi 1.79のexモード( ':'コマンドライン)でVimのように文字を削除したり、 'バックスペース'が機能するようにするにはどうすればよいですか?

「バックスペース」と「削除」はカーソルを左に移動するだけで、新しいキー入力が挿入されずに上書きされます。これは挿入モードと同じですが、「Esc」を使用してカーソル「バックスペース」の後のすべての項目を消去できます。するシェルのコマンドラインから消去します。

私はfvwmのxtermで(n)viを使用していますが、各xtermは新しいOpenBSD 7.1インストールに含まれています。 Vimとそのviコマンド(例:set互換)は(n)viとは異なります。私が検索したいくつかの場所:

ベストアンサー1

これはOpenBSDでのex-viの歴史的動作 (リポジトリusr.bin/vi/vi/v_txt.cの下src):

  /*
   * Historically, vi didn't replace the erased characters with
   * <blank>s, presumably because it's easier to fix a minor
   * typing mistake and continue on if the previous letters are
   * already there.

削除された文字を常に消去するには、パッチを適用してvi再コンパイルする必要があります。この時点で、以下を実行します。自分だけのフォークvi

diff --git vi/v_txt.c vi/v_txt.c
index c1d95e8..9ea1954 100644
--- vi/v_txt.c
+++ vi/v_txt.c
@@ -1014,8 +1014,7 @@ leftmargin:               tp->lb[tp->cno - 1] = ' ';
                 * point in the screen.  So, if incrementally searching, erase
                 * the erased characters from the screen.
                 */
-               if (FL_ISSET(is_flags, IS_RUNNING))
-                       tp->lb[tp->cno] = ' ';
+               tp->lb[tp->cno] = ' ';

                /*
                 * Increment overwrite, decrement ai if deleted.

vimあるいは、他のプラットフォームとかなり互換性のあるインストールを行うこともできます。vim

doas pkg_add vim

おすすめ記事