12

キーとキーコンボを押すことができ、vimが押していると思われるキーや文字を出力するxevのようなモードを取得する方法はありますか?

特定の関連する問題:MacVimとGVimで機能するキーバインディングがありますが、画面内のSSH経由でLinuxで使用するterminal-vimでは機能しません。その理由は、私が押しているキーがMacVimがそれらを解釈する方法とは異なるとvimが考えているためであるという結論に達しました。

私の.vimrcでは:

map <M-,> :split<CR> " Horizontal split
map <M-.> :vsplit<CR> " Vertical split
map <M-/> :close<CR>

私のvimでは:map(MacVimは同じことを示しています):

¯             :close<CR><Space>
®             :vsplit<CR> " Vertical split
¬             :split<CR> " Horizontal split

MacVimとGVimで動作しますが、ターミナルベースのvimでは動作しません。これを複数の端末(OSX端末とTerm2、KDE端末、Gnome端末など)で試しました。私はまた、他の修飾子とキーコンボでこれを目撃しました。<M-,>vimがキーストロークをキャプチャしているように見えますが、たとえば、それらを別のものとして解釈しています。

それに応じてマッピングを作成できるように、vimが自分が押していると考えているものを見つける方法が欲しいです。

4

1 に答える 1

12
  1. i挿入モードに切り替えます。
  2. <C-v>
  3. <key>またはコンボ。
  4. Vimは、押したキー/コンボの「生の」値を出力します。

ここ(Ubuntu 11.04のGnomeターミナル)では、「」、「Escape」i<C-v>の順に入力し、「Escape」を意味するようなものを出力します<Alt>。キー(私はあなたが使用したいものであると私は信じています)はとしてもとしても認識されません。,^[,Alt<Meta><Meta><Alt>

即座の結論は、CLI Vimは気に入らないということです<M->(そして、多くのターミナルエミュレーターはとにかくそれをうまく処理しません)。一部のターミナルエミュレータでは、<Alt>キーをにマップできますMetaが、完全なクロスプラットフォームソリューションではありません(<Alt>Mac OS Xでは特殊文字を入力するためによく使用します)。

このマシンでは、

nnoremap ^[, :split<CR> " ^[ is <C-v><Esc>

しかし、私があなたが望むと思うことを正確に行います。

GUIとCLIの両方でショートカットを引き続き使用したい場合は<M->、2つの別々のショートカットセットを維持する必要があります。に数十のカスタムマッピングがある場合.vimrc、管理が少し難しくなります。

そのため、次のようなあらゆる場所で機能するマッピングを使用する必要があると思います。

:nnoremap <leader>, :split<CR>
:nnoremap <leader>. :vsplit<CR>
:nnoremap <leader>/ :close<CR>

デフォルトの<leader>キーはです\が、私はそれをに設定しました,

を使用する必要はなく<leader>key、単にマッピングするだけ,,,.,/機能することに注意してください。

を参照してください:help <leader>

于 2012-04-29T19:30:17.390 に答える