Vim 編輯器 初級班

2021-03-31 14:36:31 字數 3921 閱讀 1523

本文約定:

# 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...