2017-09-01 122 views
2

我的最終目標是試圖在Vim中更輕鬆地進行目錄導航,最好不使用插件。Vim - 在鍵盤映射中發送製表鍵擊

我有這麼對我.vimrc什麼:

nmap <m-up> :cd ..<enter>:pwd<enter> 
nmap <m-left> :cd -<enter>:pwd<enter> 
nmap <m-down> :cd <tab> 

前兩個命令工作的偉大。我可以輕鬆地上/回目錄。第三條命令的目的是快速獲得一組選項,我可以通過選項卡/箭頭鍵直到所需的子目錄。然而,結果是:

:cd ^I 

即它的投入標籤/ CTRL-I模擬燒焦的標籤按鍵,這就是我想要的結果,而不是。我有其他的命令,使用<esc>,backspace等,他們都按要求工作,但<tab>是不同的。任何建議(除了在我的宏後點擊標籤)?

+0

爲什麼所有的目錄導航? – romainl

+0

@ romainl - 這是使用vim作爲shell/python環境(有點像ipython/jupyter,但希望更強大)的更大項目的一部分。我意識到vimshell/conque,雖然它們值得稱讚,但它們不能滿足我的要求。 –

回答

3

您需要設置的選項wildcharm

set wildcharm=<C-z> 
nnoremap <m-down> :cd <C-z> 

:help wildcharm

+0

很好,謝謝!現在我也瞭解了wildcharm。 –

1

我認爲它不能像你期望的那樣「Tab」,因爲它將它解釋爲vim命令的一部分,而不是(bash?)shell的輸入。我的猜測是它映射的東西沿着這個思路,如果你想看到的是在工作目錄:

nnoremap <m-down> :!pwd 

nnoremapno是爲了防止在相反方向上發生的任何映射,你可能想要進入的習慣。這將顯示目錄中的當前內容。

+0

我很害怕這樣的事情(tabb不可能)。 「cd」這裏是一個vim命令,並且是獨立於shell的。實際上在shell中通過!將創建一個新的shell進程,執行目錄更改,並退出而不更改vim中的目錄。感謝關於nnoremap的提示。 –