vim使用基礎

來源:互聯網
上載者:User

    --工欲善其事,必先利其器
    vim就是vi improved。vi是原本是類Unix系統上的一款優秀的文字編輯器。現在最好用的我覺是gvim,已經可能在各種平台上使用。
    vim的官網是:http://www.vim.org 裡面的有gvim的程式免費下載,還有各種外掛程式供選擇使用,也有少量關於vim的免費書籍供下載。
    vim不同於記事本(notepad)、寫字板(write)和MS office word,如果你習慣了它們,那麼你再使用vim會是一件非常痛苦的事情。它是一款純文字編譯器,是現在公認的最好的文本編譯器之一。
    vim之所以強大就是它可以讓你按照你自己的使用習慣來設定。可以這麼說,你使用的越久就會越喜歡,瞭解的越多就會有越多的驚喜。我自己深深受益,好東西應該與大家分享,因此向大家推薦學習使用,在此向大家介紹一些非常基礎的vim知識供大家學習參考。
    vim有三種工作模式:插入模式 (Insert mode)、命令模式(Command mode) 、行模式 (EX Commands mode)。插入模式就像我們平時使用記事本時一樣,可以隨意的輸入文本,基本沒有什麼可說的。主要是其它兩個模式,下面細說。
    首先是三個模式的相互轉換。開啟一個vim,它的預設模式是命令模式,輸入a或i等字元後可以轉為插入模式;插入模式在輸入Esc後可以返回命令模式;命令模式輸入:可以轉為行模式;行模式也是在輸入Esc後可以返回命令模式。注意:行模式和插入模式是不能直接相互轉換的,必須能過命令模式轉換。(下面的命令如果是以冒號開頭的就是預設是行模式命令,否則是命令模式命令)
        hjkl四個鍵相當於←↓↑→,可以在命令模式下使用它們來上下左右移動游標。(特別注意不要再使用小鍵盤的上下左右來移動游標了,不然就失去使用vim的主要原因之一了,這是剛使用vim時最不容易改變的習慣)
        w是跳到下一個單詞的開頭

    :w是儲存檔案

    :wq是儲存並退出檔案
        b是跳到單詞的開頭
        e是跳到單詞的結尾
        [[或gg是跳到檔案的第一行
        ]]或G是跳到檔案的最後一行
        nG是跳到檔案的第n行,其中n是一個數字
        n|是跳到本行的第n個字元,其中n是一個數字
        a是向游標後插入字元
        A是向本行最後插入字元
        i是向游標前插入字元
        I是向本行開關後插入字元
        s是修改游標處字元(刪除當前字元再進入插入模式)
        S是修改本行的字元(刪除當前行再進入插入模式)
        c是與別的命令結合使用的,如cw是改變從游標後的一個單詞,cb是改變游標前的一個單詞,依次類推:ch是必變游標前的一個字元,cj是改變游標後的一行等等。如果前面再加上一個數字,如ncw(n是一個數字)是改變游標後的n個單詞,其它命令也是這樣類推的,這是vim的精華所在。就像太極生兩儀,兩儀生四象,四象生八卦一樣奇妙。而且大部的命令都可以這樣組合,可以自己發現。它們有一個普遍的規律:num+order+where,如4cw(修改4個單詞),4是num,c是order,w是where;再如4yj(複製了5行)也是同理
        C是修改當前行當前游標字元後的內容
        d與c用法完全相似,只是d是刪除不是修改,所以不進入插入模式
        D是刪除當前行當前游標字元後的內容
        r是改變當前字元為另一字元,如ra是把當前字元變為a,它不進入插入模式
        R是改變游標後的字元一直到按Esc為止,它也不進入插入模式
        v是選擇字元命令,按v後下下左右移動游標可以先擇多個字元
        V是選擇行,按V後上下移動游標可以先擇多行
        ctrl+q或ctrl+v是開啟可視塊進行選擇,Windows下只能用ctrl+q,因為ctrl+v被系統佔用
        x是刪除游標處的字元
        X是刪除游標前的字元
        y是複製當前游標處的字元,如果選擇多個字元後再按y是複製選擇的字元
        Y或yy是複製當前行的內容,如果選擇多行後再Y是複製選擇的行的內容
        p是把剪下板中的內容粘貼的當前行的下一行
        P是把剪下板中的內容粘貼的當前行的上一行
        o是在當前行的下一行插入一新行
        O是在當前行的上一行插入一新行
        zf是在選擇多行後把內容摺疊起來
        zo是開啟當前的摺疊
        zc是關閉游標處開啟的摺疊
        zn是開啟所有的摺疊
        zm是關閉所有開啟的摺疊
        :sp 檔案名稱 是開啟一個新的檔案在水平的視窗
        :vsp 檔案名稱 是開啟一個新的檔案在垂直的視窗
        ctrl+w按兩次是在開啟的視窗中順序進行切換
        ctrl+w+(hjkl中的一個)是在游標稱動方向上切換視窗
        ctrl+w+r和ctrl+w+R都是把當前視窗和其它視窗換位置,不同的是它們的順序正好相反
        ctrl+w+(HJKL)是把當前視窗和游標移動方向上視窗換位置(如果有的話)
        0是把游標移動到行的第一個字元處
        ^是把游標移動到行的第一個非空白字元開始處
        $是把游標移動到行的結尾處
        .是重複上一個命令
        fw是在本行游標後找一個字元,其中w可以是任一字元,逗號可以重複此次的搜尋
        Fw是在本行游標前找一個字元,其中w可以是任一字元,逗號可以重複此次的搜尋
        zz是把當前行放到視窗中間
        zt是把當前行放到視窗第一行
        zb是把當前行放到視窗最先一行
        ma是把游標處標誌為a,其中a可以是任意一個字母
        `a是把游標移動到標誌a處,其中a可以是任意一個字母
        'a是把游標移動到標誌a所在的那一行,其中a可以是任意一個字母
        >>是把當前行向後縮排
        <<是把當前行向前縮排
        >是在選中多行後把這些行向後縮排
        <是在選中多行後把這些行向前縮排
        /word是搜尋一個單詞,word可以是任一字元串
        ?word是搜尋一個單詞,word可以是任一字元串,與/不同的是?的搜尋方向正好與它相反
        n或N是在/或?搜尋的結果中進行切換,n與N不同的是方向正好相反
        *或#是搜尋游標處的單詞,不同的是*與#的搜尋方向正好相反
        :bn或bp是在開啟多了buffer時在buffer之間進切換換的
        :args是在一行中查看開啟的多個buffer
        :ls是在多行中查看開啟的多個buffer
        :set nu是在視窗中顯示行號
        :set nonu是不在視窗中顯示行號
        :set backup是備份一個編輯的檔案
        :set nobackup是不備份一個編輯的檔案,可以看出set設定是成對出現的有一個set a就不一個set noa與之對應。
        :set tabstop=4是把一個tab鍵顯示為4個空格,也有許多別的設定與其形式相似。
        :set all可以查看所有的set設定
        :%s/life/Life/g是把檔案中所有的life改變為Life,其中life和Life可以是任一字元串,life還可以是一個Regex
        :1,10s/Life/life/g與上面命令相似,只不過本命令不改變檔案的全部,只改變1到10行
        :pwd是顯示當前vim的工作路徑
        :cd與作業系統下的命令相似是改變vim的工作路徑
        :lcd %:p:h是把本視窗的vim的工作路徑改變為開啟的檔案的路徑,不影響其它視窗的工作路徑
        :!ls是顯示叫用作業系統的命令,ls可以是任意可以執行的系統命令。也可以把vim中的一些變數傳給作業系統的命令,如在Windows中可以用::!explorer %:p:h開啟視窗開啟的檔案所在的目錄
        :Ex可以在vim中水平的視窗中開啟的檔案所在的檔案夾
        :Vex可以在vim中垂直的視窗中開啟的檔案所在的檔案夾
        :set mouse=a selection=exclusive selectmode=mouse,key這條命令可以讓vim像notepad一樣用滑鼠來點哪裡游標到哪裡
        :hi normal guibg=black guifg=white這條命令可以讓你的vim介面變的比較好看些。
        :map Y y$是讓Y不要去複製一行,而是讓它像y$一樣去複製游標到行尾的內容
        :map \cd :lcd %:p:h是給命令模式的\cd命令添加像行命令:lcd %:p:h的作用,把當前視窗的工作路徑變為當前視窗開啟的檔案所在的路徑。許多的自已用的快速鍵都可以能過此方法定義,複雜一些的也可以定義函數來處理,需要的話查閱文檔進行學習即可。
        :tabnew可以開啟一個新的tab
        gt或gT可以在tab之間進行切換,它們的方向下好相反
        :e 檔案名稱 可以開啟一個新的buffer
        gf 如果方件有另外一個檔案的路徑這個命令在游標們於路徑上時可以進入那個檔案。
        ctrl+o可以返回上一個開啟的檔案

    掌握了以上的內容就可以正常的使用vim了,其它一些有用的命令大家可以自己查閱文檔或書籍學習使用,但是它的作用遠不止於此,還有許多的非常方便的外掛程式,比如TagList,bufferexplorer,nerd_tree等等,大家可以自己學習使用,它們極大地方便了vim文本處理的能力。當然最強大的是vim可以配合shell或批處理或其它一些指令碼進行工作了,這樣vim的功能就是被無窮的放大了,這需要我們的努力去發現。
    另外由於我的水平有限,加之行文匆忙,文中很可能錯誤不斷,希望大家不要見怪,多批評指正。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.