本文約定:
# vim 表示在 shell 下輸入 vim
大寫字母如 a 表示鍵入shift+a
^g 表示 ctrl+g
:x 表示在命令模式鍵入'冒號'與x
普通命令如 i 都是在命令模式鍵入直接響應
【幫助】
:help
(幫助我還不大會使用,以後補上 :)
【命令模式與插入模式】
vim 剛開啟時處於命令模式,此時任何輸入被解釋為命令。
要進入插入模式, 輸入 i 命令(插入模式在後面詳細說明)
開啟:# vim 開啟乙個新的編輯
# vim file 開啟 file
# vim +n file 開啟 file 並將將游標移動到第n行
# vim +/word file 開啟 file 並定位於word第一次出現處
退出:在命令模式下鍵入
:q 退出
:q! 強制退出(丟失修改)
:w 儲存
:w! 強制寫入
:w file 儲存為file
:x 儲存並退出, 等效命令為 :wq
讀入檔案:
:r file 讀入file
:nr file 讀入file放入第n行之後
在文字中移動:
h = 前, j = 下, k = 上, l = 後。 (也可在命令前加數字,如 3h 為前移3格)
(tips: vim 許多命令可以在前面加上數字來表示執行次數,試試看哦)
g 跳到檔案尾
ng 跳到第n行 (同命令 :n)
^g 顯示行號
0或^ 跳到行首
$ 跳到行尾
w 跳到下個單詞首字元
e 跳到下個單詞尾字元
b 跳到前乙個單詞首字元
- 跳到上一行行首
+ 跳到下一行行首
n| 跳到當前行第n列
l 跳到本頁最後一行行首
m 跳到本頁中間一行行首
h 跳到本頁首行行首
游標定位:
f$ 跳至本行下乙個 $ 處
f$ 跳至本行前乙個 $ 處
t$ 跳至本行下乙個 $ 前乙個字元
t$ 跳至本行前乙個 $ 後乙個字元
顯示調整:(游標自動做相應移位)
^d 下翻半頁
^u 上翻半頁
^f 下翻一頁
^b 上翻一頁
顯示設定:(幾個常用的)
:set number 顯示行號
:set showmode 顯示當前模式
:set showmatch 指示匹配括號
:set autoindent 自動縮排
:set tabstop=value 設定 tab 寬度,預設是8
插入模式:
i 在當前字元前插入 (試試看 4i hello 的效果 :)
i 在行首插入
a 在當前字元後插入
a 在行末插入
o 在下插入新行
o 在上插入新行
j 把下一行併入當前行
刪除(剪下):
x 刪除當前字元
x 刪除前乙個字元
dw 刪除當前字元所在單詞包括詞尾空格(只刪除游標後的部分)
dd 刪除當前行
d$ 刪除當前字元到本行尾 (同命令 d)
:m,n d 刪除 m~n行
:nd 刪除第n行
修改:r 從當前字元開始改寫
cw 修改當前單詞 (從當前字元開始修改)
s 修改當前字元
r 修改當前字元(只修改乙個字元)
s 修改當前行 (同命令 cc)
c 修改從當前字元到行尾的內容
c + 任何游標定位命令,修改目標內容, 如 cfa 修改當前字元到下乙個 a 間的內容
undo:
u 撤銷前一步操作(此命令在各種系統實現有所不同,在我使用的freebsd 4.11上功能同windows下撤銷)
u 撤銷本行所有操作
redo:
^r 重做前次 undo 的操作 (同 :redo)
查詢::/word 向下查詢word
:?word 向上查詢word
n 以當前查詢方向同向查詢下乙個word
n 以當前查詢方向反向查詢下乙個word
例: :?love 查詢游標前出現的第乙個love,按 n 查詢
更前乙個love。
% 查詢匹配的括號(程式設計師最愛啊)
替換::s/src/dst 將本行搜尋到的第乙個 src 替換為 dst
:%s/src/dst 將全文所有的 src 替換為 dst
:s/src/dst/g 將本行的 src 替換為 dst
:$,$... s/src/dst/g 在指定範圍內替換src為dst,其中
$,$... 為指定行號,例: :2,5,6 s/hi/hello/g
複製與貼上:
yy 複製當前行
yw 複製單詞(從當前字元開始複製)
y + 游標定位命令,複製目標內容,如 yfa
任何刪除命令刪除的內容都在buffer中,可以進行貼上。
p 在前貼上
p 在後貼上
注意:在以行為單位貼上時與字元是不同的
:m,n copy x 將m~n行內容複製到 x 行之後 #copy可以簡寫為cp
:m,n move x 將m~n行內容移動到 x 行之後 #move可以簡寫為mo
對映,縮寫和標記:
m$ 用$字母標記當前行
'$ 跳到 $ 標記的行
:map $ ***mand 將***mand命令或鍵對映到$
:ab $ char-string 給char-string乙個縮寫$,在文字中插入$會自動展開
在vim中執行shell命令:
:! ***mand 如:
:! ls
:! tcsh
:! gcc test.c 直接編譯編輯的內容(要先儲存)
左神初級班 (二)
實現一種狗貓佇列的結構,要求如下 使用者可以呼叫add方法將cat類或dog類的例項放入佇列中 使用者可以呼叫pollall方法,將佇列中所有的例項按照進佇列的先後順序依次彈出 使用者可以呼叫polldog方法,將佇列中dog類的例項按照進佇列的先後順序依次彈出 使用者可以呼叫pollcat方法,將...
牛客初級班 矩陣
此類問題一般是矩陣的花式列印,只要注意不要糾結於位置的變化,巨集觀思考就可以得出簡潔的 這個問題不要想著索引怎麼變化。比如列印最外圈一行 到 最右面的列結束,列印最外圈一列到最下面的行結束 所以說只要記錄左上角和右下角兩個點就能控制列印一圈矩陣,不用考慮變化問題了 特殊情況要考慮只有一行和一列的情況...
vim編輯器 編輯器之神
h 向左移動 j 向下移動 k 向上移動 l 向右移動 w 移動到下乙個單詞的首部 e 移動到下乙個單詞的尾部 b 移動到上乙個單詞的首部 移動到行首 移動到行尾 g 跳轉到文件的末尾 gg 跳轉到文件的開始複製操作 複製n行 nyy 2yy 移動游標到要寫入的位置,再按p 刪除操作 刪除多行 nd...