以下の行を.vimrcに追加するようにマップしようとしましたが、機能しません。.vimrcがVimによってロードされていることを確認しました。
map <Alt-D> <C-D>
このマッピングにエラーはありますか?
以下の行を.vimrcに追加するようにマップしようとしましたが、機能しません。.vimrcがVimによってロードされていることを確認しました。
map <Alt-D> <C-D>
このマッピングにエラーはありますか?
encoding
、マッピングの実行後に変更を加えた場合、Altキーから得られるものが最初に設定したものと一致しない可能性があることにも注意してください。
回答:
Macユーザーの方へ:ALT + hjklをマッピングするには、代わりに生成された実際の文字を使用します(INSERTモードで組み合わせを使用してどの文字を見つけるか)。たとえば、キーボードで次のようになります。
<ALT+j> ==> ª
<ALT+k> ==> º
等々。StackOverflowで解決策が見つかりました。
これを使用して、ALT + k \ jで行を上下に移動し、.vimrcでこれを使用しました。
nnoremap ª :m .+1<CR>==
nnoremap º :m .-2<CR>==
inoremap ª <Esc>:m .+1<CR>==gi
inoremap º <Esc>:m .-2<CR>==gi
vnoremap ª :m '>+1<CR>gv=gv
vnoremap º :m '<-2<CR>gv=gv
お役に立てば幸いです。Vimをお楽しみください:)
Dylan_Larkinによる補遺(2019):これをMacで機能させるには、[ターミナル]-> [設定]-> [キーボード]で[オプションをメタキーとして使用]をオフにする必要があります。
cat
です。単純に入力cat
したいキーの組み合わせをして猫のウィンドウ内。私のMacでは、alt +角かっこが「」と「」であることがわかりました。
nmap ˙ <C-w><Left> nmap ¬ <C-w><Right> nmap ˚ <C-w><Up> nmap ∆ <C-w><Down>
sed -n l
マッピングを構成する前に、<Ak>と<Aj>の出力を確認するために使用します。私の場合、<Aj>∆
˚
Use Option as Meta Key
またはiTermプロファイルで⌥ key to Esc+
、従来の方法(Linux / Unixなど)として動作します。したがって、Vimにマップを設定する必要はありません。またはに<^[j>
マップするだけで機能します。<A+j>
<M+j>
:help key-notation
さまざまなキーをマップするために使用する必要のある形式について説明します。altの場合は、<A-
またはのいずれかを使用できます<M-
。だからあなたのマッピングは
map <M-d> <C-d>
マッピングのために右側を再評価することを明示的に許可したい場合を除いて、(たとえば)のnore
バリアントを使用することもお勧めします。:map
noremap
<A-d>
。<A-d>
として送信されるように、端末の設定を変更する必要があります<Esc>d
。
もう「可能」かどうかはわかりません。以下のアップデートをお読みください。
はい、あなたも、端末vimの中ですることができますが、本当ありませんキャッチは、すべての答えが。基本的に2つのステップに従う必要があります。
<M-d>
表記が存在することを確認し、端末が入力したもの(^[
エスケープ文字)を正確にマップします。
$ cat
^[d
$
" in your .vimrc
execute "set <M-d>=\ed"
" you have to use double quotes!
新しく「作成した」組み合わせに何かをマップします。
noremap <M-d> :echo "m-d works!"<cr>
それがどのように機能するかを理解すると、この「トリック」を他の「奇妙な」組み合わせに拡張できます。たとえば、私はシロアリを使用していますが、vimは<S-F1>
猫を使用して認識しません^[[1;2P
。次に、vimrcで次のことを行いますexecute "set <S-F1>=\e[1;2P"
。それから、それを何にでもマップできます。
注:理由はわかりませんが、の\<Esc>
代わりに作品を使用している人もい\e
ます。
更新(2016年2月)
端末が実行するterminfoによっては、次のことができるかもしれません...ほとんどの端末では、たとえば、「alt + h」は、^[h
「escape + h」にマップされます。そのため、キーが上書きされる可能性があります。私は(もう一度)試したところ、うまくいくようですが、非常にバグが多く、エラーが発生しやすい実装だと思います。
それにもかかわらず、勇敢な人のために、ここに実験的なプラグインがあります:
Mac OSxのVimでAltキーをマップします:
端末がvimに送信しているキーコードを表示することから始めます。
$ sed -n l
^[[1;9D
上記の例では、コマンドを実行してを押しましたAlt + Left。
これ^[[1;9D
はvimに送信されるエスケープされたシーケンスであるため、マッピングに使用できます。
map <Esc>[1;9D
Option
キー(⌥
)として設定Esc+
iTerm2で、私はマップできalt+q
Vimを終了するには: nnoremap <silent> <Esc>q :qa!<cr>
私のターミナルは^[x
コマンドを生成します(例えば、alt-xの場合)。Vim内で機能するようになったのは、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
.vimrcに追加して、すべてのAltキーマッピングを修正します。