在UNIX系統下,因為通常沒有甚麼圖形化的介面,所以要coding或者打字最常用的就是內建的vim或是nano了,而普遍大家愛用的是畫面簡潔的vim,然而vim有許多的指令和設定,為了讓大家快速上手與方便回顧,在下面整理了一些常用到的指令
-
以下指令皆在指令模式下輸入(在插入模式下按
- 設定行號
- 自動縮排
- highlight游標所在的那一行
- 啟用滑鼠
- 自動切換到當前目錄
- 向下移動n行
- 移動到第n行
- 至檔案最前端
- 至檔案最尾端
- 復原
- 刪除游標所在的該行
- 刪除包含游標該行以下n行
- 複製游標所在的該行
- 複製包含游標該行以下n行
- 貼上
- 於游標所在的位置往下插入一行,並進入編輯模式
- 於游標所在的位置往上插入一行,並進入編輯模式
- 捲動時保留n行
- 選取文字區塊
- 搜尋檔案內的特定字詞
- 多行同時縮排
- 對整個檔案進行縮排
- 自動補齊
- 多行註解
- 多行取消註解
- Smart Home鍵
ESC
)若想要取消,則在項目前面加上
no
Ex. 取消行號 →
:set nonumber
:set number
或:set nu
:set autoindent
或:set ai
此設定可讓下一行的游標位置與此行相同
:set cindent shiftwidth=n
此設定可在輸入左大括號後的下一行多向右n個space,並在輸入右大括號後向左移n格
:set cursorline
:set mouse=a
接著就可以使用滑鼠移動游標或是選取文字區塊
:set autochdir
n + Enter
Ex. 向下移動10行 → 10 + Enter
n + G
Ex. 移動到第10行 → 10 + G
gg
G
u
dd
ndd
Ex.刪除5行 -> 5dd
yy
nyy
Ex.複製5行 -> 5yy
p
o
O
:set scrolloff=n
Ex. 捲動時保留3行 → :set scrolloff=3
v
只選取游標經過的位置
V
選取游標經過的所有行
可以配合刪除和複製的指令,選取完成後按下y
複製,按下d
刪除
然而刪除其實是放到剪貼簿中,可以使用刪除、貼上的指令順序達成剪下的效果
/PHRASE
Ex.在檔案內搜尋Apple -> /Apple
搜尋到第一個結果後打上 *
可跳至下一個符合項目
打上 #
可跳至上一個符合項目
選取好要縮排的區塊後,打上 >
(向右) 或 <
(向左) 就可以對多行同時縮排
若只要對其中一行進行縮排,則將由標移動該行後打上 >>
或 <<
即可
至於要縮幾層,可以在按下<
或>
前,先打上數字
Ex. 想要將某行或某區塊往左縮排三層,則在選取完以後打上 3<
先設定一個縮排的長度 → :set cindent shiftwidth=2
(2可以替換成想要的數字)
之後選擇整個檔案,用gg
至文件首,按下V
選取,再用G
到文件末
最後按下=
就完成了
在輸入模式(Insert mode)中輸入Ctrl + N
vim會在檔案中找尋相關的字詞,並提示給使用者詢問是否是要補齊此字詞
在想要註解的第一行,按下Ctrl + V
將想要註解的部份的第一列框起來後,按下大寫I
此時游標會跳回第一行,接著打上註解的符號(Ex.#, //…)
最後再按下ESC
(記得要按喔)
在想要取消註解的第一行,按下Ctrl + V
將註解的部分框起來,按下delete即可(不需要按下大寫I
)
可在.vimrc中新增下面兩行
noremap <expr> <silent> <Home> col('.') == match(getline('.'),'\S')+1 ? '0' : '^' imap <silent> <Home> <C-O><Home>
-
就可在insert mode中按下Home鍵跳到該行最前面非空白的字元,再按一下跳到該行最前面
- 每次開啟時,移動到上次離開的位置
if has("autocmd") au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif endif
-
如果上面的方式沒有辦法成功的話,需要修改.viminfo的權限
sudo chown user:group ~/.viminfo
- 將兩個或多個檔案在同一視窗中並列
- 更改背景、程式碼、註解的顏色
在開啟一個檔案之後,若想要兩個視窗垂直並列,打上:vsplit FILENAME
Ex.:vsplit ~/Examples/Test.c
水平並列則是 :split FILENAME
若是要新增一個新的檔案在原本檔案的旁邊
水平::new
垂直::vnew
游標可以在兩個檔案之間作移動
按下Ctrl + w + 方向
(上:j,下:k,左:h,右:l,或者是直接使用鍵盤上的方向鍵,另外,可以先按下Ctrl + w
再按下方向鍵,不需要全部同時一起按下)
Ex.游標現在在右邊的檔案中,想要將游標移至左邊的檔案,就打上Ctrl + w + h
看個人喜好,會想要有不同的背景顏色和字體顏色,但vim裡面的:set background={light, dark}
只會告訴vim目前的背景顏色以改變字體顏色,所以得要用highlight來修改
更改背景::highlight Normal ctermbg=COLOR
更改預設程式碼顏色::highlight Normal ctermfg=COLOR
更改註解顏色::highlight Comment ctermfg=COLOR
其中COLOR可以替換成black、white、blue、darkblue、grey、darkgrey、brown、cyan等基本常見的顏色
若是覺得,每次打開vim都要設定以上這些太麻煩,可以將這些設定打成一個設定檔,之後每次打開vim都會自動設定好
於自己的目錄下創建.vimrc (i.e. vim ~/.vimrc
),並在檔案裏面打上想要的設定(不需要打冒號)
Ex.
set ai set nu set mouse=a
若同一帳號有不只一位使用者使用,每個人的設定都不一樣,可以自行另外製作一個設定檔,並在打開vim後,輸入:so PATH_TO_FILE
就可以將設定引入
假設現今自己製作了一個設定檔,名為.myVimrc
,放在~/
中,若要引入設定就打上
:so ~/.myVimrc
其實vim除了以上這些基本的指令以外,還尚有很多很好用的套件,倘若覺得自己設定這些太過於麻煩,可以去下載別人寫好的.vimrc,並安裝相關的套件就可以輕鬆上手
底下附上我自己覺得還不錯的.vimrc的連結
tmiss/vimconf
基本上只要按照該網頁中Installation的指示clone下來並link到~/.vimrc就行
之後打開vim,輸入 :PluginInstall 就會自動安裝完成所有需要的套件了
倘若在gnu screen中vim的顏色不同的話,可以試著在.screenrc中加上
attrcolor b ".I" # allow bold colors - necessary for some reason termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm' # tell screen how to set colors. AB = background, AF=foreground defbce on # use current bg color for erased chars
Reference :
給程式設計師的Vim入門圖解說明
凍仁的筆記: Vim 環境設定 – vimrc
tmiss/vimconf
Using GNU Screen with 256 colors