Vim使用指南

堅強的女程式設計師發表於2018-03-23

前言

其實我原來是資深的notepad++使用者,之前也接觸過vim等編輯器,也曾下決心學習過,但是由於使用的習慣問題,最終都是沒有去熟練。
這次再度學習vim的使用,也是因為由於需要常常在linux下進行文字編輯(我已經厭倦了windows下編輯,然後再到linux下執行了,這樣確實比較麻煩),因此我又重新拾起vim這款編輯器。再次我也做了些筆記,特此和大家分享。

常用命令

以下是我自己在學習的時候整理的筆記,我建議大家可以去下載一個vim命令中文手冊.pdf

i 是插入
a 是追加
R 進入替換模式
vim -R file 以只讀方式開啟
view file 只讀
o 是在當前行的下一行 另起一行 並設定為insert模式
O 實在當前行的上面 另起一行 並設定為insert模式
x 刪除單個字元
X 刪除前一個字元
D 刪除當前字元到結尾
dd 刪除一行
dw 刪除一個word
d4w 刪除4word
dG 刪除當前行至檔案尾的內容
dgg 刪除當前行至檔案頭的內容

x 代表dl(刪除當前游標下的字元)
X 代表dh(刪除當前游標左邊的字元)
D 代表d$(刪除到行尾的內容)
C 代表c$(修改到行尾的內容)
s 代表cl(修改一個字元)
S 代表cc(修改一整行)

daw 刪除當前單詞 aw是一個文字物件
p 取回被刪除的內容,在當前游標位置恢復 P
xp 常用來交換兩個字元
y 複製 yy 複製整行 Y 複製整行
使用剪下板:
"*yy 將一行內容複製到剪下板
"*p 將一行內容從剪下板貼上
c 改變文字 同d類似 也可以接一些移位的操作符
r 替換單個字元
J 刪除當前行的換行符
u 撤銷上次的操作
ctrl R 用於撤銷 上次撤銷所做的操作
w 向前移動一個word
b 向後移動一個word
e 向後移動並將游標位於word的最後一個字母上
ge 向前移動並且游標位於最後一個字母上
^ 移動到字母開頭 
0 移動到字元的最前面
$ 移動到行尾
一個命令的大寫字母往往會做相同的事情但是方向相反
gg 跳轉到第一行
numG 跳轉到指定行
% 自動跳轉到匹配({[處
M 跳轉到中間位置
H  跳轉到開頭
L  跳轉到末尾
ctrl G 檢視當前行的資訊  
:set number 顯示行號  :set nonumber 不顯示行號
:set ruler 用於顯示當前游標位置
:set ignorecase 忽略大小寫
:set hlsearch 在匹配時顯示語法高亮
:marks 顯示所有的mark標記
:set backup 備份檔案
:set backupext=.bak 備份時的檔名
zz 將當前行置於螢幕正中央
zt 將當前行置於螢幕頂b端
zb 將當前行置於底端
/string 進行字串查詢   使用n可以在不同string間切換  N為向前
?string 為反向查詢
直接在word上 使用* 則可以匹配對應的字串 # 也是類似
/ \<the\>用來精確匹配字串
`` 可以在兩次跳轉將來回切換
ctrl O 可以往回跳
ctrl I 可以往前跳 Tab 命令功能相同
:jumps 會列出歷史跳轉記錄
m<> mark一個標記  可以使用`mark 來進行跳轉移動到下標記的位置  或者是 'mark 移動到行首
ZZ  儲存更改
:q! 丟棄所有更改 並退出
:e! 放棄所有更改,並重新載入檔案進行編輯
v 進入可視模式,這裡主要進行選擇操作
:saveas move.c 將當前檔案 另存為
:w儲存
:split 分割視窗
:close 關閉當前視窗
:only 關閉除當前視窗外的其它視窗
:vsplit 左右分割視窗
:qall 關閉所有視窗
:wall 儲存所有視窗中的修改
ctrl W 進行多個視窗間切換  由於和cmder的hotkey衝突 所以可以用ctrl shift w 進行替換 效果一樣
vimdiff file1 file2 可以檢視兩個檔案的不同
vim -r file 進行交換檔案恢復

配置

.vimrc
"去掉vi的一致性"
set nocompatible
"顯示行號"
set number
" 隱藏滾動條"
set guioptions-=r
set guioptions-=L
set guioptions-=b
"隱藏頂部標籤欄"
set showtabline=0
"設定字型"
set guifont=Monaco:h13
syntax on "開啟語法高亮"
let g:solarized_termcolors=256 "solarized主題設定在終端下的設定"
set background=dark "設定背景色"
colorscheme solarized
set nowrap "設定不折行"
set fileformat=unix "設定以unix的格式儲存檔案"
set cindent "設定C樣式的縮排格式"
set tabstop=4 "設定table長度"
set shiftwidth=4 "同上"
set showmatch "顯示匹配的括號"
set scrolloff=5 "距離頂部和底部5行"
set laststatus=2 "命令列為兩行"
set fenc=utf-8 "檔案編碼"
set backspace=2
set mouse=a "啟用滑鼠"
set selection=exclusive
set selectmode=mouse,key
set matchtime=5
set ignorecase "忽略大小寫"
set incsearch
set hlsearch "高亮搜尋項"
set noexpandtab "不允許擴充套件table"
set whichwrap+=<,>,h,l
set autoread
set cursorline "突出顯示當前行"
set cursorcolumn "突出顯示當前列"

set showcmd

總結

我感覺vim畢竟是一個文字編輯器,如果想要熟練使用就必須經常用。