답변:
매핑하는 것은 <C-F>
( Ctrl+letter)는 항상 매핑과 동일합니다 <C-f>
( Ctrl+Shift+letter). 다른지도 없이는지도를 작성할 수 없습니다.
문제의 뿌리는 빔이 전송 터미널에서 문자를 읽어들입니다 ^F
(ASCII 코드 0x06
모두) Ctrl+f와 Ctrl+Shift+f; Vim은 Shift 키를 눌렀는지 알 수 없습니다. 이 게시물은 터미널 및 제어 문자에 대한 추가 정보를 제공합니다 .
이론적으로 이것은 대부분의 (또는 모두?) 그래픽 환경이 훨씬 더 중요한 주요 이벤트를 전송하기 때문에 gVim으로 수행 할 수 있습니다. 그러나 불행히도 gVim은 터미널 에뮬레이터와 매우 유사하게 작동 <C-f>
하며 <C-F>
둘 중 하나를 구별 할 수 없습니다 (Vim-gVim 호환성을위한 디자인 결정일 것입니다).
가능한 해결책:
를 누르면 터미널 에뮬레이터가 Vim에 다른 코드를 보내도록 구성 할 수 있습니다 Ctrl+Shift+f. 예를 들어, xterm의 경우 다음을 수행 할 수 있습니다.
XTerm*VT100.translations: #override \n\
Ctrl ~Meta Shift <Key>f: string(0x1b) string("[24;6~")\n\
Ctrl ~Meta Shift <Key>r: string(0x1b) string("[23;6~")
이에 대한 코드를 보낼 것입니다 <C-S-F12>
그리고 <C-S-F11>
당신이 선택할 수 있습니다 빔에 :
nnoremap <C-S-F12> :echo 'ctrl+F pressed!'<CR>
nnoremap <C-S-F11> :echo 'ctrl+R pressed!'<CR>
터미널이 ( ) 또는 ( )에 대해 다른 코드를 보내므로을 매핑 할 수 있습니다 .Alt+Shift+letter<Esc>f
0x1b0x66
<Esc>F
0x1b0x46
NeoVim은 내가 찾을 수있는 한 Ctrl+Shift+Enterand과 같은 몇 가지 경우를 제외 하고는이 문제를 해결하지 않았지만 나중에이 Ctrl+Shift+Tab기능이 추가 될 수 있습니다.