天天看點

簡單介紹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+&即將整行變成&