初窺VIM

VIM的幾種模式


1.編輯模式(主模式)

</p>在終端中輸入:vim [filePath] 就會就會進(jìn)入編輯模式,也就是vim的主模式饿悬,其他模式都是從編輯模式切換。
在編輯模式下可以用ZZ 命令退出Vim編輯程序,該命令保存對正文所作的修改豆励,覆蓋原始文件
編輯模式下的基本操作:

  • 移動
 h                 左移
 j                 下行
k                 上行
l                 右移
ctrl+f            上一頁
ctrl+b           下一頁
gg                將光標(biāo)定位到文件第一行起始位置烟央;
G                將光標(biāo)定位到文件最后一行起始位置统诺;
NG或Ngg           將光標(biāo)定位到第 N 行的起始位置。
//大寫疑俭、H和L命令還可以加數(shù)字:2H表示將光標(biāo)移到屏幕的第2行粮呢、3L 表示將光標(biāo)移到屏幕的倒數(shù)第3行。
H                將光標(biāo)移到屏幕上的起始行(或最上行)钞艇;
M                將光標(biāo)移到屏幕中間啄寡;
L                將光標(biāo)移到屏幕最后一行。
//行內(nèi)移動光標(biāo)
w                右移光標(biāo)到下一個字的開頭哩照;
e                右移光標(biāo)到一個字的末尾挺物;
b                左移光標(biāo)到前一個字的開頭;
0                數(shù)字0葡秒,左移光標(biāo)到本行的開始姻乓;
$                右移光標(biāo)嵌溢,到本行的末尾;
^                移動光標(biāo)蹋岩,到本行的第一個非空字符赖草。
  • 搜索
fa         到下一個為 a 的字符處,你也可以fs到下一個為s的字符剪个。
t,         到逗號前的第一個字符秧骑。逗號可以變成其它字符。
3fa        在當(dāng)前行查找第三個出現(xiàn)的 a扣囊。
/str1      正向搜索字符串 str1袱贮;
n          繼續(xù)搜索脖隶,找出 str1 字符串下次出現(xiàn)的位置敏释;
N          繼續(xù)搜索癣疟,找出 str1 字符串上一次出現(xiàn)的位置;
?str2      反向搜索字符串 str2 惕虑。
  • 復(fù)制粘貼
yy              復(fù)制當(dāng)前行到內(nèi)存緩沖區(qū)坟冲;
nyy             復(fù)制 n 行內(nèi)容到內(nèi)存緩沖區(qū);
5yy             復(fù)制 5 行內(nèi)容到內(nèi)存緩沖區(qū)溃蔫;
“+y             復(fù)制 1 行到操作系統(tǒng)的粘貼板健提;
“+nyy           復(fù)制 n 行到操作系統(tǒng)的粘貼板。
p               小寫字母 p伟叛,將緩沖區(qū)的內(nèi)容粘貼到光標(biāo)的后面私痹;
P               大寫字母 P,將緩沖區(qū)的內(nèi)容粘貼到光標(biāo)的前面统刮。
  • 撤銷重復(fù)
u               撤消前一條命令的結(jié)果紊遵;
.               重復(fù)最后一條修改正文的命令。
  • 替換刪除
    <pre>
    s 用輸入的正文替換光標(biāo)所指向的字符侥蒙;
    ns 用輸入的正文替換光標(biāo)右側(cè) n 個字符癞蚕;
    cw 用輸入的正文替換光標(biāo)右側(cè)的字;
    cW 用輸入的正文替換從光標(biāo)到行尾的所有字符(同 c$ )辉哥;
    ncw 用輸入的正文替換光標(biāo)右側(cè)的 n 個字;
    cb 用輸入的正文替換光標(biāo)左側(cè)的字攒射;
    ncb 用輸入的正文替換光標(biāo)左側(cè)的 n 個字醋旦;
    cd 用輸入的正文替換光標(biāo)的所在行;
    ncd 用輸入的正文替換光標(biāo)下面的 n 行会放;
    c$ 用輸入的正文替換從光標(biāo)開始到本行末尾的所有字符饲齐;
    c0 用輸入的正文替換從本行開頭到光標(biāo)的所有字符。
    rc 用 c 替換光標(biāo)所指向的當(dāng)前字符咧最;
    nrc 用 c 替換光標(biāo)所指向的前 n 個字符捂人;
    5rA 用 A 替換光標(biāo)所指向的前 5 個字符御雕;
    S 刪除當(dāng)前行,并進(jìn)入編輯模式滥搭;
    nS 刪除當(dāng)前行在內(nèi)的 n 行酸纲,并進(jìn)入編輯模式;
    x 刪除光標(biāo)所指向的當(dāng)前字符瑟匆;
    nx 刪除光標(biāo)所指向的前 n 個字符闽坡;
    3x 刪除光標(biāo)所指向的前 3 個字符;
    dw 刪除光標(biāo)右側(cè)的字愁溜;
    ndw 刪除光標(biāo)右側(cè)的 n 個字疾嗅;
    3dw 刪除光標(biāo)右側(cè)的 3 個字;
    db 刪除光標(biāo)左側(cè)的字冕象;
    ndb 刪除光標(biāo)左側(cè)的 n 個字代承;
    5db 刪除光標(biāo)左側(cè)的 5 個字;
    dd 刪除光標(biāo)所在行渐扮,并去除空隙论悴;
    ndd 刪除(剪切) n 行內(nèi)容,并去除空隙席爽;
    3dd 刪除(剪切) 3 行內(nèi)容意荤,并去除空隙;
    d$ 從當(dāng)前光標(biāo)起刪除字符直到行的結(jié)束只锻;
    d0 從當(dāng)前光標(biāo)起刪除字符直到行的開始玖像;
    J 刪除本行的回車符(CR),并和下一行合并齐饮。
    </pre>

2插入模式

從編輯模式進(jìn)入的命令:

i            在光標(biāo)左側(cè)插入正文
a            在光標(biāo)右側(cè)插入正文
o            在光標(biāo)所在行的下一行增添新行
O            在光標(biāo)所在行的上一行增添新行
I            在光標(biāo)所在行的開頭插入
A            在光標(biāo)所在行的末尾插入

退出插入模式: esc或ctrl+[


3.命令模式(末行模式 )

</p>在編輯模式輸入:就可以進(jìn)行命令輸入捐寥,因?yàn)?code>:會出現(xiàn)在文末,也將命令模式稱為末行模式 祖驱。

  • 文件操作
    <pre>:e path_to_file/filename 在已經(jīng)啟動的Vim中打開一個文件
    :w 保存當(dāng)前編輯的文件
    :w file_temp 將當(dāng)前文件另存為 file_temp
    : q 在未作修改的情況下退出握恳;
    : q! 放棄所有修改,退出編輯程序捺僻。
    : n 將光標(biāo)移到第 n 行
    :345 將光標(biāo)移到第 345 行
    :345w file 將第 345 行寫入 file 文件
    :3,5w file 將第 3 行至第 5 行寫入 file 文件
    :1,.w file 將第 1 行至當(dāng)前行寫入 file 文件
    :.,$w file 將當(dāng)前行至最后一行寫入 file 文件
    :.,.+5w file 從當(dāng)前行開始將 6 行內(nèi)容寫入 file 文件
    :1,$w file 將所有內(nèi)容寫入 file 文件乡洼,相當(dāng)于 :w file 命令
    :w 將編輯的內(nèi)容寫入原始文件,用來保存編輯的中間結(jié)果
    :wq 將編輯的內(nèi)容寫入原始文件并退出編輯程序(相當(dāng)于 ZZ 命令)
    :w file 將編輯的內(nèi)容寫入 file 文件匕坯,保持原有文件的內(nèi)容不變
    :a,bw file 將第 a 行至第 b 行的內(nèi)容寫入 file 文件
    :r file 讀取 file 文件的內(nèi)容束昵,插入當(dāng)前光標(biāo)所在行的后面
    :e file 編輯新文件 file 代替原有內(nèi)容
    :f file 將當(dāng)前文件重命名為 file
    :f 打印當(dāng)前文件名稱和狀態(tài),如文件的行數(shù)葛峻、光標(biāo)所在的行號等
    </pre>
  • 字符串搜索
    <pre>
    :/str/ 正向搜索锹雏,將光標(biāo)移到下一個包含字符串 str 的行
    :?str? 反向搜索,將光標(biāo)移到上一個包含字符串 str 的行
    :/str/w file 正向搜索术奖,并將第一個包含字符串 str 的行寫入 file 文件
    :/str1/,/str2/w file 正向搜索礁遵,并將包含字符串 str1 的行至包含字符串 str2 的行寫
    :/struct/
    :/^struct/
    :/^struct/
    </pre>
  • 正則表達(dá)式<pre>^ 放在字符串前面轻绞,匹配行首的字;
    $ 放在字符串后面佣耐,匹配行尾的字政勃;
    < 匹配一個字的字頭;
    > 匹配一個字的字尾晰赞;
    . 匹配任何單個正文字符稼病;
    [str] 匹配 str 中的任何單個字符;
    [^str] 匹配任何不在 str 中的單個字符掖鱼;
    [a-b] 匹配 a 到 b 之間的任一字符然走;</br>* 匹配前一個字符的 0 次或多次出現(xiàn);
    \ 轉(zhuǎn)義后面的字符戏挡。</pre>
  • 正文替換&&刪除<pre>:%s/str1/str2/ 用字符串 str2 替換行中首次出現(xiàn)的字符串 str1
    :s/str1/str2/g 用字符串 str2 替換行中所有出現(xiàn)的字符串 str1
    :.,$ s/str1/str2/g 用字符串 str2 替換正文當(dāng)前行到末尾所有出現(xiàn)的字符串 str1
    :1,$ s/str1/str2/g 用字符串 str2 替換正文中所有出現(xiàn)的字符串 str1
    :g/str1/s//str2/g 功能同上
    :m,ns/str1/str2/g 將從m行到n行的str1替換成str2
    :%s/str1/&/gn 在Vim中統(tǒng)計(jì)當(dāng)前文件中字符串 str1 出現(xiàn)的次數(shù)芍瑞,可用替換命令的變形
    //1. g 放在命令末尾,表示對搜索字符串的每次出現(xiàn)進(jìn)行替換,不止匹配每行中的第一次出現(xiàn)褐墅;不加 g拆檬,表示只對搜索字符串的首次出現(xiàn)進(jìn)行替換;g 放在命令開頭妥凳,表示對正文中所有包含搜索字符串的行進(jìn)行替換操作;
    //2. s 表示后面跟著一串替換的命令竟贯;
    //3. % 表示替換范圍是所有行,即全文逝钥。
    :d 刪除光標(biāo)所在行
    :3d 刪除 3 行
    :.,$d 刪除當(dāng)前行至正文的末尾
    :/str1/,/str2/d 刪除從字符串 str1 到 str2 的所有行
    :g/^(.)$\n\1$/d 刪除連續(xù)相同的行屑那,保留最后一行
    :g/%(^\1$\n)@<=(.
    )$/d 刪除連續(xù)相同的行,保留最開始一行
    :g/^\s$\n\s$/d 刪除連續(xù)多個空行艘款,只保留一行空行
    :5,20s/^#//g 刪除5到20行開頭的 # 注釋
    //Vim的初級刪除命令是用 d 持际,高級刪除命令可以用 正則替換 的方式執(zhí)行。
    恢復(fù): Vim 在編輯某個文件時哗咆,會另外生成一個臨時文件蜘欲,這個文件的名稱通常以 . 開頭,并以 .swp 結(jié)尾晌柬。
    Vim 在正常退出時姥份,該文件被刪除,若意外退出年碘,而沒有保存文件的最新修改內(nèi)容殿衰,則可以使用恢復(fù)命令 :recover 來恢復(fù)文件,也可以在啟動Vim時用 -r 選項(xiàng)盛泡。

    </pre>
  • 選項(xiàng)設(shè)置
    <pre>:set option 設(shè)置選項(xiàng) option
    常見的功能選項(xiàng)包括:
    autoindent 設(shè)置該選項(xiàng),則正文自動縮進(jìn)
    ignorecase 設(shè)置該選項(xiàng)娱颊,則忽略規(guī)則表達(dá)式中大小寫字母的區(qū)別
    number 設(shè)置該選項(xiàng)傲诵,則顯示正文行號
    ruler 設(shè)置該選項(xiàng)凯砍,則在屏幕底部顯示光標(biāo)所在行、列的位置
    tabstop 設(shè)置按 Tab 鍵跳過的空格數(shù)拴竹。例如 :set tabstop=n悟衩,n 默認(rèn)值為 8
    mk 將選項(xiàng)保存在當(dāng)前目錄的 .exrc 文件中
    </pre>
  • Shell切換<pre>
    當(dāng)處于編輯的對話過程中時,可能需要執(zhí)行一些Linux命令栓拜。
    如果需要保存當(dāng)前的結(jié)果座泳,退出編輯程序,再執(zhí)行所需的Linux命令幕与,然后再回頭繼續(xù)編輯過程挑势,就顯得十分累贅。
    如果能在編輯的環(huán)境中運(yùn)行Linux命令就要省事得多啦鸣。
    在Vim中潮饱,可以用下面的命令來做到這一點(diǎn):
    ***:!shell_command *** 執(zhí)行完 shell_command 后回到Vim
    這稱為Shell切換。
    它允許執(zhí)行任何可以在標(biāo)準(zhǔn)的Shell提示符下執(zhí)行的命令诫给。
    當(dāng)這條命令執(zhí)行完畢香拉,控制返回給編輯程序。
    又可以繼續(xù)編輯對話過程中狂。
    </pre>
  • 分屏<pre>
    :split(可用縮寫 :sp) 上下分屏凫碌;
    :vsplit(可用縮寫 :vsp) 左右分屏。
    vim -On file1 file2... 打開 file1 和 file2 胃榕,垂直分屏
    vim -on file1 file2... 打開 file1 和 file2 盛险,水平分屏
    Ctrl+w+h 切換到當(dāng)前分屏的左邊一屏;
    Ctrl+w+l 切換到當(dāng)前分屏的右邊一屏勤晚;
    Ctrl+w+j 切換到當(dāng)前分屏的下方一屏枉层;
    Ctrl+w+k 切換到當(dāng)前分屏的上方一屏。
    Ctrl+w+w 跳轉(zhuǎn)分屏赐写、跳轉(zhuǎn)方向則是在當(dāng)前Vim窗口所有分屏中鸟蜡,按照逆時針方向跳轉(zhuǎn)
    Ctrl+W = 讓所有的屏都有一樣的高度;
    Ctrl+W + 增加高度挺邀;
    Ctrl+W - 減少高度揉忘。
    Ctrl+W > 增加高度;
    Ctrl+W < 減少寬度端铛。
    </pre>
  • 標(biāo)簽頁<pre>
    :tabnew 在Vim中新建一個標(biāo)簽
    :tabnew filename 新建標(biāo)簽頁的同時打開一個文件泣矛。
    :tN[ext] 跳轉(zhuǎn)到上一個匹配的標(biāo)簽
    :tabN[ext] 跳到上一個標(biāo)簽頁
    :tabc[lose] 關(guān)閉當(dāng)前標(biāo)簽頁
    :tabdo 為每個標(biāo)簽頁執(zhí)行命令
    :tabe[dit] 在新標(biāo)簽頁里編輯文件
    :tabf[ind] 尋找 'path' 里的文件,在新標(biāo)簽頁里編輯之
    :tabfir[st] 轉(zhuǎn)到第一個標(biāo)簽頁
    :tabl[ast] 轉(zhuǎn)到最后一個標(biāo)簽頁
    :tabm[ove] N 把標(biāo)簽頁移到序號為N位置
    :tabnew [filename] 在新標(biāo)簽頁里編輯文件
    :tabn[ext] 轉(zhuǎn)到下一個標(biāo)簽頁
    :tabo[nly] 關(guān)閉所有除了當(dāng)前標(biāo)簽頁以外的所有標(biāo)簽頁
    :tabp[revious] 轉(zhuǎn)到前一個標(biāo)簽頁
    :tabr[ewind] 轉(zhuǎn)到第一個標(biāo)簽頁
    </pre>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末禾蚕,一起剝皮案震驚了整個濱河市您朽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌换淆,老刑警劉巖哗总,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件几颜,死亡現(xiàn)場離奇詭異,居然都是意外死亡讯屈,警方通過查閱死者的電腦和手機(jī)蛋哭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涮母,“玉大人谆趾,你說我怎么就攤上這事∨驯荆” “怎么了沪蓬?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長炮赦。 經(jīng)常有香客問我怜跑,道長,這世上最難降的妖魔是什么吠勘? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任性芬,我火速辦了婚禮,結(jié)果婚禮上剧防,老公的妹妹穿的比我還像新娘植锉。我一直安慰自己,他們只是感情好峭拘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布俊庇。 她就那樣靜靜地躺著,像睡著了一般鸡挠。 火紅的嫁衣襯著肌膚如雪辉饱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天拣展,我揣著相機(jī)與錄音彭沼,去河邊找鬼。 笑死备埃,一個胖子當(dāng)著我的面吹牛姓惑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播按脚,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼于毙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了辅搬?” 一聲冷哼從身側(cè)響起唯沮,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后介蛉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夯缺,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年甘耿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片竿滨。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡佳恬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出于游,到底是詐尸還是另有隱情毁葱,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布贰剥,位于F島的核電站倾剿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蚌成。R本人自食惡果不足惜前痘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望担忧。 院中可真熱鬧芹缔,春花似錦、人聲如沸瓶盛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惩猫。三九已至芝硬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間轧房,已是汗流浹背拌阴。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锯厢,地道東北人皮官。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像实辑,于是被迫代替她去往敵國和親捺氢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 編輯模式 移動 h剪撬、j摄乒、k、l:上下左右移動ctrl+f:在文件中前移一頁(相當(dāng)于 page down)ctrl+...
    kjbryantdrew閱讀 455評論 0 0
  • 待整理~ 1、vim ~/.vimrc 進(jìn)入配置文件 如果不知道vimrc文件在哪馍佑,可使用 :scriptname...
    spfanlost閱讀 1,711評論 0 0
  • 曾經(jīng)在思科的工廠測試系統(tǒng)`KlemTest` (`SUSE`命令行模式)中使用`VI`/`VIM`超過2年半斋否,現(xiàn)在...
    戈多在地獄閱讀 1,788評論 1 13
  • Ubuntu的發(fā)音 Ubuntu舅世,源于非洲祖魯人和科薩人的語言旦委,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 99,197評論 9 467
  • 基礎(chǔ)命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,088評論 0 0