標籤:ar 使用 sp strong 檔案 資料 on 問題 bs
下面是最近學習vim的一些知識點總結
***部落格園--邦邦醬好***
1.介紹
linux在文字介面下的文書編輯器有:emacs,pico,nano,joe與vim等。
為何要學vim(vim是vi的進階版本)
(1)幾乎所有的系統都會內建vi,其他的編輯器不一定存在
(2)很多個別軟體的編輯器介面都會主動呼叫vi
(3)vim具有程式編輯的能力,主動以字型顏色辨別文法的正確性
(4)程式簡單,編輯速度相當快速
(vi模式下編輯視窗右下角不會顯示行號。)
2.vi共分為三種模式:一般模式,編輯模式,指令列命令模式
(1)vi開啟文檔,直接進入一般模式。
在這個模式中你可以使用【上下左右】按鍵來移動游標,可以使用【刪除字元】或者【刪除整行】來處理文檔內容,也可以使用【複製粘貼】來處理你的檔案資料。
(2)按下【i,I,o,O,a,A,r,R】後才從一般模式進入編輯模式。要回到一般模式時,必須按下【Esc】鍵才可退出編輯模式。
(3)按下【:/?】三個中的任何一個按鈕,就可以將游標移動到最底下那一行,這時從一般模式進入指令列命令模式(編輯模式和指令列模式之間不可切換)。它可提供你搜尋資料,讀取,存檔,取代字元,離開vi,顯示行號等動作。
3.一般模式下移動游標的方法
(1)h或向左方向鍵:向左移動一個字元
(2)j或向下方向鍵:向下移動一個字元
(3)k或向上方向鍵:向上移動一個字元
(4)l或向右方向鍵:向右移動一個字元
(5)向*移動N行:輸入N,再按下對應的動作
(6)ctrl+f:向下移動一頁
(7)ctrl+b:向上移動一頁
(8)ctrl+d:向下移動半頁
(9)ctrl+u:向上移動半頁
(10)N<space>:輸入N,再按space空格鍵,游標會向右移動N個字元
(11)0或者home鍵:移動到這一行的最前面字元處
(12)$或End鍵:移動到這一行的最後面字元處
4.一般模式下搜尋與取代的方法
(1)/word:在當前游標向下搜尋,word是想要搜尋的字串,輸入/word後,按下enter鍵即可。
(2)?word:在當前游標向上搜尋,word是想要搜尋的字串,輸入?word後,按下enter鍵即可。
(3):n1,n2s/word1/word2/g:在第n1和n2行之間尋找word1這個字串,並取代為word2
(4):1,$ss/word1/word2/g:在第1行開始到最後一行尋找word1這個字串,並取代為word2
(5):1,$ss/word1/word2/gc:在第1行開始到最後一行尋找word1這個字串,並取代為word2,並在取代前給予使用者確認
5.一般模式下的刪除,複製與粘貼
(1)x,X:在一行字中,x向後刪除一個字元;X為向前刪除一個字元
(2)Nx:向後連續刪除N個字元
(3)dd:刪除游標所在的那一整行
(4)Ndd:刪除游標所在的向下N行
(5)d1G:刪除游標所在到第一行的所有資料
(6)dG:刪除游標所在到最後一行的所有資料
(7)d0:刪除游標到該行最前面的一個字元
(8)d$:刪除游標到該行最後的一個字元
(9)yy:複製游標所在的那一行
(10)Nyy:複製游標所在的向下N行
(11)y1G:複製游標所在到第一行的所有資料
(12)yG:複製游標所在到最後一行的所有資料
(13)y0:複製游標所在字元到該行行首的所有資料
(14)y$:複製游標所在字元到該行行尾的所有資料
(15)p,P:p為把複製的資料在游標的下一行進行粘貼;P為把複製的資料在游標的上一行進行粘貼
(16)u:複原上一個動作
(17)ctrl+r:重做上一個動作
(18).:小數點,代表重複前一個動作
6.編輯模式下可用的按鍵
(1)i,I:進入插入模式。i為從當前游標處插入;I為在當前所在行的第一個非空格符處開始插入。
(2)a,A:進入插入模式。a為從當前游標所在的下一個字元處開始插入;A為在當前所在行的最後一個字元處開始插入。
(3)o,O:進入插入模式。o為從當前游標所在的下一行插入新的一行;O為在當前所在行的上一行插入新的一行。
(2)r,R:進入插入模式。r只取代游標所在的那一個字元一次;R會一直取代游標所在的文字,直到按下ESC鍵為止
7.指令列模式下可用的按鍵
(1):w:將編輯的資料寫入文檔
(2):w!:若檔案屬性為【唯讀】時,強制將編輯的資料寫入文檔。最後能否寫入跟系統賬戶許可權有關。
(3):q:離開vi
(4):q!:若修改過文檔,不想儲存,使用!為強制離開並且不儲存文檔
(5)ZZ:若文檔沒修改,則離開;若文檔有修改,則儲存後離開
(6):w[filename]:將編輯的資料存放區成另一個文檔
(7):r[filename]:將另一個文檔的資料追加到游標當前所在的位置後面
(8):n1,n2 w [filename]:將第n1到n2行的資料存放區成另一個文檔
(9):!command:暫時離開vi到指令列模式下執行command的結果
(10):set nu:顯示行號
(11):set nonu:取消顯示行號
8.vim的暫存檔,救援恢複與開啟時的警告資訊
(1)介紹
當我們使用vim編輯filename文檔時,vim會在filename的目前的目錄下再建立一個名為.filename.swp的暫存檔。你對filename的動作都會記錄到這個暫存檔中。如果系統由於某些原因斷線了,導致編輯的文檔沒有儲存,這時候.filename.swp就能發揮救援恢複功能了。
(2)類比系統斷線
開啟文檔進行編輯後,在vim的一般模式下,按下ctrl+z鍵,vim就會被丟到背景去執行。接下來直接關閉終端面板。這就等於系統斷線,剛剛對文檔的操作沒有被儲存到。
(3)開啟時的警告資訊
在系統斷線後,再次開啟該文檔vim filename,就會出現警告資訊
問題一:可能與其他人同時編輯這個檔案-->找到另一個人請他結束對文檔的操作。或者選擇開啟唯讀(O)模式
問題二:系統不知名原因導致vim中斷-->如果之前的vim動作沒有儲存,可以按下R(ecover),這時vim會載入.filename.swp的內容來恢複文檔。
注意:恢複文檔後,.filename.swp不會自動刪除,記得要手動刪除它,否則每次開啟filename都會有警告資訊。
9.區塊選擇
(1)按鍵
v:字元選擇,會將游標經過的地方反白選擇
V:行選擇,會將游標經過的行反白選擇
ctrl+v:區塊選擇,可以用長方形的方向選擇資料
y:將反白的地方複製
d:將反白的地方刪除掉
(2)應用
第一步:進入文檔,游標移動到某處,在一般模式下按下ctrl+v鍵,這時按下左右上下鍵進行區塊選擇
第二步:按下y鍵進行複製,這時反白的區塊會消失
第三步:移動游標到想要粘貼的地方,在一般模式下按下p鍵進行粘貼操作
10.多文檔編輯
(1)難題:每個vim是獨立的,無法在vim1的文檔A中進行nyy操作,再去vim2的文檔B中進行p操作。
(2)解決:使用指令在一個vim下同時開啟多個文檔進行編輯-->vim file1 file2
(3)按鍵(一般模式下使用):
:n:編輯下一個文檔
:N:編輯上一個文檔
:files:列出目前這個vim開啟的所有文檔
11.多視窗功能
(1)難題:有一個文檔很大,需要對比前後的資料,如果使用下一頁ctrl+f,上一頁ctrl+b來跑前跑後查閱會非常不方便。
(2)解決:在同一個vim中產生多個視窗
第一步:開啟一個文檔vim file1,在一般模式下輸入“:sp”,就會產生另一個視窗,顯示的文檔也是file1
第二步:還可以在一般模式下輸入“:sp file2”,就會產生另一個視窗,顯示的文檔也是file2
第三步:可以使用ctrl+w+下上方向鍵(jk鍵)在多個視窗之間切換
12.環境預設
(1)介紹:整體vim的設定值是放置在/etc/vimrc中,不過不建議修改它。但是可以修改~/.vimrc這個文檔,如果它不存在,可以建立它,再寫入想要的預設值。
(2)常用的預設值:(可以在一般模式下輸入:set all來查閱)
set nu -->顯示行號(不顯示是set nonu)
set hlsearch -->高亮度搜尋(不顯示是set nohlsearch)
set aotoindent -->自動縮排(不顯示是set noaotoindent)
set ruler -->顯示右下角的狀態列
set showmode -->顯示左下角的狀態列
syntax on -->依據程式相關文法顯示不同顏色(不顯示是syntax off)
(在~/.vimrc中批註資訊使用雙引號開頭:"批註:這裡是顯示行號)
13.中文編碼的亂碼問題
一.中文編碼有big5和utf8兩種,如果出現亂碼,要考慮:
(1)你的linux系統預設支援的語係數據:這與/etc/sysconfig/i18n有關
(2)你的終端介面bash的語系:這與LANG這個參數有關
(3)你的文檔原本的編碼
(4)開啟終端機的軟體,比如GNOME下的視窗介面
最重要的是第三四點,只要這兩點一致,基本不會有亂碼。
二.轉換文檔的編碼
iconv --list -->列出iconv命令支援的語系
iconv -f 原本編碼 -t 新編碼 filename [-o newfile] (from A to B)
查看文檔的編碼類別型:file filename
linux--vim