2011-03-17 119 views
8

我遵循Is there any way in the OS X Terminal to move the cursor word by word?中的指導,現在在終端I中可以逐字移動光標。Mac OS X中的Vim終端:按字移動光標

但是,在Vim中,我只能逐字地向後移動。無論我設置\ 033f到option+cursor-right還是shift+cursor-right,我都無法逐字前進。我想到的唯一解決方法是進入正常模式並點擊<w>轉到下一個單詞。任何想法如何解決這個問題?謝謝。

+9

正常模式下的'w'是逐字移動的最佳方式。 – alternative 2011-03-17 21:41:57

+1

您可以在插入模式下使用^ O來運行一個正常模式命令並保持插入模式,例如^ Ow。 – 2011-03-17 22:58:21

回答

9

w不是解決方法。這是逐字移動的主要方式(另請參閱:W,b,B,e,E)。你想要的是一種解決方法,它不會幫助你學習Vim。

1

有些人可能會爭辯說,動搖VIM native keyboard shortcuts不是一種解決方法,但對我來說,它肯定是非常不方便和非常低效。尤其是您需要在insert模式和normal模式之間切換的部分,以便移至下一個單詞。

這就是爲什麼我想出了一個基於SuperUser上的this answer的解決方案。這個想法是直接在VIM中映射由Terminal.app提供的輸入。 SU上的答案顯示如何將vimrc文件放入Home/End鍵以按預期工作。

我在下面的調整版本包括Option+arrow(或Alt+arrow)導航的話。我試圖模仿終端移動的行爲,儘可能接近我的能力。因此,按Option+RightAlt+Right)會將該插入符號移動到該單詞後面的下一個字符(而不是該單詞的最後一個字符,即VIMs w native bahavior)。

let tp=$TERM_PROGRAM 
if tp == 'Apple_Terminal' 
    :" map Mac OS X Terminal.app 

    " map Home/End: 
    :map <ESC>[H <Home> 
    :map <ESC>[F <End> 
    " small 'o' letter in <C-o> means no exit from the insert mode 
    :imap <ESC>[H <C-o><Home> 
    :imap <ESC>[F <C-o><End> 
    :cmap <ESC>[H <Home> 
    :cmap <ESC>[F <End> 

    " map Option+Left/Option+Right: 
    " for this to work you must have the bindings in Settings > Keyboard set 
    " as follows: 
    " 'option cursor left' to '\033b' 
    " 'option cursor right' to '\033f' 
    :map <ESC>f el 
    :imap <ESC>b <C-o>b 
    :imap <ESC>f <C-o>el 
    :cmap <ESC>f el 
endif 

作爲一個小,但顯著獎金你得到Home/End鍵導航,但不退出insert模式。測試10.8.5

+0

這真是太棒了,但我注意到在插入模式下,我會在移動時添加一個額外的「l」。例如'[x]'cursor ..'[x] foo bar' then⌥ - >'fool [x] bar' - >⌥'folo balr [x]' – 2016-08-10 18:05:03

+0

^^更新到上面。 ..只是讓':imap f e' ...'l'是不必要的 – 2016-08-11 00:41:29

1

讓我爲你清理一些東西。 Bash(在終端內運行的shell程序)具有您習慣的行爲。 (使用Alt + f通過單詞向前移動,Alt + b通過單詞向後移動。)最初的操作與Emacs類似。您可以使用命令

set -o vi 

切換到vim行爲。在這種模式下,您可以使用Esc切換到正常模式,並像vim一樣移動;然後按i返回插入模式。

所以,不要驚訝Vim不會像Emacs那樣行事。 vim背後的全部力量就在於這些簡單的動作背後。

+0

'-bash:bindkey:command not found'。我不認爲這是一個標準的命令。除了「Alt +字符」通常用於地區字母表中的重音字符。 – 2014-03-05 07:48:17

+0

我的不好。不知何故忘了我正在運行zsh。 – 2014-03-07 03:05:51