工具使用

[工具使用]Vim的使用

在UNIX系統下,因為通常沒有甚麼圖形化的介面,所以要coding或者打字最常用的就是內建的vim或是nano了,而普遍大家愛用的是畫面簡潔的vim,然而vim有許多的指令和設定,為了讓大家快速上手與方便回顧,在下面整理了一些常用到的指令

    以下指令皆在指令模式下輸入(在插入模式下按ESC)
    若想要取消,則在項目前面加上no
    Ex. 取消行號 → :set nonumber

  • 設定行號
  • :set number:set nu

  • 自動縮排
  • :set autoindent:set ai 此設定可讓下一行的游標位置與此行相同
    :set cindent shiftwidth=n 此設定可在輸入左大括號後的下一行多向右n個space,並在輸入右大括號後向左移n格

  • highlight游標所在的那一行
  • :set cursorline

  • 啟用滑鼠
  • :set mouse=a
    接著就可以使用滑鼠移動游標或是選取文字區塊

  • 自動切換到當前目錄
  • :set autochdir

  • 向下移動n行
  • n + Enter
    Ex. 向下移動10行 → 10 + Enter

  • 移動到第n行
  • n + G
    Ex. 移動到第10行 → 10 + G

  • 至檔案最前端
  • gg

  • 至檔案最尾端
  • G

  • 復原
  • u

  • 刪除游標所在的該行
  • dd

  • 刪除包含游標該行以下n行
  • ndd
    Ex.刪除5行 -> 5dd

  • 複製游標所在的該行
  • yy

  • 複製包含游標該行以下n行
  • nyy
    Ex.複製5行 -> 5yy

  • 貼上
  • p

  • 於游標所在的位置往下插入一行,並進入編輯模式
  • o

  • 於游標所在的位置往上插入一行,並進入編輯模式
  • O

  • 捲動時保留n行
  • :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)

  • Smart Home鍵
  • 可在.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
  • 將兩個或多個檔案在同一視窗中並列
  • 在開啟一個檔案之後,若想要兩個視窗垂直並列,打上: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

Advertisements

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s