CTRL-Uの組み合わせについて


19

、この答えは私が直面したCTRL-U後、関数呼び出しで使用される:と、実際の関数名の前に。

:nnoremap <buffer> <cr> :<C-U>call append('.', repeat([''],v:count1))<cr>

ヘルプの内容は次のとおりです。

CTRL-U      Scroll window Upwards in the buffer.  The number of
            lines comes from the scroll option (default: half a
            screen).  If [count] given, first set the 'scroll'
            option to [count].

自分で試してみたところ、思ったとおりに機能しました。しかし、私はscrollオプションに関する部分をよく理解していませんでした。彼らはどういう意味'scroll' optionですか?

また、挿入モードでは奇妙なことをします。私の知る限り、カーソルから行の先頭までをすべて削除し、結果の行と上の行を結合します。

回答:


27

デフォルトでは、ヘルプは通常モードに適用されるマッピングを返します。通常モードで<C-u> 、上にスクロールしますが、それは私たちが興味を持っているものではありません。<C-u>コマンドラインモードまたはcmode(コロンで始まるコマンドを入力するモード)検索:h c_CTRL-u

                            *c_CTRL-U*
CTRL-U      Remove all characters between the cursor position and
        the beginning of the line.  Previous versions of vim
        deleted all characters on the line.  If that is the
        preferred behavior, add the following to your .vimrc: >
            :cnoremap <C-U> <C-E><C-U>

これが通常モードのマッピングに役立つ理由を理解するには、それを削除し、のようなものを入力してみて、5:何が表示されるかを確認してください。次のように表示されるはずです。

:.,.+4

これは範囲です

次に、入力5:<C-u>してみて、何が表示されるかを確認してください。あなたはただ見るべきです

:

同様に視覚モードでは、を押す:と範囲が挿入されます

:'<,'>

そのため、次のようなマッピングが頻繁に表示されます。

nnoremap foo :<C-u>bar

または

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