0

vimで矢印キーの使用をやめようとしています。ただし<nop>、他の人のようにに設定するのではなく、エラーメッセージを表示してほしい。これは通常モードでのことを行います:

noremap <up>    :echoerr 'USE K TO GO UP'<CR>
noremap <down>  :echoerr 'USE J TO GO DOWN'<CR>
noremap <left>  :echoerr 'USE H TO GO LEFT'<CR>
noremap <right> :echoerr 'USE L TO GO RIGHT'<CR>

挿入モードで同じことをしようとしましたが、機能しませんでした。

inoremap <up>    :echoerr 'USE K TO GO UP'<CR>
inoremap <down>  :echoerr 'USE J TO GO DOWN'<CR>
inoremap <left>  :echoerr 'USE H TO GO LEFT'<CR>
inoremap <right> :echoerr 'USE L TO GO RIGHT'<CR>

これは、代わりに:echoerr 'USE K TO GO UP'、挿入モードで押し上げたときにカーソルが置かれている場所を出力します。

inoremapディレクティブを修正して、これが期待どおりに機能するようにするにはどうすればよいですか?(また、それが機能しない理由の説明が役立ちます)。

編集:私を助けてくれたすべての人々に感謝します。私はこれを使用することになります:

noremap <up>    :echom 'USE K TO GO UP'<CR>
noremap <down>  :echom 'USE J TO GO DOWN'<CR>
noremap <left>  :echom 'USE H TO GO LEFT'<CR>
noremap <right> :echom 'USE L TO GO RIGHT'<CR>
inoremap <up>    <ESC>:echom 'USE K TO GO UP'<CR>
inoremap <down>  <ESC>:echom 'USE J TO GO DOWN'<CR>
inoremap <right> <ESC>:echom 'USE L TO GO RIGHT'<CR>
inoremap <left>  <ESC>:echom 'USE H TO GO LEFT'<CR>         

vim-autocloseプラグインは、編集モードの上下キーで問題を引き起こしていました。プラグインをアンインストールしました。

4

3 に答える 3

6
:inoremap <up> <Esc>:echoerr 'MSG HERE'<CR>
于 2012-06-11T21:08:44.613 に答える
4

むしろ、<Esc>:echoe 'message'<CR>私はここで提案し<C-o>:echoe 'message'<CR>ます:それは挿入モードを離れません。<C-o>:throw 'message'<CR>より煩わしいものにするために:Press ENTER強調表示されたメッセージだけでなく、プロンプトが表示されます。

inoremap <Up> <C-o>:throw 'USE “&lt;Esc>k” TO GO UP'<CR>

echohl ErrorMsg | echomsg 'Message' | echohl NONEの代わりに同等のものを使用することもお勧めし:echoerrます:ここでは関係あり:echoeませんが、コンテキストに大きく依存するため、忘れてください::echom実行を中断することはなく:throw、常にこれを実行するのとは異なり、ブロック:echoe内にある場合は実行を中断します。tryそれ以外の場合はそうしません。それは次のような構造になります

SomeCommand
if error_cond
    echoe 'abc'
endif
SomeCommand2

SomeCommand2不安定:trueの場合、実行されるか実行されないかはわかりませんerror_cond。後続のコマンドがなく、tryブロック内で実行される可能性が低いため、ここでは関係ありませんが:echoe、エラーをエコーするのに適していると思わないでください。

于 2012-06-12T06:30:44.210 に答える
0

hjkl矢印の代わりに使用しようとするよりも差し迫った問題があります。

:help mappingたとえば、読む必要があります。

を押したときにカーソルをinoremap <up> :echoerr 'USE K TO GO UP'<CR>入力するようにVimに指示します。これは挿入モードのマッピングであるため、マップされたシーケンスに含まれていないか、どこかに含まれていない限り、すべてがそのまま挿入されます。:echoerr 'USE K TO GO UP'<CR><Up><Esc><C-o>

一連のコマンドを実行するには、最初に挿入モードを終了する必要があります。したがって、<Esc>エリックの答えに。

于 2012-06-11T21:55:10.593 に答える