web-dev-qa-db-ja.com

.vimrcでALTキーをマップする方法は?

挿入モードに入らずに空白行を追加できるようにするために、ALT-oおよびALT-Oo<ESC>およびo<ESC>にマッピングしようとしています

私は.vimrcで次のことを試しました

map <M-o> o<ESC>
map <M-O> O<ESC>

そして

map <ALT-o> o<ESC>
map <ALT-O> O<ESC>

および(以下に推奨)

map <A-o> o<ESC>
map <A-O> O<ESC>

しかし、どれも機能しません。 ALT-oが定義されていないかのように、通常の動作を提供します。

.vimrcファイルを変更するのはこれが初めてであり、ドキュメントにさまざまなキーの指定方法が記載されている場所がわかりません。しかし、以下を含めることで、.vimrcファイルが読み取られていることを確認できます。

map <Enter> ihello<ESC>

これは、<Enter>helloの挿入に正常にマップし、コマンドモードに戻ります。

私はcygwinでvimを使用しています。

9
Eric Wilson

キーを押したときに端末が送信しているものを確認するには、挿入モードに切り替え、Ctrl+Vを押してからキーを押します。ほとんどの端末のほとんどのキーは、最初の文字だけが制御文字であるエスケープシーケンスを送信します。 Ctrl+Vは、次の文字を文字どおりに挿入するため、エスケープシーケンス全体をそのまま挿入できます。

端末によって、キーの組み合わせによって異なるエスケープシーケンスが送信されます。多くの端末は、^OCtrl+Oの両方に同じ文字(Ctrl+Shift+O)を送信します。その場合、Vimはそれらを区別できません。

あなたはCygwinを使用していると述べました。 Vimを実行している端末が最も適切な情報です。ネイティブのWindowsコンソールを使用している場合は、より良い端末を入手してください。 X以外のWindowsの端末でCygwinテキストモードアプリケーションを実行する場合は MinTTY をお勧めしますが、CygwinのWindowsネイティブRXVTおよび PuTTYcyg も適しています。 (また Console2 Windowsコンソールアプリケーションを実行しますが、ここではトピックから外れています)。

Control+Vの後にALT-xが続いて^[xと表示される場合(ターミナルに入力)、この小さなスクリプトで vim.wikia.com から修正できます。

for i in range(97,122)
  let c = nr2char(i)
  exec "map \e".c." <M-".c.">"
  exec "map! \e".c." <M-".c.">"
endfor

すべてのaltキーマッピングの.vimrcに追加します。

2
laktak

これは、Ubuntu 16.04 xfceターミナル(およびalacritty Rustターミナル)で動作します。

UltisnipスニペットトリガーをMeta-/に設定します(emacsスニペットと同じように)

let g:UltiSnipsExpandTrigger="^[/"

ここで、vimに^[/と入力します

挿入モードの場合Ctrl-V Alt-/

Metaは私のPCキーボードのAltキーです)

1
user178047