2012-01-17 52 views
11

Bash可以是set to operate in vim mode。但是,我的.vimrc已不再使用。具體而言,我的映射jjEsc不再有效。我必須按Esc才能退出插入模式。如何告訴bash使用我的.vimrc文件?強制bash在vi模式下使用.vimrc

+7

bash不是vim - 它爲什麼會使用您的.vimrc? – 2012-01-17 05:35:13

+0

@CarlNorum我認爲它可以使用'.vimrc',因爲它可以在vi模式下操作 – puk 2012-01-17 05:53:43

+6

Bash的vi模式不是vi。它只是有點像vi,所以如果這是你的口味,你會感到賓至如歸。 – 2012-01-17 05:55:15

回答

9

您正在尋找的bash-的vi模式(這就是:對於bash的VI輸入模式,並沒有任何完全可以使用vi或vim)。

確實必須做的readline/inputrc文件,據我瞭解,這樣你可以看到你是否可以

  • 綁定鍵bash的方式
  • 從〜/ .inputrc文件

鏈接:

最後一個環節包含.inputrc使用使用bash的一個較爲複雜的例子:

# Edit options before rerunning previous command, eg: ls a b c -> ls -al a b c 
"\e-": "\C-p\C-a\M-f " 

# Cycle thru completions. 
"\e/": menu-complete 

# glob patterns without executing, eg: 'rm *x' 
"\ee": glob-expand-word 

# Vim style history search 
"\e[A": history-search-backward 
"\e[B": history-search-forward 

"\e[C": forward-char 
"\e[D": backward-char 

# Two escapes clear command line. 
"\e\e": "\C-a\C-k" 
-2
在你的.bashrc

set -o vi 

vim的模式,可以讓bash

+0

這應該工作嗎?它不適用於我,我一直相信編輯標誌是編輯在某些條件下使用(即'svn commit -m') – puk 2012-01-17 07:14:21

+0

對不起,我的錯誤,應該是:set -o vi – chemila 2012-01-17 07:30:20

+0

是的我到目前爲止還有。 – puk 2012-01-17 10:02:02

2

@sehe絕對有最直接的答案。但如果你不想與.inputrc文件一塌糊塗,有at least two other options

  • v,這需要您到目前爲止已經寫了什麼命令,或者什麼都沒有,到在你的.bash_profile定義的編輯器(使用此行:EDITOR=/usr/bin/vim)。保存並退出執行該命令。編輯:這是在正常模式下執行的,所以你還是得按ESC那裏:(

  • fc,這是方便'fix command' command更上一個在man bash編輯:。這一次你。類型在插入模式

+3

我一直在想,爲什麼每當我按'v' – puk 2013-12-03 23:13:06

+0

偉大的建議vim會打開,但你可以編輯的問題,使其更清楚,例如它是不是很明顯,這些意味着在命令模式而不是插入模式下發出 – puk 2013-12-03 23:13:54

0

雖然接受的答案具有指針,切到正題答案如下:

在你.inputrc文件的文件,把

一套鍵盤映射VI - 插入

「JJ」: 「\ E」

你需要強迫你.inputrc文件文件的讀取重。這可以通過關閉您的終端並重新打開來完成。對於長時間的實驗。inputrc中的文件,所以你不必重新登錄出來,然後,把這個太:

「\ CX \ CR」:重新讀取初始化文件

然後你可以使用控制 - x,control-r重新讀取init文件,而不必註銷並返回。