[Linux] vim

專案資料夾瀏覽:

// 在 vim 的編輯視窗下:
:e .:可進到當前的目錄結構來瀏覽

// 安裝 Vundle
$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

// 在 NERDTreeToggle按?可看指令說明

更新:

$ cd ~/Documents
// 然後直接打 vim 進入 vim 編輯視窗
$ vim
// 然後編輯完檔案按 :w filename.text 即可新增這個檔案於 ~/Documents

:pwd:可直接看目前的所在目錄路徑

:e ~/.vimrc:在編輯某個檔案時,直接切換編輯 ~/.vimrc 檔案

:so %:在編輯 ~/.vimrc 時,直接輸入這個並儲存後,可直接讓所編輯的設定生效。so 指的是source,百分比符號指的是目前這個檔案。

:echo $MYVIMRC:顯示 .vimrc 檔案所在的路徑。

:bd:buffer delete,若有用 tabedit 來開啟分頁,可用 bd 關閉,但這會關閉所有的 tab(分頁)。

:bp:buffer previous,可用 bp 回上一個 buffer。

:bn:buffer next,可用 bp 回上一個 buffer。

:ls:列出所有 buffer,然後可用 :b1:b2 來切換 buffer

:tabc:僅關閉當前這個 tab (分頁)。

.:重覆執行上一次的指令。

zz:將畫面移到游標這行的中間

:sp:水平分割視窗

:vsp:垂直分割視窗

^wj:移動到下面的視窗,其它方向:(^wk)、(^wh)、(^wl)

^ww:直接切換視窗

^w|:將目前所在視窗整個放大。

^w=:平均分割所有視窗。

使用 vim-atom-dark

$ cd ~/.vim
$ mkdir colors // 若此資料夾已存在,就不用再建立

// 進到此網址,再到 colors 資料夾,點選 atom-dark.vim 檔案,再點 raw 按鈕。

// $ wget [網址],此例為:
$ wget https://raw.githubusercontent.com/gosukiwi/vim-atom-dark/master/colors/atom-dark.vim

 

編輯與移動

i:進入編輯模式,游標會停留在原來的位置。(insert)

a:進入編輯模式,游標會停留在原來位置的右邊。(append)

u:回覆上一次的編輯。

ctrl + r:回覆上一個按u的動作。

U:回覆最後一行的編輯。

ZZ:儲存並離開所編輯的文件。

o:在游標的下方新增一行,並進入編輯模式。

O:在游標的上方新增一行,並進入編輯模式。

:help<enter>:查閱文件。

ctrl + ]:在查閱文件時,看到|包起來的符號,代表是連結,可用”ctrl + ]”來進入看該指令的說明,例如:|:grep|。

ctrl + t:在查閱文件時,已進入連結,若要離開,即可使用”ctrl + t”。

:help x:查閱x指令的文件,x也可以換成其它要查詢的指令。

2k:代表要將游標往上移動2行。

3a!<Esc>:在游標後新增3個金嘆號。

3x:刪除3個字元。

w:游標往前移動一個單字,也可以在前面加數字,例如3w,可移動3個單字。

b:游標往回移動一個單字,也可以在前面加數字,例如3b,可往回移動3個單字。

$:將游標移動到該行的結尾,可加數字在前面,例如:2$,就是移到下面一行的結尾。

^或0:將游標移動到該行的開始。

f:游標所在該行的forward search,例如:fs,則會在該行往前停在有s的位置;可加數字,例如2fs,游標會停在第二個s的位置。

F:同上,但是是往回搜尋。

t:與f類似,但會停在所找到字元的前一個位置,例如ts:會往前找到s,並停留在前一個字元。

T:與t同,但是是往回搜尋該行。

G:若只打G,則會跳至最後一行的開始;若打2G,則會跳至第二行的開始。

ctrl+g:會顯示目前檔名、所在行數/共有幾行、百分比、所在為第幾個字元。

ctrl+u:往上捲動半個頁面。

ctrl+d:往下捲動半個頁面。

dd:刪除一整行,並行底下的所有行會往上移。

dw:刪除一個單字,含後面的空白。前面可加數字,例如:2dw。

d$:刪除目前游標所在這行的位置至這行的結尾。

cw:刪除游標所在位置至該單字的結尾,並進入編輯模式。

c$:刪除游標所在位置至該行的結尾,並進入編輯模式。

cc:刪除該行,並並進入編輯模式。

.:可以重覆執行最後刪除或更改的動作。

J:可以合併游標目前所在這行及下一行,且該行最後會加一個空格,以利區隔;若加入數字,例如3J,則會合併游標所在這行及下面2行。

ra:將游標目前所在位置的字元,取代為a,所以a可換為其它字元。5ra則可替換成5個a。

~:將大寫轉為小寫,或小寫轉為大寫。前面也可加數字。

 

 

:dig:可查詢特殊字元(或輸入:digraphs),在編輯模式下,輸入(ctrl+k)Eu,則可輸出€

:set nu 及 :set nonu:顯示行號 及 不顯示行號。(也可以是:set number 及 :set nonumber)

 

搜尋

/string:搜尋string這個字串,有分大小寫(可藉由:set ic來忽略大小寫)。搜尋完後,再按n可持續往下一個搜尋;或按N是往回搜尋,前面可加數字,例2n或2N。

?string:往回搜尋string這個字串,有分大小寫(可藉由:set ic來忽略大小寫)。其餘同上。

:set hlsearch:設定高亮度顯示搜尋結果。

:set nohlsearch:關閉高亮度顯示搜尋結果,若要再啟用,需再輸入:set hlsearch

:nohlsearch:關閉目前這次搜尋結果的高亮度顯示。

:set incsearch:在關鍵字邊輸入就邊顯示搜尋結果。

:set noincsearch:關閉”在關鍵字邊輸入就邊顯示搜尋結果”。

 

正規表達式(Regular Expression)

/^string:找出開頭是string的每一行。

/string$:找出結尾是string的每一行。

/c.o:找出com、company等字詞。若要找特殊字元,例如.那就使用\.來找出。

 

剪下、貼上、複製

p:可將使用d與x所刪除的內容,用p來貼上。例如按下dd、dw、x,再按下p,就會再度貼上。p即是put的意思。會將所貼的內容,貼至游標之後。前面可加數字,代表貼上幾次。

P:同p,但會將所貼的內容,貼至游標之前。前面可加數字,代表貼上幾次。

ma或mb:a跟b可為a~z的字母,代表將目前游標所在位置標示位置,位置名稱即為a~z。

:marks:顯示所有的marks。

`a:將標游移到mark為a的位置,所以也可以是`b、`c。

‘a:若是打單引號的話,會將游標移到mark為a的那行一開始處。

:marks a:只顯示mark為a的資訊。

d’a:將mark為a的那行到游標所在的位置,整個刪除。

 

:vi file2.txt:編輯另一個檔案,會跳離目前所在的這個檔案,若尚未儲存,會出現警告訊息,可使用:vi! file2.txt來強制離開目前此檔案,直接編輯file2.txt。

:view file2.txt:會以唯讀模式開始file2.txt,然後若想要編輯,則需強制儲存,輸入:w!

 

編輯多個檔案

vim file.txt file2.txt file3.txt:下該指令,可同時編輯這3個檔案。

:next:可進入到下個檔案,使用:next!可強制儲存目前所要離開的檔案。也可使用:2next直接往下進入後面第2個檔案。

:set autowrite:開啟自動儲存功能。

:set noautowrite:關閉自動儲存功能。

:previous或:Next:可往回編輯上一個檔案。

:args:可顯示目前用vim所開啟的檔案,並用中括號顯示目前所編輯的該檔。

:rewind或:first:無論你在編輯哪一個檔案,可跳回至第1個檔案。

:last:無論你在編輯哪一個檔案,可跳至最後一個檔案。

 

視窗(Windows)

:split:分割視窗,會開啟同一個檔案。

ctrl+ww:可讓游標切換視窗。

ctrl+wj:可讓游標往下切換視窗。

ctrl+wk:可讓游標往上切換視窗。

:q:類閉目前視窗。

:split file2.txt:分割視窗,會開啟file2.txt這個檔案。

:5split file2.txt:分割視窗,會開啟file2.txt這個檔案,並設定只顯示5行的高度。

:new:一樣是分割視窗,但會是開啟新的檔案來編輯。

:sview file2.txt:分割視窗,會以唯讀方式來開啟file2.txt檔案。

ctrl + n:水平平割視窗。

ctrl + v:垂直分割視窗。

5ctrl+w,-:按數字5,接著按ctrl+w,然後按-,可將目前視窗縮小5列的高度。(注意:ctrl+w按完後要放開,才接著按-)。

5ctrl+w,+:按數字5,接著按ctrl+w,然後按+,可將目前視窗增高5列的高度。(注意:ctrl+w按完後要放開,才接著按+)。

5ctrl+w,=:按數字5,接著按ctrl+w,然後按=,可將目前視窗分均分配。(注意:ctrl+w按完後要放開,才接著按=)。

 

Basic Visual Mode

v:直接進入visual mode模式。此時按上下左右都會框選起來,若再按d,就會將所框選起來的這些行都刪除。按下Esc可離開visual mode模式。

V:會進入line visual mode模式,但游標所經過的,都會是以整行來框選。按下Esc可離開visual mode模式。

ctrl + v:會進入block visual mode模式,但游標所經過的,都會是以區塊的方式來框選。按下Esc可離開visual mode模式。

d:在visual mode下,按d可刪除所框選的字。

D:在visual mode下,按D可刪除所框選的那些行。即使該行只有部份字被框選,一樣會刪除整行。

y:在visual mode下,複製所框選的字。

Y:在visual mode下,複製所框選的整行。

c:在visual mode下,使用c可以刪除所框選的字,並進入insert mode下。

C:在visual mode下,使用C可以刪除所框選的字的所有行,並進入insert mode下。

J:在visual mode下,使用J可以合併所框選的行,並以空白來做區隔。

gJ:在visual mode下,使用gJ可以合併所框選的行,但並不會以空白來做區隔。

Istring<Esc>:進入block visual mode後,用游標框選任何區塊後,按Istring<Esc>,就會在每一行插入string文字。

cstring<Esc>:進入block visual mode後,用游標框選任何區塊後,按c會刪除所框選的區塊,再按任何想要輸入的string,再按<Esc>,則會在每一行輸入string

Cstring<Esc>:進入block visual mode後,用游標框選任何區塊後,按C會刪除所框選的區塊至行末,再按任何想要輸入的string,再按<Esc>,則會在每一行輸入string

Astring<Esc>:進入block visual mode後,用游標框選任何區塊後,按A再按任何想要輸入的string,再按<Esc>,則會在所框選的範圍內後面輸入string

rstring:在block visual mode下,按rstring,所有被框選的範圍內,都會被取代成為string字串。

>:可讓所框選的文字向右位移,預設是8個空格。可藉由:set shiftwidth=2來重新設定位移的空格數。

<:可讓所框選的文字向左位移,預設是8個空可藉由:set shiftwidth=2來重新設定位移的空格數。

 

程式設計師常用的指令

:set background?:可以查詢目前背景所用的是dark還是light模式,可使用:set background=dark或:set background=light來指定。

:set filetype?:查詢目前顏色的類型是什麼,可用:set filetype=php來指定該檔為php類型的檔案。vim預設會用副檔名來判斷是何種類型。

>>:向右位移,預設是8個空白。可使用:set shiftwidth=2來更新預設值。

<<:向左位移,預設是8個空白。可使用:set shiftwidth=2來更新預設值。

5>>:指定5行一起向右位移。

5<<:指定5行一起向左位移。

:set cindent:可以再{}內自動縮排。視需求也可以是:set smartindent或:set autoindent

==:讓目前這行自動縮排,2==讓目前這行及下一行自動縮排,很好用。因為會自動偵測要內縮還是外縮,會自動跑到適當位置。也可以在visual mode模式下,按一個=即可。

gd或gD:搜尋目前所在位置的單字。

%:可以在{}、[]、()、/*…*/之間,直接在區塊頭尾之間跳動。

 

關於 ~/.vimrc

// 編輯程式碼時,可以讓文字以亮色顯示。
set background=dark

// 顯示行號
set nu

// 不要顯示行號
set nonu