回答:
これを行うには、式マッピングを使用するのが最も簡単な方法です。
nnoremap <expr> <CR> &buftype ==# 'quickfix' ? "\<CR>" : 'za'
これは、quickfixウィンドウにいるかどうかを確認するマッピングを定義し、a <CR>
またはza
それに応じて実行します。
見る:
:h :map-expr
:h 'buftype'
:h expr1
:h string
また、quickfixウィンドウから呼び出されたときに通常のEnterを実行し、それ以外の場合は「za」を実行する関数を定義することもできます。これはあなたがやろうとしていることには効率的ではありませんが、通常のモードコマンドよりも複雑なものにマップする場合に役立つ情報であるため、ここには残しません。
function! FoldingEnter()
if &buftype ==# 'quickfix'
execute "normal! \<CR>"
else
normal! za
endif
endfunction
nnoremap <CR> :call FoldingEnter()<CR>
<C-V><C-M>
とキャリッジリターンを文字どおり入力できますが^M
、Vimの外部に表示され、Vimの外に簡単にコピーアンドペーストできないか、Vimの文字列定数表記を使用できます。(を参照してください:help expr-string
。)バックスラッシュを含めなかった場合"<CR>"
、文字列には一連の4文字(小なり、大文字C、大文字R、大なり)が含まれます。
:help expr-string
は重要。
\<
があるの"<CR>" here
か尋ねてもいいですか?