2013-01-11 48 views
0

我想映射一個密鑰,以便它在Vim中執行以下操作。假設我正在編輯一個文件;我想它建立這樣,如果我按F2,我將完成我會同樣的事情,如果我做了以下內容:如何將這五個鍵盤操作映射到Vim中的單個鍵?

  1. ESC
  2. 型冒號(:
  3. 類型w
  4. 輸入
  5. 按ESC 再次
  6. i回到插入模式

這可能嗎?

+1

我不確定爲什麼有人會投這個票。我同意他們中的一些人所描述的做事方式並不是真的如何使用Vim,但它得到的答案對嘗試瞭解更多關於Vim密鑰映射的人非常有用。 –

回答

3

立即回答:是的。你可以使用這個:

:inoremap <F2> <Esc>:w<CR>I 

但它不會做你想要的(遊標將在錯誤的地方)。

安東把我打敗了(但是是正確的)答案。

但最好的答案是這樣的:不要錯誤地使用Vim。您絕對不應該在插入模式中花費太多時間,以至於您需要一條快捷方式才能擺脫它,保存文件,然後重新進入。與其他所有編輯器一樣,您始終處於「插入模式」,並且只是暫時彈出菜單或對話框或任何其他;在Vim中,你應該學會扭轉這一點。只彈出到插入模式來編輯或添加內容;在插入模式下,不要使用箭頭鍵移動光標;將大部分時間用於命令(正常)模式,並在對新範例進行一些調整之後,您會發現編輯速度已提高。

+0

爲了快速保存,我想對插入模式映射做一個例外,但總的來說,你是對的。 –

+0

在哪裏寫這段代碼,我的意思是在哪個文件和哪裏 – user175386049

+2

[你應該使用':noremap'](http://learnvimscriptthehardway.stevelosh.com/chapters/05.html);它使映射免於重映射和遞歸。 –

4

是的,這是可能的,但如果光標位於行尾,它不會做你想做的事情。

要獲得插入模式保存在F2文件,請使用以下映射:

:imap <F2> <C-O>:w<CR> 
+0

考慮到他說'我'(如在,大寫'我'),它不會做他想要的東西,即使當光標不在行尾時:p – Amadan

3

編寫映射比描述要容易得多。

首先,您需要確定將從哪個模式使用該映射,因爲這將決定您將使用哪種:map變體。您可能會想要在插入模式下使用此,因此您將使用:inoremap

映射的格式是:

:..noremap {keys} {rhs} 

你想<F2>(見:help key-notation)爲keys。對於{rhs},只需連接說明中列出的鍵。

要堅持映射,請將其添加到~/.vimrc。 (見​​。)

P.S. alternative given by Anton Kovalenko可能對你正在嘗試做的更好,但在這裏我已經給出了未來關鍵映射的一般方法。