タグ付けされた質問 「key-bindings」

キーを押したときにアクションを実行する。これらは、キーマッピングまたはマッピングとも呼ばれます。デフォルトのキー割り当て、およびキー割り当ての作成または再定義についての質問。

1
ファイル拡張子に基づいて現在のファイルでシェルコマンドを実行する
現在、RubyとJavaScriptの両方で多くの作業を行っています。Rubyファイル:! ruby %と同様にJavaScriptを:! node %で実行でき、それらのいずれかをにバインドできることを知っています,b。編集中のファイルの拡張子をチェックして適切なコマンドを実行する単一のコマンドをバインドできるように設定するにはどうすればよいですか?

3
コマンドラインからvimを起動して、\を含む特定のコマンドを実行するにはどうすればよいですか?
私の~/.vimrc場合、ほぼ次のように定義されたコマンドがあります。 nnoremap <expr> <Leader>n ':new ~/Notes/' . strftime('%F') . '-' ファイル名に現在の日付を含むノートファイルを作成するために設計されています。キーバインドは、コマンドラインにカーソルを置いたままにして、メモのトピックを入力してを押すように設計されていますReturn。 これは、vim内から機能します。ただし、vimを開いてこのコマンドを起動するために使用できる端末コマンドも指定しようとしています。私はもう試した: vim -c '\n' (私のリーダーはデフォルトのに設定されていますが\、変更しない方がいいでしょう) ただし、これは機能しません。代わりに、コマンドラインの処理中にエラーが検出されました。E10:\の後に/ 、? または&。これがvimのバグなのか、何か間違っているのかわかりません。私も試しました: vim -c '<Leader>n' しかし、これは与える:E488::後続の文字:コマンドラインの処理中にエラーが検出されたNキーを押して続行するために、コマンドを入力するか、または入力します。 私が望むものを達成する方法はありますか?

1
<ctrl-h>は何をしますか?
(vim全体に慣れるために)vimでコントロールキーを調べていただけで、&lt;ctrl-h&gt;を押したときに正確に何が起こるかわかりません。 私は(モッド)vimの中では、&lt;Ctrl-H&gt;を使用したときので、それだけで左に1を行く、しかし、私は行の最初の列にいる時、それは代わりに前の行に移動します。これで、この機能はスクリプトで非常に役立ちます。 ただし、(でvim -u NONE)変更されていないvimを使用すると、基本的にはです。つまり、行の変更は行われません。 :help ctrl-h 知っておくと便利なnetrwについて説明しているため、まったく役に立ちませんが、通常モードのショートカットに興味があります。 だから私の質問は: modded vimで&lt;ctrl-h&gt;キーを変更した設定は何ですか? &lt;ctrl-h&gt;の​​反対のことはありますか。つまり、右に移動し、最後の列にある場合は、次の行にスキップします(ある場合)

1
キーの組み合わせ「y <CG>」のマッピングを解除できません
でマッピングをチェックするとき :verb nmap y 私は得る: n y&lt;C-G&gt; *@:call setreg(v:register, &lt;SNR&gt;104_recall())&lt;CR&gt; Last set from ~/.vim/bundle/vim-fugitive-2.2/plugin/fugitive.vim 私はそれをアンマップしよう:unmap y&lt;C-G&gt;とし:unmap y&lt;C-g&gt;たが、それは効果がありませんし、私はエラーを取得しますE31: No such mapping。 このマッピングを削除するにはどうすればよいですか?:unmap y&lt;C-G&gt;ここで動作しないのはなぜですか?

1
vimrcマッピングで長いマッピング行をいくつかの短い行に分割する方法
私は例えば扱うために非常に長いvimrcマッピングを持っています nnoremap &lt;space&gt;e :exe "!tmux send-keys -t.- 'cd $TEST' Enter"&lt;Cr&gt; :exe "!tmux send-keys -t.- 'source $TEST_NT/bin/activate' Enter"&lt;Cr&gt; この長い行をいくつかの短い行に分割して、1つの画面にすべてを表示する方法 次のようなスタイル: nnoremap &lt;space&gt;e :exe "!tmux send-keys -t.- 'cd $TEST' Enter"&lt;Cr&gt; :exe "!tmux send-keys -t.- 'source $TEST_NT/bin/activate' Enter"&lt;Cr&gt;

1
マッピングでxmapまたはvmapを使用する必要がありますか?
xmapビジュアルモードのみのマッピングを作成するのに対しvmap、ビジュアルモードと選択モードの両方にマッピングを作成します。 私が理解している限り、選択モードの目的は、テキストが選択されたときに他のすべての非モーダルエディターと同じようにVimを動作させることです。 選択モードでは、入力したテキストを挿入モードであるかのように文字どおりに表示する必要があるため、選択モードでは何もマップする必要はほとんどないように思えます。 だから私は私のすべてのマッピングxmapでvmapはなく使用することに傾いています。これは良い/悪い考えですか?

1
特定のリマップにタイムアウトを設定しない方法を教えてください。
この問題は、再マッピングされた巨大な構成を使用する問題から発生するため、少なくとも1つのキーを押すコマンドでは、bépoレイアウトは通常モードのqwertyと実質的に同じです。 ビジュアル選択モードを使用してテキストを選択し、iとして構成されているを押すとnoremap i d、テキストはすぐに削除されることが予想されます。ただし、すぐにトリガーされるのではなく、2番目のキーの可能性を待機しています。 timeoutlenゼロに設定すると、このコンテキストで期待される結果が得られますが、このようなコマンドは、動作しない,,ように構成されてnoremap ,, ggいます。 それで、1つのコマンドに固有のタイムアウトを設定したり、アクティブな選択を使用したビジュアル選択モードのような特定のコンテキストでタイムアウトを設定したりできますか? おそらくtimeoutlenゼロになっているとnoremap ,, gg、役に立たなくなるかもしれません。そのため、このマッピングを削除するだけで、期待した結果が得られる可能性があります。

1
zGとzWを永続化する
編集:これを小さなプラグインに変えました。これは私の最初の試みであり、私が何をしているかわからないので、どんな助けでも大歓迎です。:) ここにあります:https://github.com/danielbmarques/vim-dialect ---------- 私が使用し続けたいzgとzwグローバルのvimに単語を追加するspellfileのが、私が使用したいzGとzWに単語を追加するためにspellfile 、私が編集していたファイルに固有。言い換えれば、私は各ファイルに対して永続的でzGありたいと思っzWています。 spellfile変更を設定するzgとzwコマンドとコマンドが変更されますが、必要なのはコマンドzGとzWコマンドのみを変更することです。 だから私はこれをやった: :au BufNewFile,BufRead * let &amp;l:spellfile = expand('%:p:h') . '/.' . \ substitute(expand('%:t'), '\(.*\)\..*', '\1', '') . '.utf-8.add' nnoremap zG :call LocalSpell("zG")&lt;cr&gt; nnoremap zW :call LocalSpell("zW")&lt;cr&gt; nnoremap zuG :call LocalSpell("zuG")&lt;cr&gt; nnoremap zuW :call LocalSpell("zuW")&lt;cr&gt; nnoremap zg :call GlobalSpell("zg")&lt;cr&gt; nnoremap zw :call GlobalSpell("zw")&lt;cr&gt; nnoremap zug …

2
カウントで始まるマッピングをn回繰り返します
次のマッピングを作成しました。 :map &lt;F8&gt; 3w を押す2&lt;F8&gt;と6単語移動すると思いましたが(2*3w)23単語移動しました。(これはvimエディターのヘルプセクションで言及されています) 23の代わりに6移動するようにマップする方法は?また、この機能が意図的にマッピング用にこのように機能するように作成されているかどうかをお知らせください。 (他のすべての場合において、それは次のように、23の2×3の代わりに広告のような簡単である2d3wと同じで6dw、同様d6w)

1
左シフトキーと右シフトキーの区別
大文字を結ぶときにキーボードと同じ側のシフトキーを使うのが悪い癖があります。Dたとえばを入力するには、左シフトを左小指とd左人差し指で押します。キーボードの左側にあるキーと組み合わせて右シフトを使用することをお勧めします。逆も同様です。 この癖を取り除くために、どちらかのシフトキーとキーボードの同じ側にあるキーの組み合わせを無効にしたいと思います。shift-dを&lt;S-d&gt;でマッピングできますが、これは両方のシフトキーに適用されます。右シフトキーのみに適用するものはありますか?


1
編集中はドキュメント内を移動できません
ViとVimの両方を搭載したChromeOSコンピュータで作業しています。エディタを開いて既存のドキュメントを表示したら、Aと入力して編集を開始します。矢印キーで移動しようとすると、次のことが起こります。 私はVimとViの両方を試しましたが、どちらにもこの問題があります。編集中にドキュメント内を移動するにはどうすればよいですか?

2
挿入モードに入る前にカーソル位置に戻る方法は?
カーソルの周りに空白を簡単に追加できるように、通常モードのマッピングを設定しようとしています。 &lt;C-h&gt;カーソルの右側にスペースを1つ追加します。 &lt;C-j&gt;以下に改行を追加します。 &lt;C-k&gt;上記に改行を追加します。 &lt;C-l&gt;カーソルの右側にスペースを1つ追加します。そして &lt;C-Enter&gt;、現在のカーソル位置に改行を追加します。 また、コマンド中にカーソル位置が移動しないようにしたい。左、右、および改行の場合、これは簡単です。 nnoremap &lt;C-h&gt; i &lt;Esc&gt;l nnoremap &lt;C-l&gt; a &lt;Esc&gt;h nnoremap &lt;C-^M&gt; i&lt;CR&gt;&lt;Esc&gt;&lt;Backspace&gt; しかし、上と下では、対応するコマンド nnoremap &lt;C-j&gt; o &lt;Esc&gt;k nnoremap &lt;C-k&gt; O &lt;Esc&gt;j 正しい行に戻りますが、以前と同じ列には戻りません。 挿入モードに入る直前のカーソル位置に戻る方法はありますか?私の最高のGoogle-fuは、''&ダブルバックティック(そこにマークダウンをフォーマットする方法がわからない)と:jumps/ &lt;C-O&gt;&への参照のみをもたらしましたが&lt;C-I&gt;、どちらも私が望んでいるようには機能していないようです。 これはVimscriptなしで解決できますか?それも解決することが可能と Vimscript?


1
矢印キーを使用した後、以前に挿入したテキストがリセットされるのはなぜですか?
ヘルプから:help i_ctrl-a: CTRL-A Insert previously inserted text. {not in Vi} 空のバッファがあり、通常モードになっているとします。 入力iして挿入モードにします。 と入力して()から、カーソル&lt;C-h&gt;(&lt;left&gt;挿入モードでマップしたもの)を押してカーソルを1文字左に移動しfoo、と入力して、エスケープを押して通常モードに戻ります。 バッファには次のものが含まれています。(foo) 誤って、以前に挿入されたテキストはそうで(foo)あると考えましたが、そうではありません。 以前に挿入されたテキストは、挿入モードでもう一度foo入力:registers .またはヒットすることで確認できます&lt;C-a&gt;。 矢印キーを押すと、以前に挿入したテキストがリセットされるのはなぜですか? 矢印キーを押しても最後に挿入モードになったときに挿入されたすべてのテキストをドットレジスタに保存する方法はありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.