挿入モードのバックスペースで文字が消去されない


10

私はviが初めてですが、実際には今日からviを学び始め、バックスペースキーの動作に行き詰まりました。実際、私が初めてUbuntu 12.04でviを起動したとき、バックスペースキーは正常に機能していましたが、その後、奇妙な動作を始めました。挿入モードでバックスペースを押すと、文字を消去するのではなく、1か所左に移動します。デフォルトのバックスペース機能を元に戻すにはどうすればよいですか?vimをインストールしたり、nocompatibiltyを設定したりしないことに注意してください。


5
それが伝統的なviの振る舞いです。非互換性を設定するオプションがある場合は、すでにを使用していvimます。
ステファンChazelas

Ubuntuにviがインストールされていることを知りません。Linuxの世界では、viはvimへのシンボリックリンクにすぎません。実際のviを学びたい場合は、nviまたはhairloomプロジェクトviをインストールしてください。
Predrag Punosevac 2013年

回答:


6

時々、viコマンドはエイリアスでvimあり、asとして呼び出されるとvi、そのviモードが有効になります。

従来のモードでも、バックスペースは文字を削除しますが、すぐに削除されたものとして表示しません。(ESCを押すと、文字が消えます。)

vi記述された動作に付属しているものを使用vimするか、期待どおりにそれを実行できるものを使用するかを選択する必要があると思います。


9
  1. 実際にプレーンviビアを使用しているかどうかを確認する

    $ vi --version | head -n 1

    これは私のマシンに与えます(Debian 7)

    VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Feb 10 2013 02:27:59)

    vimをviのように動作させることができます。これは、コマンドを与えることによって行うことができるvi代わりに、vimコマンドラインからviのみSYM-リンクであるvim場合Vimはviのモードでオープンされています、。これはで確認でき:set compatible?ます。

  2. 前の回答で述べたように、バックスペースの効果は、が有効になっているinsert modeときに立ち去った後にのみ表示されset compatibleます。

注:vi互換モードでは、以前に(入力される前にinsert mode)入力されたテキスト、またはでeolまたはインデントをバックスペースすることはできませんinsert mode。見る :help 'bs'

    'backspace' 'bs'        string  (default "")
                            global
                            {not in Vi}
    Influences the working of <BS>, <Del>, CTRL-W and CTRL-U in Insert
    mode.  This is a list of items, separated by commas.  Each item allows
    a way to backspace over something:
    value   effect
    indent  allow backspacing over autoindent
    eol     allow backspacing over line breaks (join lines)
    start   allow backspacing over the start of insert; CTRL-W and CTRL-U
            stop once at the start of insert.

    When the value is empty, Vi compatible backspacing is used.
    For backwards compatibility with version 5.4 and earlier:
    value   effect
      0     same as ":set backspace=" (Vi compatible)
      1     same as ":set backspace=indent,eol"
      2     same as ":set backspace=indent,eol,start"

さまざまな設定を試して、その意味を理解してください。挿入モードで文字/改行とインデントを入力し、終了して挿入モードに戻ってから、バックスペースを試してください。

viの動作に慣れておらず、プレーンなviの使用を主張しない(とにかく推奨されない)ユーザーは、を使用する必要があり:set backspace=indent,eol,startます。DebianのAfaikには通常、この設定でインストールされるシステム全体の構成ファイルがあります。

現在の設定はから取得できます:set bs?


5

.vimrcという名前のユーザーのホームディレクトリに新しいファイルがまだない場合は作成します。ここでは、viと同時に作成および編集します。

sudo vi ~/.vimrc

次のコマンドを追加します。これには、互換モードのオフとバックスペースキーの消去機能が含まれます。

set nocp
set backspace=indent,eol,start

を使用してファイルを保存して終了する

:wq

互換モードをオフにすると、昔のviの人が慣れている矢印キーを使用できます。

ファイルの作成時にsudoを実行したので、ファイルの所有権はおそらくrootになります。あなたはユーザーにファイルをchownすることができます。

私の場合、これはラズベリーのpiのためのものだったので、ユーザーとグループはpiです。

chown pi:pi ~/.vimrc

再びviを起動してお楽しみください!


1
set nocp私のためにトリックをしました
ルイスM

2

VI / VIMチートシートを見るのが最善の方法だと思います:http ://www.viemu.com/vi-vim-cheat-sheet.gif

通常モード(ESC)を入力してから、SHIFT + Xを押します。


0

ちょうどあなたの中に置きます ~/.zshrc

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