1. 程式人生 > >簡單介紹vim文字編輯器

簡單介紹vim文字編輯器

一、文字編輯器VIM:
vim和vi的區別
vim介紹:
vim是unix作業系統中的文字編輯器
vim=vi+IMproved:加入了多級撤銷、語法高亮和自動補全、
支援多種外掛、可通過網路協議(HTTP/SSH)編輯檔案、支援多檔案編輯、可編輯壓縮格式的檔案

vimrc配置
rc=run+command:每一行作為一個命令進行執行
分系統級別的vimrc和使用者級別的vimrc

快捷鍵
eg:
1、終端輸入vim test
表示已vim文字編輯器開啟test.txt,這時為普通模式
2、進入之後輸入

進入編輯模式
3、當輸入
3.1
:h vimrc
表示幫助顯示vimrc的資訊,這時可以檢視什麼時vimrc的定義,如果要退出幫助介面回到編輯介面,輸入
3.2
:q


直接enter鍵即可
3.3
:q!
表示不儲存當前修改,直接退出
3.4
/××××
表示高亮顯示內容為××××的內容
3.5
××××?
表示查詢內容為××××的位置
3.6
點選
i
表示進入插入模式,這時開始可以修改檔案
3.7
點選Esc
表示退出編輯模式

4、若開啟之後輸入
:version
可得到vim的版本資訊,同樣以3的退出方式退出vim編輯器
5、可在終端輸入
vim ~/.vimrc
開啟vimrc檔案
6、vimrc中的註釋方式為單引號
"
開始

7、終端可輸入clear清除歷史命令

vim四種不同模式
普通模式:開啟檔案之後的預設模式,可以進行移動查詢刪除修改等操作
可視模式:可對一整區操作
開啟檔案之後,輸入
v


即可進入可視模式,這個時候移動游標即可選中一整塊區域,如果想刪除,直接點選
d
即可刪除這塊內容
插入模式:可新增文字
開啟檔案之後,輸入
i
即可進入插入模式,這個時候就可以在檔案中新增內容
命令模式:和普通模式類似
即先輸入
:
再輸入其他命令
如上面的:version可檢視版本

在學習下面的操作之前,可vim一個檔案,再輸入
:h operator
檢視支援的操作指令

二、移動、跳轉與縮排

游標的移動
    h左移;l右移;j下移;k上移;$移動到行尾;0(包含縮排)或shift+6(不包括縮排)移動到行首
單詞和字串移動
    w/W正向移動到下一個單詞開頭
    b/B反向移動
    e/E正向移動下一單詞結尾
    ge反向
跳轉
    ctrl+f/F下一頁
    ctrl+b/B上一頁
    ctrl+d/u向下/上翻半頁
    G跳轉至檔案的最後一行
    {g}+ctrl+g/G檢視檔案資訊/{g}更加詳細
    <line_number>gg/G跳轉到指定行
縮排
    >>表示當前行右縮排
    <<表示當前行左縮排
    :m,n>表示進入命令模式,m到n行縮排
    :m>n等同於:m,m+n-1表示命令模式m行開始共n行縮排一次

三、剪下、複製、粘帖、撤銷和恢復重做(vim當中對應的單詞為delete、yank、put、undo和redo(ctrl+r))

首先
:reg
進入暫存器
剪下:
dd表示刪除整行
複製:
yy表示複製整行
yw表示複製當前游標單詞
y2w表示複製正向兩個單詞(可以為n個)
p/P表示粘帖到游標後/游標前

四、調換字元:
vim開啟檔案之後,查詢某個字元可直接點選
f+需要查詢的字元(eg:空格或其他字元)+x
就會跳到最近查詢字元的位置,並且刪除該字元,這時再按下p即可進行貼上

五、組合刪除:
格式為:[count]operation([count]{motion})

 eg:2d3w表示正向刪除三個單詞;5dw表示正向移動5次刪除單詞
    x/X表示刪除游標下/前單個字元
    dw表示刪除一個單詞
    d{hljk}表示刪除上下左右一個操作前的字元
    d$表示刪除游標到行尾的字元
    d^或d0表示刪除游標到行首的字元

六、修改、查詢和替換

  插入:
        shift+i/A表示插入模式並移動到行首/尾
        a/i表示游標後/前插入
        [n]+O/o:表示行前/後插入n次
        [n]+i:表示插入模式重複n次,即寫入要插入的內容之後,按下Esc,會自動填充n遍到文本當中

轉換:
        ~表示單個大小寫的轉換
        g~w表示單詞大小寫轉換
        g~$/g~~表示整行大小寫轉換
        gU/uw表示單詞轉換為大/小寫

查詢:
        F/f+字元:表示反向/正向查詢單個字元
        t+字元:表示查詢字元前一個字元
        dt+字元:刪除游標到查詢字元間的字元
        /+字元:命令列查詢,再跳過n進行next的切換

替換(substitute):
        [range]s[ubstitute]/{pattern}/{string}/[flags]
        s/going/rolling/g:表示當前行所有going替換為rolling
        %s/going/rolling/g:表示%匹配所有範圍,所有範圍都進行替換

shift+r/R:表示進入替換模式,可以直接替換
r:單個字元的替換,可直接修改
cw:修改單個單詞,就會刪除當前單詞,再進行替換(change word)
c$:修改游標之後行內容,就會刪除從當前位置到行尾的內容

七、vim暫存器/贈查刪改等常規操作/vim組合規律
暫存器:
有多種,且每種功能也不一樣

無名暫存器:預設暫存器
數字暫存器:0用於複製專用暫存器,1-9對應不同的暫存器
有名暫存器:26個英文字母
黑洞暫存器:只想刪除,想當於刪除

八、緩衝區與多檔案編輯/多視窗與標籤分組/文字物件和巨集/visual模式
緩衝區和多檔案編輯

緩衝區:buffer是記憶體中的緩衝區域,用於臨時存放vim開啟過的檔案

    緩衝區列表:
    命令檢視緩衝區列表
        :files
        :buffers
        :ls
    緩衝區列表指示狀態:
        a表示啟用緩衝區,緩衝區被載入且顯示
        h表示隱藏緩衝區,緩衝區被載入但不顯示
        %表示當前緩衝區
        #表示交換緩衝區
        =表示只讀緩衝區
        +表示已經更改緩衝區
        -表示不可更改緩衝區
    緩衝區列表的操作:
        :bp表示上一個緩衝區(previous)
        :bn表示下一個緩衝區(next)
        :bf表示第一個緩衝區(first)
        :bl表示最後一個緩衝區(last)
        :buffer Nmuber或File_name表示指定緩衝區
        :ball表示編輯所有緩衝區
        ctrl+^/b#表示切換到前一個buffer
        :bd + ×××.txt表示刪除名字為×××的緩衝區(delete)
        :%bd表示刪除所有緩衝區

多視窗操作(分屏)及標籤分組

標籤包括多個視窗,相當於容納一系列視窗的容器,每個視窗包括一個buffer

    分屏操作:(w可表示為window)
    eg:vim -o4 buf-*表示垂直方向開啟四個已buf開頭的檔案
        vim -O/on表示水平/垂直分屏
        ctrl+w c/q表示關閉當前視窗/最後視窗時退(close,quit)
        ctrl+w s表示上下分割當前開啟的檔案(split)
        :sp filename表示上下分割,並開啟一個新的檔案
        ctrl+w v表示左右分割當前開啟的檔案(vsp)
        :vsp filename表示左右分螢幕,並開啟一個新的檔案
    移動分屏和尺寸變換:
        ctrl+w K表示向上移動
        ctrl+w J表示向下移動
        ctrl+w H表示向左移動
        ctrl+w L表示向右移動
        ctrl+w +表示增加高度
        ctrl+w -表示減少高度
        ctrl+w =表示所有屏高度一致
    標籤操作:
        :tabnew表示新建標籤
        :tabfind+×××.txt表示查詢並在新標籤中開啟檔案
        :tabs顯示已開啟標籤頁的列表
        :tabclose表示關閉當前頁的標籤
        :tabonly表示僅保留當前標籤頁開啟
        :tabn/p/first/last表示移動到下/上/第一/最後一個標籤頁(next/previous/first/last)
        :tabm表示將當前頁放置到指定位置
    標籤操作和命令鍵:
        gt/T表示移動到下/上一個標籤
        {i}gt表示移動到i位置的標籤
        :tabe編輯標籤中的某個檔案
        tabm 0/tabm表示移動當前tab到第一個/最後一個(m表示move)
        tabm{i}表示移動當前tab到i+1位置

檔案物件和巨集:
文字物件是在視覺化模式下的表現,一般包括

        w:word
        s:sentence
        p:paragrapg
        塊物件

視覺化模式下的指令

viw表示選中單詞
        vis表示選中句子
        vip表示選中段落
        vi(表示選中圓括號中的內容
        vi[表示選中中括號中的內容
        vit表示選中標籤中的內容
        同時可以帶上數字,進行組合操作
        eg:v3aw表示選中三個單詞,包括中間的兩個間隔空格
            v3iw表示選中三個單詞,指兩個單詞和一個空格,總共三個

巨集的簡單操作(類似於函式,將你的操作進行儲存,再進行批量操作):

qa開始錄製巨集存到暫存器a中
        qA追加巨集在a暫存器中追加
        [email protected]執行n遍a暫存器中的操作(@表示呼叫暫存器,執行完畢之後直接點選q即可退出暫存器)
        @@再執行一遍上一次操作
        :let @a= '編輯巨集a暫存器
        :n,mnormal @a表示n到m行執行暫存器a巨集操作

visual模式
在視覺化模式下,可以對一個文字塊進行整體操作
三種子模式:

            v表示啟用面向字元的可視模式
            V/shift+v表示啟用面向行的可視模式
            Ctrl+v表示啟用面向列塊的可視模式

視覺化操作:

gv表示重新選擇上一次的選中區域
o表示切換選取邊界,即在選中區域的兩端進行切換

具體實踐:

eg:進行整行的替換
先V選中整行,再r+&即將整行變成&