1.開啟檔案
vim filename 直接使用vim命令開啟乙個檔案。
q! / quit! 強制退出
zz 儲存檔案為常規的unix檔案
ls 列舉出當前目錄下的檔案
w 寫入檔案,但是不退出vim
wq 寫入檔案並離開vim,與zz類似
e! / q! 退出vim編輯器,不儲存編輯結果
w! filename 強制覆蓋現有檔案
!rm filename 刪除檔案
2. 移動游標
h, j, k, l
對應與向左移動乙個字元,向下移動一行,向上移動一行,向右移動乙個字元。
0 移到一行的開頭
$ 移到一行的結尾
w / b 移動乙個單詞,向後/向前
g 移動到乙個特定的行,1g 移動到第一行
+ 下一行的第乙個字元
- 上一行的第乙個字元
e / e 到單詞的結尾
vim的移動命令
ctrl+end 移動到檔案的末端
ctrl+home 移動到檔案的第一行,第乙個非空字元
count% 移動到檔案%n的地方,50% 移動到檔案的中間位置
4. 編輯命令
i 表示插入,在游標當前位置開始插入
a 表示追加,在當前游標之後的乙個位置開始
c 表示更改,
d 表示刪除,
a 在一行的結尾處附加文字
i 在一行的開頭處插入文字
o 在游標所在位置的下一行開啟新行
o 在游標的上一行開啟新行
s 刪除游標所在位置的字元後,再替換文字
s 刪除一整行後,再替換文字
r 用新的字元覆蓋現有的字元
c 命令:
cw 從游標到這個單詞結尾,修改
c2b 從游標往前的兩個單詞
c$ / c 從游標到行結尾
c0 從游標到行的開頭
cc 會將一整行換成任何輸入的文字。它刪除原來的行。
r 修改當前的字元,修改後直接回到命令列模式
修改字元,如將|| 替換為 && 可以輸入 2r&
r 進入整行的覆蓋模式,直到按esc為止
s 修改幾個字元 3s 刪除當前游標及之後兩個字元,進入插入模式
s 刪除整行,並在行其實位置進入插入模式
~ 將當前的文字變為大寫
dw 刪除游標到本單詞的結尾處
dd 刪除當前行 2dd 刪除兩整行
db 刪除游標到單詞開始處
d$ / d0 刪除游標到行末/行起始位置
d 刪除游標到行的結束所有的內容
x 刪除乙個字元 3x 刪除三個字元
u 只會撤銷最近一次命令
p 恢復最近幾次的刪除動作,vim儲存了最近9次的動作 3p
恢復緩衝區的第三個
複製、剪下與貼上:
dd 刪除一整行,p 將刪除的行貼上到游標所在行的下一行
x p 可以將兩個字元對調
y 複製命令 yw複製乙個單詞,y$複製游標到行末 4yy 複製4行內容
y 和yy的功能相同(d,c的功能和 dd,cc功能不同)
. 用於重複上一條命令
j 用於將當前行 和下一行 合併
[++
注釋:(command)(number)(text object)
或者相等的模式
(number)(command)(text object)
命令+數字+文字物件
3k 向上移動三行 / d3 刪除當前行及其之後兩行,共三行
--]5. 高階移動命令
滾動:ctrl+f 往前滾動一整屏
ctrl+b 往後滾動一整屏
ctrl+d 往前滾動半螢幕
ctrl+u 往後滾動半螢幕
z enter
將游標移動到螢幕頂端,並滾動螢幕
z .
將游標移動到螢幕中心,並滾動螢幕
z -
將游標移動到螢幕底端,並滾動螢幕
200z enter 會將200行移動到螢幕頂端
h 移動到螢幕頂端的行
m 移動到螢幕**的行
l 移動到螢幕底端的行
nh 移動到螢幕往下的第n行
nl 移動到螢幕底端網上的第n行
enter 移動到下一行的其實位置
+ 移動到下一行的第乙個字元
- 移動到上一行的第乙個字元
^ 移動到當前行的第乙個非空格處
n| 移動到當前行的第n列
e 移動到單詞的結尾
e 移動到單詞的結尾,忽略標點符號
( 移動到當前句子的開頭
) 移動到下乙個句子開頭
移到下一段的開頭
[[ 移到本節的開頭
]] 移到下節的開頭
搜尋:/ 搜尋命令,向後搜尋,/pattern pattern可以是乙個完整單詞,或字串
? 向前搜尋,用法和 / 相同
n 向同乙個方向重複搜尋
n 向相反的方向重複搜尋
/enter 往前重複搜尋
?enter 往後重複搜尋
g(轉至)命令
100g 轉到文字的一百行。
`` 回到移動前的位置
'' 回到移動前位置所在行,行首位置
6. :set option 命令
:set all 列舉出所有的選項
:set autoindent 設定自動縮排縮排
:set shiftwidth=4 設定shiftwidth與製表符 tabstop 距離相同
:set tabstop=4 設定製表符 tab為4個字元
set nu
設定行號
set wm / wrapmargin 設定自動換行的寬度
7. 程式設計
特殊的搜尋命令:
( [ ) 上,輸入zf%,將其中的內容摺疊。
zfgg 將游標到檔案開始處的內容摺疊。
自動智慧型縮排:
:set cindent 可以理解c語法,
關鍵字補全:
:help compl -generic / :help 'complete' / :help ins-completion
調出自動補全的功能。
ctrl-n ctrl-p 在當前緩衝區 查詢以游標前關鍵字開始的單詞。
ctrl-x ctrl-l 整行補全
ctrl-x ctrl-n 根據當前檔案裡關鍵字補全
ctrl-x ctrl-k 根據字典補全
ctrl-x ctrl-t 根據同義詞字典補全
ctrl-x ctrl-i 標頭檔案內關鍵補全
ctrl-x ctrl-j 根據標籤補全
ctrl-x ctrl-f 補全檔名
ctrl-x ctrl-d 補全巨集定義
ctrl-x ctrl-o 呼叫omnifunc定義的函式
在全能補全中,ctrl-x / ctrl-n 用於選擇。不需要回車。
ctrl-x ctrl-u 呼叫completefunc定義的函式
:imap tab
將tab對映為補全鍵。在tab鍵前後輸入ctrl+v就可以輸入tab鍵了。
語法的高亮:
:syntax enable
:syntax on
:highlight comment 以高亮顯示乙個單詞
8.vim多視窗的功能
vim -o file1 file2 -o 命令指明使用多視窗的方式開啟兩個檔案
-o 後新增數字, vim -o5 file1 file2 將vim分割為5個視窗,前兩個開啟檔案
:split 建立新的視窗(水平分割),兩個視窗均顯示相同的檔案內容
:vsplit 建立垂直分割的視窗
:split otherfile 則在新的視窗中開啟 otherfile
:[n]split [++opt] [+cmd] [file]
完整的split命令形式
n 為vim指定新視窗顯示的行數
opt 為vim新視窗傳遞選項資訊 前面要加兩個 加號
cmd 傳入欲在新視窗中執行的命令,前面必須加乙個加號
file 在新視窗中編輯的檔案
new / vnew 命令與split / vsplit含義類似
sview filename 新建視窗以唯讀方式 開啟檔案
sfind [++opt] [+cmd] filename 搜尋檔案,找到則建立新視窗開啟檔案
視窗之間切換:
ctrl+w down / ctrl+w j 切換到下乙個視窗
ctrl+w up / ctrl+w k 切換到上乙個視窗
ctrl+w left / ctrl+w h 切換到當前視窗的左邊視窗
ctrl+w right / ctrl+w l切換到當前視窗右邊的視窗
ctrl+w t / ctrl+w ctrl+t 切換到左上角的視窗
ctrl+w b / ctrl+w ctrl+b 切換到右上角的視窗
ctrl+w 在視窗之間切換
ctrl+w p 移動到前乙個訪問視窗
ctrl+w r 向右或向下方輪換視窗,ctrl+w r,輪換方向相反。
(注意這個不是在視窗之間切換,而是移動視窗位置)
ctrl+w x 向右或向下方輪換視窗,ctrl+w x,輪換方向相反。
建立多個分頁,tab。
:tabnew filename
在新的分頁開啟並編輯新檔案,不指定檔案則開啟乙個空的tab。
:tabclose 關閉當前的分頁
:tabonly 關閉其他的所有分頁,除非檔案被修改了,沒有設定 autowrite。
quit 離開視窗
close 關閉視窗
hide 隱藏視窗
vim學習筆記
首先安裝vim,接著進行最基本命令的聯絡。在命令列模式下輸入 vimtutor 會開啟乙個文件,按照文件上的步驟進行最基本的使用練習。1 檢視文件編碼 開啟乙個在windows下的文字時中文顯示亂碼,於是網上搜了一下,首先是檢視編碼 set fileencoding 2 查詢替換 s aaa bbb...
vim學習筆記
江湖傳說linux下最強的編輯器emacs與vim一直相持不下,很難分辨誰強誰弱,但對於個人來說最強大並不表示最適合,選擇一款適合自己的編輯器,才是硬道理。所以本人選擇了vim。學習vim之前先要有個心理準備。為什麼?網上有個主流文字編輯器的學習曲線,知道vim的曲線是怎麼樣的嗎?請看下圖。陡峭的學...
VIM學習筆記
using vim 2003 02 15 tips in programing quickly find the object cfile clist clist cccc nr cnext cprevious cfirst clast crewind about indent set autoin...