将<Cj>映射到Vim中的某些内容

Dim*_*hev 6 vim

我已经映射Ctrl- j移动到下面的缓冲区.然而,它很难映射到其他东西,所以我不得不写下面的第一行,使其可以映射.

下面的脚本工作得很好,除非我写.sh文件.我安装了bash-support插件.

let g:C_Ctrl_j = 'off'
map <C-j> <C-w>j
Run Code Online (Sandbox Code Playgroud)

编辑:我刚刚发现问题在于bash支持.Bash支持映射Ctrl- j跳转插入(或类似的东西),将光标移动到预定义的点并进入插入模式.我想在bash-support脚本中更改它会完成这项工作虽然我不喜欢弄乱那些文件.

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

Kan*_*uno 8

根据bash-support.vim的文件:

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

让g:BASH_Ctrl_j ='关'

所以你必须把let g:BASH_Ctrl_j = 'off'你的vimrc.

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


Joh*_*web 6

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

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

在Mac上Terminal.app窗口的Vim中,输入Ctrl- v Ctrl- j显示^@,(0x00或NULL).然而Ctrl- v Ctrl- gCtrl- v Ctrl- k 显示^G^K分别.

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

  • http://lug.fh-swf.de/vim/vim-doc/csupport.html#csupport-Ctrl-j这是csupport文档的一部分,介绍了Ctrl-j在csupport插件中的作用.几个月前,我已经读过有关重新映射的内容,我不知道它在哪里. (2认同)

小智 5

我有同样的问题,但出于不同的原因。VIM-LaTeX 使用imaps.vim插件,它还重新映射一些键,包括Ctrl- j。对我有用的是autocmd在我的.vimrc

augroup vimrc
    au!
    au VimEnter * unmap <C-j>
    au VimEnter * noremap <C-j> <C-w>j
augroup END
Run Code Online (Sandbox Code Playgroud)

触发器VimEnter确保重映射将在 vim 启动后执行,并且加载插件(如果我理解正确的话),因此它会覆盖 imaps.vim 插件的映射。取消映射不是必需的,但也没什么坏处。