作為程式設計師來說,編輯器vim和emacs是不可不了解的。一直聽說vim的強大,但困於一直用window系統,而寫**也找到了sublime text3這樣優秀的編輯器,所以沒有學的慾望。從另一方面來說,接觸到好多ide都整合的命令列模式,可見仍有學習的必要。因此打算每天學習一些,包括但不限於vim,以後也可能會學習其他工具或者語言。總之,每天學習一點新的東西,樂此不疲。
從命令列執行vim:vim
命令列模式開啟乙個檔案:vim file.txt
,有則開啟,無則建立
開啟後,可以看到每行前都有個波浪號,表示這行不在檔案中。
vim的工作模式
命令模式,插入模式和visual模式
剛開啟vim是處於命令模式,按i鍵後進入插入模式,左下角有insert字樣,可以是輸入內容,退回命令模式是按esc鍵。
在命令模式下,移動游標可用h(左)j(下)k(上)l(右)來移動,最快捷。
刪除當前字元:x
刪除一行:dd
撤銷最近的一次操作:u
恢復最近的一次撤銷操作:ctrl+r
儲存當前檔案並退出:zz
退出但不儲存::q!
如果知識看了檔案但沒有修改,那麼可以省去上面命令的!號
a //在當前游標位置的右邊新增文字獲取幫助資訊:i //在當前游標位置的左邊新增文字
a //在當前行的末尾位置新增文字
i //在當前行的開始處新增文字(非空字元的行首)
o //在當前行的上面新建一行
o //在當前行的下面新建一行
r //替換(覆蓋)當前游標位置及後面的若干文字
j //合併游標所在行及下一行為一行(依然在命令模式)
:help
:help subject:獲取某一命令的幫助
有時,同乙個快捷鍵在不同模式時代表不同的命令,vim 預設認為查詢的是命令模式下的那個命令。可以加上字首來區分不同的模式。i_ 表示插入模式。v_ 表示visual模式。: 表示ex模式。比如下面的例子:
:help i_ctrl-h
:help :quit
類似的,2w表示向後移動兩個單詞
移動到一行的行尾:$
移動到一行的開始:home
移動到一行的第乙個非空白字元:^
一行中進行查詢字元
從當前位置向後查詢第一次出現x的位置,並移動游標:fx
從當前位置向前查詢第一次出現x的位置,並移動游標:fx
若是沒有找到,不移動游標
類似的還有一對命令t與t。與f和f類似,不過它會停在查詢到的字元之前乙個字元
移動游標到指定的行
移動到指定的行n:ng
移動到最後一行:g
顯示行號::set numnber
隱藏行號::set nonumber
給出當前游標所在的行列資訊:ctrl+g
翻頁:
向下滾動半屏文字:ctrl+u
向上滾動半屏文字:ctrl+d
刪除文字
刪除一行:dd
從當前位置刪除到當前單詞結束(連空格):dw
w是將游標移動到下乙個單詞的開始位置。
類似的,刪除3個單詞:3dw或者d3w
實際上,d命令後面可以跟著任意的游標移動命令,比如 dfi 表示從當前位置一直刪到第一次出現i為止。當然,如果當前行沒有找到i則上面的命令就什麼都不做,因為這時游標沒有移動。
改變當前字元的大小寫:~
遇到重複操作時,可以錄製一段鍵盤巨集:q命令
假設我們的檔案中有如下幾行。這樣就錄好了一段巨集,巨集名為a。stdio.h
fcntl.h
unistd.h
stdlib.h
我們希望將其編輯為:
include 「stdio.h」
include 」fcntl.h」
include 」unistd.h」
include 」stdlib.h」
首先將游標移動到第一行的開始。
然是輸入如下的命令:
qa ^
i#include 「
$ a」 j q
之後執行3次這個巨集:3@a
總結一下:目前認為比較重要的幾個命令:
移到行尾:$
移到行頭:home
移到行尾並插入:a
學習了一種新東西
名字叫 360兒童衛士!主要功能就是隨時定位孩子的位置,很實用的趕腳 來看看這款產品吧!利用高科技 雲端也能防兒童走失 雲計算 大資料是當下最為前沿的高科技,但是如果利用得當將會起到事半功倍的效果。比如孩子不小心走丟,究竟有多少種方法可以找回孩子?自己去找 廣告 報警等等,但是不客氣的說,這些方法效...
每天學習一點 Android
每天都變著花樣的學東西,今天呢,看了看android教程和一些android開 壇,先了解一下皮毛,再決定到底怎麼學習。anoid早期由 android之父 之稱的andy rubin創辦,google於2005年併購了成立僅22個月的高科技企業android,展開了簡訊 手機檢索 定位等業務,基於...
每天學習一點string h
面試中總會遇到實現類似strcpy,strlen功能的程式,所以需要注意積累,每天學習乙個函式!第一天,strcpy 方案一 char mystrcpy char strdes,const char strsrc 方案二 char mystrcpy char strdes,const char st...