2011-08-03 117 views
43

我很長一段時間學習Vim的emacs用戶。使用Emacs,我可以使用與任何其他緩衝區中相同的導航鍵盤快捷方式在迷你緩衝區(我在其中發出類似C-x C-s的命令)中導航。例如,即使在迷你緩衝區中,我也可以使用C-f向前導航一個字符。我也可以使用箭頭鍵,但它們太遙遠了。在Vim的命令模式下導航

是否有任何鍵盤快捷鍵在Vim的命令模式(:)下導航,而無需使用箭頭鍵 - 相當於emacs C-f,C-b?謝謝。

+0

可能重複[如何在Vim命令行中移動?](http://stackoverflow.com/questions/2075569/how-can-i-move-around-in-the-vim-command-線) –

回答

61

添加到格雷格Hewgill的回答,您可以使用q:打開命令行窗口,在這裏你有任何Vim編輯權力。

+1

嗨,我從來沒有使用過。 –

+2

當我瞭解到關於Vim的一件事時,那麼你永遠不會停止學習一些新的和驚人的功能;-) – Boldewyn

+20

另外,如果你已經在命令行上,你想保留你寫的東西,並仍然進入在命令行窗口中鍵入ctrl-F。因此「:」應該完成與「q:」相同的事情。如果它不起作用,則設置爲'兼容'或者您有其他一些鍵映射到'cedit'選項。請參閱:help q:更多詳細信息:) – bhh1988

7

使用默認的鍵綁定,vim不提供命令行編輯的非箭頭鍵導航。但有關如何使用:cnoremap命令設置備用密鑰綁定的示例,請參閱:help cmdline-editing

27

一些從Vim的幫助:

CTRL-B or <Home> 
     cursor to beginning of command-line 
CTRL-E or <End> 
     cursor to end of command-line 
CTRL-H    
<BS>  Delete the character in front of the cursor (see |:fixdel| if 
     your <BS> key does not do what you want). 
<Del>  Delete the character under the cursor (at end of line: 
     character before the cursor). 
CTRL-W  Delete the |word| before the cursor. This depends on the 
     'iskeyword' option. 
CTRL-U  Remove all characters between the cursor position and 
     the beginning of the line. 
+0

正是我在找,謝謝Jeet! –

19

我有這些在我的.vimrc

cnoremap <C-a> <Home> 
cnoremap <C-e> <End> 
cnoremap <C-p> <Up> 
cnoremap <C-n> <Down> 
cnoremap <C-b> <Left> 
cnoremap <C-f> <Right> 
cnoremap <M-b> <S-Left> 
cnoremap <M-f> <S-Right> 
+0

這讓我如此開心。對於具有綁定''問題的用戶,請參閱http://stackoverflow.com/a/27206531/1213041 – cdosborn