我想映射<C-j>
以切换到当前
map <C-j> <C-w>j
然而,它进入插入模式而不是移动下面的窗口。为什么呢?
我安装了latex-suite
。所以我试着查询<C-j>
映射到
:map <C-j>
我得到以下输出:
v <NL> <Plug>IMAP_JumpForward
n <NL> <Plug>IMAP_JumpForward
o <NL> <C-W>j
这意味着我应该更改<Plug>IMAP_JumpForward
的映射。我仔细阅读了一下,发现它与<++>
占位符相关,您可以在插入模式下使用<C-j>
跳转到这些占位符。因此,根据我的阅读,我了解到我可以使用.vimrc
中的以下行更改映射:
imap <C-space> <Plug>IMAP_JumpForward
但不,它不像<C-j>
那样有用。我会试着说明一下。我输入以下内容(_
表示光标):
\documentclass{}_
然后我得到
\documentclass{_}<++>
然后我尝试输入一些文字
\documentclass{article_}<++>
现在我按<C-space>
。这是发生的事情:它退出插入模式,我将处于以下情况:
\documentclass{articl_e}<++>
map <C-j> <C-w>j
后,<C-j>
进入插入模式。imap <C-space> <Plug>IMAP_JumpForward
之后,<C-space>
不会跳转到下一个<++>
占位符。它退出插入模式,光标备份一个字符。什么事?我错过了什么?
答案 0 :(得分:4)
我建议两件事:
首先,定位映射:
nnoremap <C-j> <C-w>j
其次,通过
找出映射干扰的内容(以及它们来自何处)verbose nmap <C-j>
verbose nmap <C-w>
verbose nmap j
另请参阅:map
,:imap
,:vmap
,:noremap
等。
答案 1 :(得分:2)
我在这里找到了解决方案:How to debug vim mapping overlaps?
你应该使用
nnoremap <SID>I_won’t_ever_type_this <Plug>IMAP_JumpForward
因此imaps.vim或vim-latex不会重新映射。您仍然可以通过映射到更好的方式来获得功能。
答案 2 :(得分:2)
我遇到了同样的问题;对我来说,它表现得非常奇怪,因为来自vim-latex的<C-j>
被映射为正常的视觉和插入模式。我有点觉得看到这个答案并检查'\ bundle \ vim-latex \ plugin'目录中的'imaps.vim'文件。我把以下代码放在我的vimrc中,它似乎有效。
imap <C-space> <Plug>IMAP_JumpForward
nmap <C-space> <Plug>IMAP_JumpForward
vmap <C-space> <Plug>IMAP_JumpForward