将<c-j>映射到Vim中的某些内容</c-j>

时间:2012-02-01 08:44:06

标签: vim

我已将 Ctrl - j 映射到下面的缓冲区。但它很难映射 到了别的东西,所以我不得不写下面的第一行,使其可以映射到 所有

下面的脚本运行完美,除非我写.sh文件。我有 安装了bash-support插件。

let g:C_Ctrl_j = 'off'
map <C-j> <C-w>j
编辑:我刚刚发现问题出在bash支持上。巴什支持 将 Ctrl - j 映射到跳转插入(或类似的东西),将光标移动到a 预定义点并进入插入模式。我想在bash-support中改变它 尽管我不喜欢弄乱那些文件,但脚本会完成这项工作。

EDIT2:让g:C_Ctrl_j ='off'实际上变成了csupport插件跳转插入功能。

4 个答案:

答案 0 :(得分:8)

根据the document of bash-support.vim

  

Ctrl-j的原意是'向下移动[n]行'(参见| CTRL-j |)。   如果您习惯使用默认值而不喜欢这些跳转目标   可以关掉它们。将以下行放在'.vimrc'文件中:

     

让g:BASH_Ctrl_j ='off'

因此您必须将let g:BASH_Ctrl_j = 'off'放入vimrc。

此外,在vimrc中使用nnoremap <C-j> <C-w>j代替map <C-j> <C-w>j。 后者定义了Normal,Visual和Operator-pending模式中的键映射。 键映射也是递归扩展的。 当您定义更多键映射时,它可能会导致麻烦。

答案 1 :(得分:6)

Ctrl - j (0x0A)是一个特殊字符Line Feed

很有可能这个按键不是以 Ctrl - j (0x0A)到达Vim。

在我Mac上的Terminal.app窗口的Vim中,输入 Ctrl - v Ctrl - j 显示^@,(0x00或NULL)。而 Ctrl - v Ctrl - g Ctrl - v < / kbd> Ctrl - k 分别显示^G^K

我建议使用另一个映射(或者只是训练自己使用 Ctrl - w j )。

答案 2 :(得分:2)

我有同样的问题,但原因不同。 VIM-LaTeX使用imaps.vim插件,也是remaps some keys,包括 Ctrl - j 。对我有用的是在autocmd中设置.vimrc

augroup vimrc
    au!
    au VimEnter * unmap <C-j>
    au VimEnter * noremap <C-j> <C-w>j
augroup END

VimEnter触发器确保在vim启动后执行重映射,并加载插件(如果我理解正确的话),所以它会覆盖imaps.vim插件&#39;的地图。 是不必要的,但它不会受到伤害。

答案 3 :(得分:1)

尝试非递归映射,

nnoremap <C-j> <C-w>j

应该这样做。