いつもお世話になっております。
vimでショートカットキーに記号を含んだ物があります。例えば「di"」や「"0p」など記号を含んだショートカットキーがありますが、利用する際にshiftキーをホールドしながら入力するのは面倒に感じます。
もしshiftキーのホールドがなければもっと気持ち良く入力出来るのに思いますが、vim側、またはPC側で設定する方法があれば教えて頂けないでしょうか?
私の環境ではテンキーがあるので数字入力をテンキーのみにするなどを出来ればと考えているので、調べても出て来ません。もしかしたら、それを設定することによって何か不具合が発生するのではないかと思うのですが、どうなのでしょうか。
環境
macOS sierra 10.12.2
キーボード mac純正 テンキーつき
IME Google日本語入力
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
現象から、CUIのVim(Terminal.appやiTerm2などの端末上で使うVim)を使っていると想定して書きます。
本題のメインキーの数字キーの動作を変える方法については thinca さんの設定例で行えるはずです。
以下は、テンキーの数字キーまで動作が変わってしまう原因についてです。
何も設定を行っていない標準の状態では、CUIのVimではテンキーは使えないはずです。テンキーを使えるようにする為に、何か設定を行いませんでしたか?
例えばTerminal.app上のVimでテンキーを使えるようにする為の設定として、
設定 - プロファイル - 詳細
にあるVT100アプリケーションのキーパッドモードを許可
のチェックを外す
というのが Google 検索で見つかりますが、この設定を行っていませんか?
上記設定は「テンキーの数字/記号キーとメインキーの数字/記号キーを区別するモードに変更するのを許可する」かを設定する為の物です。
この設定のチェックを外すとメインキーの数字キーとテンキーの数字キーを区別するモードに端末が変わらなくなる為、テンキーの数字キーがメインキーの数字キーと同じ動作になります。
その為、メインキーの数字キーの動作を変更すると、テンキーの数字キーも同じ動作に変わってしまいます。
メインキーの数字キーとテンキーの数字キーで別の動作をさせる為には、上記設定のチェックを入れたままにする必要があります。
上記設定を有効にしたままテンキーを使えるようにするには、以下の方法があります。
- Vim 8.1.0142 以降を使う
- Vim が正しくテンキーを認識できるようにする設定を行う
お勧めなのは Vim 8.1.0142 以降を使う方です。
Vim 8.1.0142 でテンキーを正しく認識する為のパッチが取り込まれた為、これ以降のバージョンのVimを使っている場合はなにも設定しなくてもテンキーが使えるはずです。
Vimのバージョンアップが行えない場合は、テンキーを正しく認識できるようにする設定を行う必要が有ります。この場合、以下の設定を .vimrc に追加して下さい。
Vim
1if ((&term =~ "xterm" || &term =~ "vt100") && !has("patch-8.1.0142")) || &term =~ "screen" 2 if &term =~ "screen" || &term =~ "vt100" 3 " keypad + <kPlus> 4 exec "set t_K6=\eOk" 5 " keypad - <kMinus> 6 exec "set t_K7=\eOm" 7 " keypad / <kDivide> 8 exec "set t_K8=\eOo" 9 " keypad * <kMultiply> 10 exec "set t_K9=\eOj" 11 " keypad Enter <kEnter> 12 exec "set t_KA=\eOM" 13 " keypad . <kPoint> 14 exec "set t_KB=\eOn" 15 endif 16 " keypad 0 <k0> 17 exec "set t_KC=\eOp" 18 " keypad 1 <k1> 19 exec "set t_KD=\eOq" 20 " keypad 2 <k2> 21 exec "set t_KE=\eOr" 22 " keypad 3 <k3> 23 exec "set t_KF=\eOs" 24 " keypad 4 <k4> 25 exec "set t_KG=\eOt" 26 " keypad 5 <k5> 27 exec "set t_KH=\eOu" 28 " keypad 6 <k6> 29 exec "set t_KI=\eOv" 30 " keypad 7 <k7> 31 exec "set t_KJ=\eOw" 32 " keypad 8 <k8> 33 exec "set t_KK=\eOx" 34 " keypad 9 <k9> 35 exec "set t_KL=\eOy" 36endif
投稿2018/09/26 02:57
総合スコア947
0
私はテンキーを使っていないので動作は確認していないですが、以下のようにするとどうでしょうか?
vim
1noremap 1 ! 2noremap 2 " 3noremap 3 # 4 5" 以下同様 6 7" 上記だけだとテンキーの数字も記号になってしまうかもしれない。もしそうなら以下を試してみる 8 9noremap <k1> 1 10noremap <k2> 2 11noremap <k3> 3 12 13" 以下同様
投稿2017/02/04 15:44
総合スコア1864
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/05 09:25
2017/02/07 14:49
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。