關(guān)于Vim

為什么選擇Vim?

  1. vim無(wú)所不在削锰。學(xué)習(xí)vim無(wú)需擔(dān)心到了其他平臺(tái)需要學(xué)習(xí)新編輯器本鸣。
  2. 可擴(kuò)展性∪频拢可以只用它來(lái)編輯配置文件摄咆,也可以將它當(dāng)做開發(fā)平臺(tái)凡蚜。
  3. 功能強(qiáng)大.

Vim即語(yǔ)言?

動(dòng)詞

所謂動(dòng)詞指的是我們執(zhí)行的動(dòng)作豆同,這些動(dòng)作可以施加在名詞之上番刊『郏可以看看下面幾個(gè)常見(jiàn)的動(dòng)作:

  • d: 刪除
  • c: 修改
  • y: 拖拉(拷貝)
  • v: 可視化選擇 (V for line vs. character)
修飾語(yǔ)

定語(yǔ)用在名詞之前影锈,表明以哪種方式來(lái)執(zhí)行動(dòng)作。幾個(gè)例子:
i: 內(nèi)部
a: 周圍
NUM: 數(shù)字 (e.g.: 1, 2, 10)
t: 查找到指定字符蝉绷,并跳轉(zhuǎn)到這個(gè)字符的前面
f: 查找到指定字符鸭廷,并跳轉(zhuǎn)到字符所處的位置
/: 查找字符串 (literal or regex)

名詞

在英語(yǔ)中,名詞用來(lái)表示你所操作的對(duì)象熔吗。它們都是客體辆床。在vim中也是這樣。下面列出vim中的名詞:

  • w: 單詞
  • s: 句子
  • ): 句子 (另一種操作方式)
  • p: 段落
  • }: 段落 (另一種操作方式)
  • t: 標(biāo)簽 ( HTML/XML)
  • b: 塊 (編程語(yǔ)言)
    Nouns as motion
    同樣桅狠,你也可以將名詞視為移動(dòng)動(dòng)作讼载,這意味著你可以用名詞表示在文本的跳轉(zhuǎn)范圍。我們可以在“移動(dòng)”章節(jié)中看到例子說(shuō)明中跌。

對(duì)于下面這些符號(hào)咨堤,根據(jù)顏色的不同來(lái)區(qū)分句子的不同組成部分:

  • 刪除兩個(gè)單詞
    d2w

  • 修改所在的句子(刪除當(dāng)前句子并進(jìn)入插入模式)
    cis

  • 拷貝當(dāng)前所在的段落
    yip

  • 修改當(dāng)前光標(biāo)所在位置到下一個(gè)括號(hào)之間的文本內(nèi)容
    ct<
    記住,這里的“目標(biāo)”是尖括號(hào)漩符,除此之外還可以是任意字符一喘。從語(yǔ)法上來(lái)說(shuō),使用單個(gè)字母”t”來(lái)表示這個(gè)向前查找的“目標(biāo)”嗜暴,這樣我就可以使用“dt.”表示刪除當(dāng)前位置到下一個(gè)句號(hào)之間的內(nèi)容凸克,”yt;”表示拷貝當(dāng)前位置到下一個(gè)分號(hào)之間的內(nèi)容议蟆。

—些對(duì)文件的基本操作

  • Vi file :使用vim打開要編輯的文件
  • :w :保存修改
  • :q! : 退出vim,后面加感嘆號(hào)表示不保存修改強(qiáng)制退出
  • :wq: 保存修改并退出
  • :saveas ~/some/path/: 將文件保存到其他位置
    【注意:相比較:wq 我更喜歡使用ZZ萎战,因?yàn)槲矣X(jué)得不需要輸入冒號(hào)我覺(jué)得會(huì)快一點(diǎn)咐容。也可以使用:x】
    ZZ: 同:wq

搜索

  • /{string}: 搜索字符串
  • t : 跳轉(zhuǎn)到某一字符前
  • F : 跳轉(zhuǎn)到某一字符處
  • *:搜索當(dāng)前光標(biāo)位置單詞的其他實(shí)例
  • n : 搜索完成后,跳轉(zhuǎn)到下一個(gè)匹配實(shí)例
  • N :搜索完成后蚂维,跳轉(zhuǎn)到上一條匹配實(shí)例
  • ; : 跳轉(zhuǎn)到指定字符時(shí)疟丙,使用分號(hào)跳轉(zhuǎn)到下一實(shí)例
  • , :跳轉(zhuǎn)到指定字符時(shí),使用逗號(hào)跳轉(zhuǎn)到上一實(shí)例

移動(dòng)動(dòng)作

  • j : 向下移動(dòng)一行
  • k :向上移動(dòng)一行
  • h :向左移動(dòng)一個(gè)字符
  • l :向右移動(dòng)一個(gè)字符
行內(nèi)移動(dòng)

你可以在當(dāng)前行內(nèi)自由的移動(dòng)鸟雏。

  • 0: 移動(dòng)到行首
  • $: 移動(dòng)到行末
  • ^: 移動(dòng)到行首非空字符
  • t”: 跳轉(zhuǎn)到下一個(gè)引號(hào)前
  • f”: 跳轉(zhuǎn)到下一個(gè)引號(hào)處
    【注意: 逗號(hào)和分號(hào)會(huì)重復(fù)之前的t和f跳轉(zhuǎn)】
  • n+ //向下跳n行
  • n- //向上跳n行
  • nG //跳到行號(hào)為n的行
  • G //跳至文件的底部
按單詞移動(dòng)

除了按行和字符移動(dòng)外享郊,還可以按單詞移動(dòng):

  • w: 先前移動(dòng)一個(gè)單詞

  • b: 向后移動(dòng)一個(gè)單詞

  • e: 移動(dòng)到當(dāng)前單詞末尾
    當(dāng)使用大寫字母時(shí),vim會(huì)忽略掉單詞間的分隔符孝鹊,這樣原本被分隔符隔開的多個(gè)單詞會(huì)因此被視為一個(gè)大單詞炊琉。

  • W: 向前移動(dòng)一個(gè)大單詞

  • B: 向后移動(dòng)一個(gè)大單詞
    這種大寫命令的優(yōu)勢(shì)在我們實(shí)際工作中會(huì)頻繁地碰到。

按句子或段落移動(dòng)
  • ):向前移動(dòng)一條句子
  • }: 向前移動(dòng)一個(gè)段落
在屏幕間移動(dòng)
  • H:向上移動(dòng)一屏
  • M:移動(dòng)到屏幕中間
  • L:移動(dòng)到屏幕底端
  • gg: 移動(dòng)到文件頂端
  • G:移動(dòng)到文件結(jié)尾
  • ^U: 向上移動(dòng)半屏
  • ^D: 向下移動(dòng)半屏
  • ^F: 下一頁(yè)
  • ^B: 上一頁(yè)
來(lái)回跳轉(zhuǎn)

在普通模式下又活,可以在兩點(diǎn)間來(lái)回跳轉(zhuǎn)苔咪,這在實(shí)際操作中非常有用。

  • Ctrl-i: 跳轉(zhuǎn)到之前所在的位置
  • Ctrl-o: 跳回你實(shí)際的位置
其他動(dòng)作
  • :$line_numberH: 移動(dòng)到指定行號(hào)
  • M: 移動(dòng)到屏幕中間
  • L: 移動(dòng)到屏幕底端
  • ^E: 向上滾動(dòng)一行
  • ^Y: 向下滾動(dòng)一行
  • ^U: 向上移動(dòng)半屏
  • ^D: 向下移動(dòng)半屏
  • ^F: 向下移動(dòng)一頁(yè)
  • ^B: 向上移動(dòng)一頁(yè)
    現(xiàn)在將所以移動(dòng)動(dòng)作總結(jié)到一起:

移動(dòng)命令總結(jié)

j: move down one line
k: move up one line
h: move left one character
l: move right one character
0: move to the beginning of the line
$: move to the end of the line
w: move forward one word
b: move back one word
e: move to the end of your word
): move forward one sentence
}: move forward one paragraph
:line_number: move to a given line number
H: move to the top of the screen
M: move to the middle of the screen
L: move to the bottom of the screen
^E: scroll up one line
^Y: scroll down one line
gg: go to the top of the file
G: go to the bottom of the file
^U: move up half a page
^D: move down half a page
^F: move down a page
^B: move up a page
Ctrl-i: jump to your previous navigation location
Ctrl-o: jump back to where you were

基礎(chǔ)修改/插入命令

  • i : 從當(dāng)前光標(biāo)位置之前插入
  • a : 從當(dāng)前光標(biāo)位置之后插入
  • I :從當(dāng)前行開始位置插入
  • A :從當(dāng)前行行末插入
  • o : 在當(dāng)前行下新增一行柳骄,并從新行插入
  • O :在當(dāng)前行上新增一行团赏,并從新行插入
  • r : 替換當(dāng)前光標(biāo)所在字符
  • R :替換當(dāng)前光標(biāo)的字符,并一直向后替換(替換模式)
  • cm:修改文本耐薯,其中m表示移動(dòng)的動(dòng)作舔清,比如,一個(gè)單詞曲初,一句或者一個(gè)段落体谒。
  • C :修改當(dāng)前所在行
  • ct?: 修改問(wèn)號(hào)前的這條問(wèn)句內(nèi)容
  • s:替換當(dāng)前字符
  • S: 替換整行
修改句子
  • cis

  • 移動(dòng)到行首并進(jìn)入插入模式
    I

  • 在當(dāng)前光標(biāo)位置之后進(jìn)入插入模式
    a

從上面例子可知臼婆,有多種方式可以進(jìn)入插入模式輸入文本抒痒。還有一些簡(jiǎn)寫來(lái)執(zhí)行多條操作,比如說(shuō)刪除并進(jìn)入刪除模式颁褂。

  • 刪除從光標(biāo)所在位置開始到行末的所有內(nèi)容故响,并進(jìn)入插入模式
    C

  • 刪除當(dāng)前行并進(jìn)入插入模式
    S

修改大小寫

可以通過(guò)波浪符來(lái)變更大小寫。就像你猜想的那種方式工作:不管你光標(biāo)所在字符還是可視模式下選擇的文本都可以颁独。

格式化文本

Vim還可以快速格式化文本彩届,比如格式化一整段文本,使用下面這個(gè)命令就可以很容易實(shí)現(xiàn):

格式化當(dāng)前段落

gq ap
gp根據(jù)預(yù)設(shè)的文本寬度testwidth以及參數(shù)指定的文本范圍來(lái)工作奖唯,這意味著對(duì)于你指定的任意范圍的文本惨缆,gp都可以自動(dòng)校準(zhǔn)寬度,使得文檔看起來(lái)干凈又整潔。
【注意: ap表示文本對(duì)象”整個(gè)段落”的覆蓋范圍】

刪除文本

  • x: 刪除當(dāng)前光標(biāo)的字符
  • X:刪除當(dāng)前光標(biāo)的前一個(gè)字符
  • dm: 根據(jù)定義的m來(lái)確定刪除范圍坯墨,一個(gè)單詞或者一句話或者一個(gè)段落寂汇。
  • dd: 刪除當(dāng)前行
  • dt. : 刪除當(dāng)前位置到下一個(gè)句號(hào)之間的所有內(nèi)容
  • D: 刪除當(dāng)前光標(biāo)位置到本行末的所有內(nèi)容(對(duì)比上面的C,D不會(huì)進(jìn)入插入模式)
  • J: 將上下兩行合并(刪除兩行之間的換行符)
  • nx //刪除從光標(biāo)開始的n個(gè)字符
  • ndd //向下刪除當(dāng)前行在內(nèi)的n行

撤消與重做

  • u: 撤銷上一個(gè)動(dòng)作
  • U //撤銷對(duì)當(dāng)前行的所有操作
  • Ctrl-r: 重做上一個(gè)動(dòng)作

重復(fù)動(dòng)作

使用“.”來(lái)重復(fù)上一次操作
你所做的許多操作可能都有重復(fù)的價(jià)值捣染。比如進(jìn)入插入模式添加一些文本內(nèi)容骄瓣。你只需執(zhí)行一次,然后一直執(zhí)行點(diǎn)命令來(lái)重復(fù)就可以了耍攘。請(qǐng)看下面的例子榕栏。

刪除一個(gè)單詞
dw
緊接著執(zhí)行,再刪除5個(gè)單詞

多么給力蕾各! 如果結(jié)合可視化模式扒磁,發(fā)揮的能力更讓你大開眼界。

復(fù)制與粘貼

  • yy //將當(dāng)前行復(fù)制到緩存區(qū)式曲,也可以用 "ayy 復(fù)制妨托,"a 為緩沖區(qū),a也可以替換為a到z的任意字母吝羞,可以完成多個(gè)復(fù)制任務(wù)兰伤。
  • nyy //將當(dāng)前行向下n行復(fù)制到緩沖區(qū),也可以用 "anyy 復(fù)制钧排,"a 為緩沖區(qū)敦腔,a也可以替換為a到z的任意字母,可以完成多個(gè)復(fù)制任務(wù)恨溜。
  • yw //復(fù)制從光標(biāo)開始到詞尾的字符符衔。
  • nyw //復(fù)制從光標(biāo)開始的n個(gè)單詞。
  • y^ //復(fù)制從光標(biāo)到行首的內(nèi)容筒捺。
  • y$ //復(fù)制從光標(biāo)到行尾的內(nèi)容柏腻。
  • p //粘貼剪切板里的內(nèi)容在光標(biāo)后纸厉,如果使用了前面的自定義緩沖區(qū)系吭,建議使用"ap 進(jìn)行粘貼。
  • P //粘貼剪切板里的內(nèi)容在光標(biāo)前颗品,如果使用了前面的自定義緩沖區(qū)肯尺,建議使用"aP 進(jìn)行粘貼。
交換兩行的位置
  • ddp
    使用這條命令可以很快速的交換兩行的位置躯枢。第一部分刪除你所在的行则吟,第二部分將它粘貼回之前所在位置的下面。(ps:文章中用的是above锄蹂,但是實(shí)際上拷貝回下方位置)

拼寫檢查

如果沒(méi)有拼寫檢查的話氓仲,感覺(jué)會(huì)很糟糕,還好vim這方面做得很好。當(dāng)然我們需要先在配置文件中配置拼寫檢查選項(xiàng)敬扛。
在~/.vimrc的某個(gè)位置中添加

找出拼寫錯(cuò)誤

如果在配置文件中設(shè)置了拼寫檢查的選項(xiàng)晰洒,那么拼錯(cuò)的單詞會(huì)自動(dòng)添加下劃線。你也可以手動(dòng)輸入:set spell和:set nospell來(lái)啟用或禁用啥箭。

使用以下命令來(lái)跳轉(zhuǎn):
  • 跳轉(zhuǎn)到下一處拼寫錯(cuò)誤
    ]s

  • 跳轉(zhuǎn)到上一處拼寫錯(cuò)誤
    [s

  • 若光標(biāo)處是錯(cuò)誤單詞谍珊,給出修改建議
    z=

  • 將識(shí)別的錯(cuò)誤單詞標(biāo)記正確
    zg

  • 將vim視為正確的單詞標(biāo)記為錯(cuò)誤單詞
    zw

替換

基本設(shè)置為:%s

將每行的foo替換為bar

:%s /foo/bar/g

將當(dāng)前行中的foo替換為bar

:s /foo/bar/g

【注意: 兩個(gè)命令的不同之處在于,單行替換s前少了%】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末急侥,一起剝皮案震驚了整個(gè)濱河市砌滞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坏怪,老刑警劉巖贝润,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異铝宵,居然都是意外死亡题暖,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門捉超,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)胧卤,“玉大人,你說(shuō)我怎么就攤上這事拼岳≈μ埽” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵惜纸,是天一觀的道長(zhǎng)叶撒。 經(jīng)常有香客問(wèn)我,道長(zhǎng)耐版,這世上最難降的妖魔是什么祠够? 我笑而不...
    開封第一講書人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮粪牲,結(jié)果婚禮上古瓤,老公的妹妹穿的比我還像新娘。我一直安慰自己腺阳,他們只是感情好落君,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著亭引,像睡著了一般绎速。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上焙蚓,一...
    開封第一講書人閱讀 49,785評(píng)論 1 290
  • 那天纹冤,我揣著相機(jī)與錄音洒宝,去河邊找鬼。 笑死萌京,一個(gè)胖子當(dāng)著我的面吹牛待德,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播枫夺,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼将宪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了橡庞?” 一聲冷哼從身側(cè)響起较坛,我...
    開封第一講書人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扒最,沒(méi)想到半個(gè)月后丑勤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吧趣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年法竞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片强挫。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡岔霸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出俯渤,到底是詐尸還是另有隱情呆细,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布八匠,位于F島的核電站絮爷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏梨树。R本人自食惡果不足惜坑夯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抡四。 院中可真熱鬧柜蜈,春花似錦、人聲如沸床嫌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)厌处。三九已至,卻和暖如春岁疼,著一層夾襖步出監(jiān)牢的瞬間阔涉,已是汗流浹背缆娃。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瑰排,地道東北人贯要。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像椭住,于是被迫代替她去往敵國(guó)和親崇渗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 自我總結(jié)篇: 對(duì)文件的操作技巧: vim文件一個(gè)有三種狀態(tài):命令(瀏覽/輸入命令轉(zhuǎn)變末行模式)京郑,文本(添加/編輯/...
    小知大知閱讀 793評(píng)論 0 0
  • 在命令狀態(tài)下對(duì)當(dāng)前行用== (連按=兩次), 或?qū)Χ嘈杏胣==(n是自然數(shù))表示自動(dòng)縮進(jìn)從當(dāng)前行起的下面n行宅广。你可...
    三十兒閱讀 417評(píng)論 0 1
  • vim 選擇文本,刪除些举,復(fù)制跟狱,粘貼 文本的選擇,對(duì)于編輯器來(lái)說(shuō)户魏,是很基本的東西驶臊,也經(jīng)常被用到,總結(jié)如下: v 從...
    壹首簡(jiǎn)單的歌閱讀 880評(píng)論 0 7
  • 光標(biāo)移動(dòng) h 光標(biāo)左移叼丑,同 <Left> 鍵j ...
    guanguans閱讀 1,838評(píng)論 0 16
  • 1. vim 選擇文本关翎,刪除,復(fù)制鸠信,粘貼 文本的選擇笤休,對(duì)于編輯器來(lái)說(shuō),是很基本的東西症副,也經(jīng)常被用到店雅,總結(jié)如下:v ...
    路癡千行閱讀 3,279評(píng)論 0 0