web-dev-qa-db-ja.com

矢印キーは、カーソルを移動する代わりに大文字を入力します

Homebrewを使用して最新のvimをインストールし、Googleコードのホームページからmac-vimもインストールしました。 mac-vimではすべてが正常に動作します。しかし、Macのterminal.appでvimを実行して挿入モードに移行すると、矢印キーのA B CDが表示されます。これは非常に面倒です。

私はそれをグーグルで検索し、すべての解決策を試しましたが、何も機能していません!

vim -u NONE -U NONE -Nでvimを実行すると、矢印キーが挿入モードで正常に機能し始めます。

私のvimrcファイルは janus(carlhudaから) のクローンです

ターミナルでも同じ問題がありますか? terminal.appで修正する方法はありますか?

26
Allen Bargi

リモートマシンのホームディレクトリに空の ".vimrcファイルを作成するだけです。正常に動作し始めました。

touch ~/.vimrc
44
devsathish

Vimで互換モードを設定する必要はありません通常モードで次のコマンドを試してください

:set nocompatible

20
AMing

これは私のために働きます:

map ^[[A <up>
map ^[[B <down>
map ^[[C <right>
map ^[[D <left>

各矢印キーのシーケンスを入力するには、を押す必要があります ctrl-v、次に矢印キー。

たとえば、最初の行を入力するには:
m、 a、 p、 space、 ctrl-v、 、 space、 <、 u、 p、 >

これも機能する可能性があります。

set t_ku=^[[A
set t_kd=^[[B
set t_kr=^[[C
set t_kl=^[[D

詳細はこちらをご覧ください。

11
user212218

OSx El Captain(バージョン10.11.1)を搭載したMacBook Proを使用していますが、VimをHomebrewでアップデートした後も同じ問題が発生していました。

私のVimバージョンは7.4.1063です。

ターミナルアプリとiTermアプリ(ビルド2.1.4)で問題が発生していました。

この問題を解決するために、@ devsathishと@Kailashからの以前の回答のいくつかの指示に従いました。私が従った手順は次のとおりです。

1-touch ~/.vimrcを使用して.vimrcファイルを作成します
2-以下を追加します。

set nocompatible
set backspace=indent,eol,start

これで、矢印キーと削除/バックスペースキーが期待どおりに機能します。以前の回答のいくつかで提案されているように、$TERMenv変数を変更する必要はありませんでした。

これが同じ問題を抱えている他の人に役立つことを願っています。

9

spf13-vim でiTerm2を使用していますが、今日も同じ問題が発生しています。

プラグインvim-autocloseを削除したことが原因です。 このソリューションはそれを修正しました。

.vimrcに次の行を追加するだけです

if &term[:4] == "xterm" || &term[:5] == 'screen' || &term[:3] == 'rxvt'
  inoremap <silent> <C-[>OC <RIGHT>
endif
7
Nianliang

これは通常、間違った$ TERM環境変数が原因で発生します。システムでサポートされているものがわからないが、「linux」または「vt320」で試すことができます。

tERM = linuxをエクスポートします

6
Mrki

私のターミナルがShowLeopardのVim7.3でうまく機能していることを確認するために、私は次のことを行いました。

  1. Homebrew 経由で最新のVimをインストールしました。
  2. パスを設定して最新のVimを有効にします。例:export PATH=/usr/local/bin:$PATH
  3. export TERM=linuxファイルに.bashrcを追加しました。
  4. いくつかのオプションを使用して.vimrcファイルを作成しました(以前はここにリンクされていましたが、リンクが切れました)。

そうすれば、すべてが機能するはずです。ただし、ddまたはxのいずれかになるまで保護されているなど、一部のテキストが削除されていないように見えることを経験しました。誰かが似たようなことを経験したことがありますか?また、上記の私の小さなガイドへのコメントを共有してください。

4
MindTooth

上記のどれも私にはうまくいきませんでした。 vim -u NONE -U NONE -Nを使用してvimを空白の状態で実行すると、問題なく動作しました。プラグインをインストールしていなかったため、vimrcに問題があることがわかりました。それで、そこからセクションをコメントアウトし始めました、そして、ある瞬間、問題は消えました。

犯人はこの行でした:inoremap

非常によく書かれたコース( http://learnvimscriptthehardway.stevelosh.com/chapters/10.html )で推奨されていましたが、Mac OS X10.10では矢印キーが壊れていました。基本的に、escを上書きしないでください。他のSOの答えは次のように説明しています: vimでEscキーとカーソルキーを無効にする方法

3
Koshmaar

.vimrcファイルで次のコードを使用しましたが、矢印キーの問題が解決しました。

...
...
" Use Vim settings, rather than Vi settings (much better!).
" This must be first, because it changes other options as a side effect.
set nocompatible

" allow backspacing over everything in insert mode
set backspace=indent,eol,start
...
...

" CTRL-U in insert mode deletes a lot.  Use CTRL-G u to first break undo,
" so that you can undo CTRL-U after inserting a line break.
inoremap <C-U> <C-G>u<C-U>

" In many terminal emulators the mouse works just fine, thus enable it.
if has('mouse')
  set mouse=a
endif
...
...   

完全な.vimrcファイルを投稿しました ここ 。それが役に立てば幸い !

2
Vasu

これは私のために働いたものです(上記の@Phoenixからの最初の解決策に基づく)

imap ^[OA <ESC>kli
imap ^[OB <ESC>jli
imap ^[OC <ESC>lli
imap ^[OD <ESC>hli

各^ [
シーケンスを入力してctrl-vを押し、次にESCを押します

2
granin

別のプラグインでも同様の問題が発生しました。スクリプト自体にこれらの代替マッピングをハードコーディングすることで解決しました。各ペアの最初の行に問題があり、2番目の行が修正されました。

VIM::command "#{map} <Right> :call <SID>#{prefix}KeyPressed(9)<CR>"
VIM::command "#{map} ^[OC    :call <SID>#{prefix}KeyPressed(9)<CR>"

VIM::command "#{map} <Left>  :call <SID>#{prefix}KeyPressed(23)<CR>"
VIM::command "#{map} ^[OD    :call <SID>#{prefix}KeyPressed(23)<CR>"

VIM::command "#{map} <Down>  :call <SID>#{prefix}KeyPressed(14)<CR>"
VIM::command "#{map} ^[OB    :call <SID>#{prefix}KeyPressed(14)<CR>"

VIM::command "#{map} <Up>    :call <SID>#{prefix}KeyPressed(16)<CR>"
VIM::command "#{map} ^[OA    :call <SID>#{prefix}KeyPressed(16)<CR>"

^[は、<C-v><Esc>を押すことで取得されます。

多分あなたは次のようなことを試すことができます:

map <Right> ^[OC
1
romainl

OS X Mavericks(10.9)で、set noesckeysから~/.vimrcを削除することで、これを実際に解決しました。

1
whiteadam

私もこの問題に遭遇しました。複数の原因がありますが、そのうちの1つは、デフォルトでvimの動作ではなくviを使用するvimです。驚いたことに、これはvimrcファイルの場所によってトリガーされる可能性があります。

たとえば、ホームディレクトリから.vimrcを削除し、その内容をシステム全体のvimrcファイルに移動すると、vimはviのデフォルトの使用を開始します。 Macターミナルでは、これにより挿​​入モードの矢印からABCDが得られます。システム全体のvimrcに「setnocompatible」を追加します。これにより、vimはvimのデフォルトを使用するようになり、矢印が再び機能します。

0
pingswept