OSX Debian SSH端末の奇妙なvi動作

OSX Debian SSH端末の奇妙なvi動作

スワップファイルの作成時にvi /etc/fstabルートとして発行します。 fstabファイルが表示されます。G $行末にジャンプしてiINSERTモードに切り替えます。右矢印を押すと、カーソルが1文字右に移動します。改行にvi大文字を挿入します。C慌てて左方向キーを押しました。vi大文字を挿入してくださいB

混乱しています。ここで何が起こっているのかを調べるには、どこから始めるべきですか?が利用可能でなければなりませんvi

答え1

強化されたvimを使用でき、矢印キーを使用することができます。 viはデフォルトでキーを使ってカーソルをh j k l移動します。

alias vi

だから$HOME/.vimrc この行を編集して入れてください。

set nocompatible

Unixに興味がある場合は、通常このvimrcを使用してください。

set nocompatible
set backspace=indent,eol,start
syntax on
imap <esc>OH <esc>0i
cmap <esc>OH <home>
nmap <esc>OH 0
nmap <esc>OF $
imap <esc>OF <esc>$a
cmap <esc>OF <end>

答え2

OSX "vi"はvimのようです。そのバージョンメッセージは次のとおりです(エル・キャピタン):

VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Oct 27 2015 16:22:14)
Compiled by [email protected]
Normal version without GUI.  Features included (+) or not (-):

あなたには小さな機会がありますいいえvimを使用しますが、誰も合理的な代替案を提示しません。

vim は挿入モードでカーソルキーシーケンスを受け入れます。

しかし、これの1つの欠点は、実際の端末動作が環境変数によって設定された端末記述と一致しないことですTERM。たとえば、 "linux" 端末の説明では、以下を使用しません。申請方法、そしてTERM実際に使用するように初期化された端末で作業している場合申請方法escapeOBすると、vimは検索時にシーケンスを期待しませんescape[B。その結果、B下矢印キーを押すとシーケンスが挿入されます。

追加資料:

答え3

矢印キーはtermcap(5)のエスケープシーケンスとして定義されます。これがデフォルトのVT100設定です。端末で ^v の後に何も来るコマンドを使用してシーケンスを表示できます。 VT100 用語の右矢印は ^[[C(^[) はエスケープ文字です。これは、vi(1)に挿入を終了し、1つの段落の上に移動し(この場合は行がないか1行)、行の終わりに変更するように指示します。ファンクションキーを処理するように設計されていないプログラムでファンクションキーを使用すると、同様の予期しない結果が発生する可能性があります。

このタイプの問題には、オペレーティングシステム、プログラム、または端末に限定されない2つの解決策があります。最初の解決策は、挿入モードでナビゲーションを処理する方法を知っているvi(1)を使用することです。 vim(1) はそのような vi(1) の一つです。 vt100エミュレータとうまく動作し、そのようにインストールしたい場合は、独自のGUIがあります。しかし、多くの人はvim(1)が遅くて重いと思うソフトウェアだと思います。他にも、おそらくもっと面倒なオプションには、vwrapperプラグインを持つEclipse(1)とViperプラグインを持つemacs(1)があります。

別の解決策は、実際のVT100で使用するように設計されたvi(1)を使用することです。挿入モードでは、矢印やその他の多文字ファンクションキーを使用しないでください。問題の主な配列:

G - ファイルの最後の行に移動$ - 現在の行の最後の文字に移動i - 現在の文字の前に挿入

この操作には正しくありません。代わりに--を使用して現在の文字を追加するので、行の最後の文字を通過するときに矢印キーは必要ありません。

または、より良い

G - 最後の行 A - 現在の行を追加

関連情報