2012-02-01 74 views
5

我已映射Ctrl - j移動到下面的緩衝區。然而,它很難映射 到其他東西,所以我不得不寫下面的第一行,使其在 全部可映射。將<C-j>映射到Vim中的東西

下面的腳本完美的工作,除了當我寫.sh文件。我已安裝 bash-support插件。

let g:C_Ctrl_j = 'off' 
map <C-j> <C-w>j 

編輯:我剛剛發現問題是在bash支持。 Bash支持 地圖Ctrl - j跳轉插入(或類似的東西),它將光標移動到 預定義點並進入插入模式。我想在bash支持 腳本中改變這種做法,儘管我不喜歡那些文件。

編輯2:讓g:C_Ctrl_j ='off'實際上轉動了csupport插件跳轉插入功能。

回答

6

根據the document of bash-support.vim

Ctrl鍵-j的本義是 '移動[n]的線向下'(見| CTRL-J |)。 如果您習慣使用默認設置並且不喜歡這些跳轉目標,您可以將其關閉。將以下行放在文件中'。的vimrc」:

設G:BASH_Ctrl_j = '關'

所以,你必須把let g:BASH_Ctrl_j = 'off'到你的vimrc。

此外,在您的vimrc中使用nnoremap <C-j> <C-w>j而不是map <C-j> <C-w>j。 後者在Normal,Visual和Operator-pending模式中定義了鍵映射。 鍵映射也遞歸地展開。 定義更多鍵映射時可能會導致麻煩。

5

按Ctrl - Ĵ字符(0x0A)是一個特殊字符,Line Feed

有一個很好的機會,這個按鍵是不是沒有在到達的Vim作爲按Ctrl - Ĵ字符(0x0A)。

在Vim中,在我的Mac上一個Terminal.app窗口,鍵入按Ctrl - v按Ctrl - Ĵ顯示^@,(0×00或NULL)。而Ctrl鍵 - vCtrl鍵 - Ctrl鍵 - vCtrl鍵 - ķ顯示^G^K,分別。

我建議使用另一種映射(或只是訓練自己使用按Ctrl - 瓦特Ĵ)。

+1

let g:C_Ctrl_j ='off'是否刪除Ctrl-j到換行符的硬映射。 – 2012-02-02 09:45:55

+1

真的嗎?記錄在哪裏?我已經在兩臺電腦上試過了,它沒有任何區別。 – Johnsyweb 2012-02-02 09:51:18

+2

http://lug.fh-swf.de/vim/vim-doc/csupport.html#csupport-Ctrl-j這是csupport文檔的一部分,介紹Ctrl-j在csupport插件中的作用。我已經在幾個月前的某個地方閱讀過這個重新映像,我不知道它在哪裏。 – 2012-02-02 16:18:51

1

嘗試非遞歸映射,

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

應該做到這一點。

1

我有同樣的問題,但出於不同的原因。 VIM-LaTeX使用imaps.vim插件,其中還包括remaps some keys,其中包括Ctrl - j。什麼工作對我來說是建立在我的.vimrcautocmd

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

VimEnter觸發器可以確保Vim啓動後重映射會執行,插件加載(如果我理解正確)所以它會覆蓋imaps.vim插件的地圖。 unmap不是必需的,但它不會受到傷害。