2011-07-01 19 views
68

我知道,我可以使用:插入模式移到行的開頭,而在插入模式

  1. 首頁
  2. Esc鍵 + 退出插入模式並輸入再次,有效地走到一線的開始。

但既不滿足我。在第一種情況下,我必須傾斜我的頭,以打主頁,因爲我不能盲目打它。在第二種情況下,我的左臂必須離開主隊才能擊中Esc,這也很煩人。

有什麼想法?

+5

您可以使用0移動到行首,但不是插入模式。 – manku

+2

如果你發現Esc的效果很好,你可以使用Ctrl- [代替:) – 2011-07-01 08:06:45

+1

或者更好,Ctrl-C的工作方式與Esc類似。甚至更好,將Caps Lock映射到Esc。 –

回答

121

Ctrl + O而在插入模式下,您只能進入一個按鍵的命令模式。因此Ctrl + O然後Shift + 應該完成你要找的東西。

+0

您可以通過按Ctrl + c,I或Ctrl + [,I來完成同樣的操作。Ctrl + c在功能上類似於ESC,而Ctrl + [相當於ESC。 – sml

+34

或者'Ctrl-o'後面加'0'(比'Ctrl-o'後面加'Shift-I'稍微更有效),因爲你會自動回到插入模式。在某些情況下,'Ctrl-o'後跟'^'可能會更好(移至行的第一個非空白字符)。 – Jeet

+2

在插入模式下,如果您的Alt鍵發送轉義(可在iTerm2中配置),您可以使用Alt-A或Alt-I – Rivenfall

40

您可以使用I(首都i)進入插入模式。

它會將光標置於行首。

同樣,您可以使用A在行尾添加一些內容。

雖然它並沒有真正解決在插入模式下移動的問題。

我剛剛檢查了插入模式的幫助,在插入模式下沒有組合鍵在行首開始移動。

其他的想法: 只有在插入模式重新映射一個新的命令

inoremap <C-i> <Home>

+1

T. 工作正常,但我正在尋求解決方案,以移動到行的開始,而已經在插入模式。 – Valentin

+0

這不直接回答問題,但提供了可能爲大多數人搶佔問題的功能。 –

3

如果您使用MacOS的終端去首選項...>設置>鍵盤和映射結束鍵爲Ctrl-O $(它顯示爲\ 017 $),然後使用fn + left模擬結束鍵。對主鍵做同樣的操作。逃生序列\ 033 [H也適用於家庭。

+0

fn-Left和fn-Right在默認情況下在vim的mac終端上工作 – Jeff

17

我已經Ctrl + a和Ctrl + e分別映射到行的開始和結束。這與大多數bash命令行的行爲相匹配。適合我。

inoremap <C-e> <Esc>A 
inoremap <C-a> <Esc>I 
+0

如果我沒有弄錯,這些也是大多數其他編輯的鍵盤綁定。我將把這些添加到我的vimrc文件中。 – Aaron

+2

這些是通常的Emacs行爲。大多數瀏覽器也支持這些文本字段的各種類型。我不認爲這是一個壞主意,但這裏是你錯過的東西:''複製/寫入光標下的字符(''爲超出光標),''插入任何東西在你的。 (點寄存器)。當你離開插入模式時(即使使用Ctrl-c(你出於很多原因不應該習慣))時,該寄存器會充滿你輸入的內容。 –

+0

@Jonathan Cutrell你如何去到新線的開始。 – sayth

0

已對我來說(包括肌肉記憶和直觀)工作的快捷方式是映射__(這是雙重_)「插入當前行的開始」。

理由:

  • _已經進入線在vim
  • 開始,加倍任何事情都是這樣做「這一行」
  • _一種很常見的方式不衝突與任何動作(你已經在線的開始)
  • 如果你去了行的開頭,現在想插入,你的手已經在正確的位置。

vim腳本:

"insert at start of current line by typing in __ (two underscores) 
function DoubleUnderscore() 
    if v:count == 0 && getcurpos()[2] == 1 
     :silent call feedkeys('I', 'n') 
    else 
     :silent call feedkeys('^', v:count + 'n') 
    endif 
endfunction 
nnoremap <silent> _ :call DoubleUnderscore()<CR> 

正是這種複雜,因爲很不錯的選擇nnoremap __ _I會使Vim上按____區分延遲。

相關問題