web-dev-qa-db-ja.com

矢印キーを押すと、viエディターで文字が追加されます

viエディターの挿入モードで矢印キーを使用しようとすると、次の文字がエディターに挿入されます。

  • ために  私はBを取得します
  • ために  私はAを取得します
  • ために  私はDを取得します
  • ために  Cを取得します。

この問題の解決にご協力ください。

185
bvb

ホームディレクトリに.vimrcファイルがまだない場合は、これを使用して作成します。

vim ~/.vimrc

この行をファイルの先頭に追加します。

set nocompatible

ファイルを保存すると、問題が解決するはずです。 :)

226

vimをインストール->これで問題が解決します。

Sudo apt-get install vim

YouTubeやWeb全般には、多くの優れたvim/viチュートリアルがあります。問題については、 こちらをご覧ください

次に、通常どおりにファイルを開きます

vi desired-file
85
sthysel

viの場合、クリックすると i Insertテキストへのコマンドをアクティブにします。
このコマンドを使用すると、ファイルにテキストを挿入できます。
そして、クリックすると:

  • オン  「A」が挿入されます。
  • オン  「B」が挿入されます。
  • ...

Tillこのコマンドを無効にします。
viのコマンドを無効にするには:をクリックするだけです Esc
そして、矢印キーの通常の使用に戻ります:

  •  上がるために、
  •  下がるために、
  • ...

参考までに、いくつかのviコマンドがあります。
これから source

:xReturn viを終了し、変更されたファイルを元の呼び出しで指定されたファイルに書き出します
:wqReturn viを終了し、変更されたファイルを元の呼び出しで指定されたファイルに書き出します
:qReturn quit(またはexit)vi
:q!Return このvi呼び出しの最新の変更が保存されていない場合でも、viを終了します

 moveカーソルを1行下に移動
 moveカーソルを1行上に移動
 moveカーソルを1文字左
 moveカーソルを1文字右に移動

uundoあなたがしたことは何でも;簡単なトグル
.redoあなたがしたことは何でも

iinsertカーソルの前のテキスト、まで Esc ヒット
Iinsert現在の行の先頭にあるテキスト、まで Esc ヒット
aappendカーソルの後のテキストまで、 Esc ヒット
Aappendテキストを現在の行の終わりまで、まで Esc ヒット
oopenそして、現在の行の下の新しい行にテキストを入れます。 Esc ヒット
Oopenそして、現在の行の上の新しい行にテキストを入れます。 Esc ヒット

rreplaceカーソルの下の1文字(いいえ Esc 必要)
cwchange現在のWordを新しいテキストで、カーソルの下の文字から始めて、 Esc ヒット
xdeleteカーソルの下の1文字
Nxdeleteカーソルの下の文字から始まるN文字
dwdeleteカーソルの下の文字で始まる単一の単語
Cchange(現在の行の文字を(置換)まで、 Esc ヒット
Ddelete現在のカーソル位置から始まる残りの行

dddelete現在の行全体
Ndddelete現在の行から始まるN行。たとえば、5ddは5行を削除します
yycopy(ヤンク、カット)現在の行をバッファーに入れる
Nyycopy(yank、cut)現在の行を含む次のN行をバッファーにコピーします
ppasteバッファー内の行を現在の行の後のテキストに貼り付けます

0(ゼロ)moveカーソルを現在行(カーソルのある行)の先頭に移動
$moveカーソルを現在行の末尾に移動
wmoveカーソルを次のWordの先頭に移動
bmoveカーソルを前のWordの先頭に戻す
:0Return または1Gmoveカーソルをファイルの最初の行に移動
:nReturn またはnGmoveカーソルを行nに移動
:$Return またはGmoveカーソルをファイルの最終行に移動

/stringsearchテキスト内の文字列の出現を前方に検索
?stringsearchテキスト内の文字列の出現を後方に検索
nmove検索文字列の次の出現箇所へ
Nmove次の検索文字列の反対方向への移動

27
Boris

編集モードで矢印を押すと文字の印刷を無効にするには、次のようにします

vi $HOME/.exrc 

(ファイルが存在しない場合は作成します)、行set nocompatibleを追加して保存します。

17
Aniket Thakur

Viエディターには次の3つのモードがあります。

  • コマンドモード
  • 入力モード
  • デフォルトモード。

Youuがファイルを開くと、デフォルトモードになります。テキストの特定の位置に移動する場合は、矢印キーを使用するか、 h、 j、 k、 l キー。これは、押していない場合にのみ機能することに注意してください i (または次のようなコマンドを入力する他の入力モード a、 A、 I)。

「B」の理由は、入力モードの矢印キーが矢印キーとして機能しないためです。 Esc いつでもデフォルトモードになります。入力モードに移行するタイミング i または a、そして押すだけでナビゲートする i キーを押して矢印キーを使用するか、 h、 j、 k、 l

11
ps_cool

私はまったく同じ問題を抱えていましたが、ローカルマシンだけでなく、Win7 VMのc​​itrixレシーバー上のslesマシン上のPuTTY経由の接続でも同様でした。 Ubuntuの再インストール後にまったく同じ問題が発生した後、ローカルホストとリモートホストの両方が表示されます。

それを見つけた後

$ localectl list-keymaps 
Couldn't find any console keymaps.

この奇妙なVIの動作の原因この問題を解決するパッケージconsole-dataをインストールしました!

Sudo apt-get install console-data
7
kitingChris

与えられた説明はすべて少し奇妙です。 viがありますが、vimはインストールされていません。

代替案の確認:/etc/alternatives/vi/usr/bin/vim.tiny

vivim.tinyであり、/etc/vim/vimrc.tinyを使用します。

vimrc.tinyには、次の行があります。

set compatible

これは、このファイルでほとんど唯一のものです。 /etc/vim/vimrcでは、nocompatibleを使用していることに注意してください。

したがって、vimをインストールするか、vimrc.tinyファイルを変更するか、次の行を含む独自の~/.vimrcを作成します。

set nocompatible
3
Gunstick

注意:

他の投稿には良い情報がありますが、説明を試みた投稿はありませんwhyこの動作が発生しました。多くの人々は、将来これにつまずきます。また、以前の投稿のいずれかがあなたを助けた可能性が高いため、この質問を解決済みとしてマークできますか?


ここに説明があります

Viは長い間使用されてきたエディターで、ルーツはUnixシステムにまで遡ります。これは優れたツールですが、繰り返し使用されており、現在では改善されています。 Vimは後で書かれたもので、その繰り返しです。人々は一般にviを「vim-minimal」と呼び、vimはviの「改善された」バージョンです。次のように考えることができます:viはコアであり、vimはそれを拡張します。

同様にどのように動作を発見したか

この問題を発見するには、「i」を押して「insert」モードに入り、矢印キーを使用して正しい行と編集ポイントをナビゲートしました。これが予期しない文字の問題の原因です。

ソリューション1または2

1)vi someFileviを使用しているときに、まず編集ポイントに移動してから、挿入モードに入ります。

2)vim someFile単純にvimを最初から使用します。

マニュアル(manページ)を読んだり、ヘルプに-hを使用したりするのに十分なストレスはありません。シェルのパターンに調整すると、manページが親友になります。例:man viまたはman vim


Vimがインストールされていることを確認します

コンソールウィンドウを開き、次を実行します。

dpkg --list | grep vim

これに似たものが得られたら、vimを使い始めることができます。

~ $ dpkg --list | grep vim
ii  vim         2:7.4.052-1ubuntu3  AMD64  Vi IMproved - enhanced vi editor
ii  vim-common  2:7.4.052-1ubuntu3  AMD64  Vi IMproved - Common files
ii  vim-runtime 2:7.4.052-1ubuntu3  all    Vi IMproved - Runtime files
ii  vim-tiny    2:7.4.052-1ubuntu3  AMD64  Vi IMproved - enhanced vi editor - compact version

コマンドプロンプトが何も返さない場合、vimはインストールされていません。以下の例を使用してリポジトリを更新し、vimをインストールします。

Sudo apt-get update
Sudo apt-get install vim

インターネットで何かを修正する方法を検索するときにのみviまたはvimを使用し、vimと入力するのを忘れてしまうという偶然に、将来のために修正できる方法が1つあります。注意してください。エイリアスを使用してviをvimへの参照で上書きすると、まれに将来何を入力しても、その「おっと!」なしでvimを取得できます。瞬間。エイリアスは後でいつでも削除できます。

vim .bashrcと入力します。 ~のみの空行(またはaliasで始まる他の行(一緒にグループ化される)に移動し、iを押します。 キーを押して-insert-モードに入ります。独自の行に次のように入力します。

alias vi='vim'

Escを押してから、:wqと入力します。次に、ファイルをリロードする必要があります。 source .bashrcと入力すると、これらの編集を行った後に開く他のシェルは、.bashrcファイルを自動的にロードします。

3
D75

これは、TERM変数が原因の場合もあります。たとえば次のように設定します。

 export TERM=xterm
1
Jasper Nuyens

一部のシステムでは、nocompatibleオプションを使用できないか、プラグインが矢印キーの機能を中断した場合に問題が解決しない場合があります。これは回避策です...

.exrcファイルを編集して、次の行を含めます。

map! ^[OA ^[ka
map! ^[OB ^[ja
map! ^[OC ^[la
map! ^[OD ^[ha

または、問題が通常モードでのみ存在する場合、次のようにnmapに変更し、次のaをスキップできます。

nmap! ^[OA ^[k

等々。

これらを作成するために必要なキーの組み合わせは次のとおりです(最初の組み合わせのみを示します)。

map! <CTRL-V><Up-Arrow> <CTRL-V><ESC>ka

これにより、編集モードから抜け出し、目的の方向に移動して、編集モードに戻ります。これは、エスケープシーケンスをリテラル<ESC> <O> <A>などのシーケンスとして読み取るViを克服するために必要です。

ソース: https://hea-www.harvard.edu/~fine/Tech/vi.html

1
Dominic Comtois

従来のviエディターは、矢印キー(... afair)を認識しません。 2つの解決策があります。

  1. viの代わりにvimを使用します
  2. h、j、k、およびlを使用してナビゲートします(従来のvi btwでの編集中はナビゲートできません)。
1
MadMike

VIの場合、ファイル「〜/ .exrc」を作成または編集するか、VIMを作成または編集して、ファイル「〜/ .vimrc」を設定または行に追加します。

set nocompatible

この記事の執筆時点で、2番目に多く投票された項目に、なぜエントリが受け入れられなかったのか疑問に思う賞賛があります。その理由は、他のエディターのインストールを許可しないホストが存在するためです。その場合でも、vimには同じ効果がある場合があるため、上位2つのエントリから使用可能な情報がたくさんあります。ただし、どちらも100%正しい場合が100%正しい理由を明確にできれば幸いです。

1

何らかの理由で、Ubuntuは新しい18.04 VPSでユーザーrootのenvvar HOMEの初期化を省略しました。その場合、viは.vimrcファイルを見つけることができません。この問題は、通常のユーザー(/ home /)では発生しません。

変数を確認するには:

echo $HOME

この結果が空白行になる場合、変数は設定されていません。問題はなくなりました

export HOME=/root

コマンドを/root/.bashrcファイルに移動しました(これが通常どこに設定されるかわかりません)。

0
Erik

このマシンではmake sureが必要でした

set nocompatible

last entry in ~/.vimrcです。または、最後のエントリの少なくとも1つ、特にその後プラグインがロードされない。

HTH

0
Gen.Stack