Vim使用總結
Vim是一個類似於Vi的著名的功能強大、高度可定製的文字編輯器,在Vi的基礎上改進和增加了很多特性。VIM是純粹的自由軟體 三種模式 一般模式: vim開啟一個檔案就進入一般模式。 尾部顯示該模式可移動游標,刪除字元或行,可複製或黏貼檔案資料。編輯模式 鍵入以下鍵進入編輯模式 i: insert,插入 a:append, o:new line, I: 行首 A:行尾 O:上方建立行尾部顯示 vim的操作游標的移動字元間跳轉 hjkl->左下上右,方向鍵同樣可以單詞間跳轉: w:後單詞的詞首 e:當前或後一個單詞的詞尾; b:當前或前一單詞的詞首; #COMMAND: 行內跳轉: ^: 跳轉至行首的第一個非空白字元; 0:跳轉至行首; $: 跳轉至行尾; 行間移動: #G: 1G, gg G 句間移動: ) ( 段落間移動: } {編輯操作字元編輯命令:X : 大X為向前刪除一個字元,相當於Backspacex : 小寫x向後刪除一個字元,相當於del#x:刪除游標所在處向後#個字元xp:將游標所在處的字元和後邊一個字元位置對調刪除命令:d:d^ 刪除游標所在處到行首的所有字元d$ 刪除游標所在處到行尾的所有字元d0 刪除游標所在處到行首的所有字元dG:刪除游標所在至最後一行的所有字元d1G:刪除游標所在到第一行的所有字元dd: 刪除游標所在行#COMMAND注意:刪除內容會被vim編輯器儲存至緩衝區當中粘貼命令:p (paste, put)如果此前複製或者刪除的內容不是完整的行:p 小寫:粘貼至當前游標所在處的後面P 大寫:粘貼至當前游標所在處的前面如果複製的內容是完整行(可以不止一行)p小寫:粘貼之當前游標所在行下方P大寫:粘貼至當前游標所在行上方複製命令: y, yanky:yy: 複製游標所在的那一行#yy:複製游標所在的向下#行y1G:複製游標所在行到第一行所有字元yG:複製游標所在行到最後一行所有字元y$:複製游標所在字元至行尾的所有字元y^,:複製游標所在字元至行首的所有字元改變命令:c, change 兼具檔案編輯和模式轉換c$,c^,c0,cb,ce,ce,cwcc: 刪除游標所在行,進入插入模式撤銷此前的編輯工作u: undo撤銷此前的編輯操作#uCtrl+r 恢複此前的撤銷工作.:重複起一個編輯操作翻屏操作:Ctrl+f: 螢幕向下翻一頁Ctrl+b: 螢幕向上翻一頁Ctrl+d:螢幕向下移動半頁Ctrl+u:螢幕向上移動半頁末行模式:(1)地址,定界:start_pos,end_pos#: 第#行#,#:從#行到#行#,+#:從#行到第#+#行.:當前行$:組後一行%: 全文,相當於1,$/pat1/: 第一次被此模式所匹配到的行;#,/pat1/:從第#開始,第一次被此模式所匹配到的行/pat1/,/pat2/:第一次被此模式所匹配到的行 到 第二次被匹配到的行後邊可跟編輯命令: y,w,r(2)尋找/PATTERN: 向尾部進行搜尋?PATTERN: 向首部進行搜尋n: 與命令同方向N: 與命令反方向(3)尋找替換s:在末行模式下,在地制定界的範圍內完成尋找替換操作s/要尋找的內容/替換為的內容/修飾符要尋找的內容:可使用模式替換為的內容:不能使用模式,但可以使用後向引用符號,以引用前面模式中的分組括弧所匹配到的內容;\1, \2, ...&:引用"要找的內容"匹配到的整個內容;修飾符:i: 忽略大小寫g: 全域替換c:提示給使用者確認是否需要替換/:用於分隔字元,所以,要尋找的內容或替換為的內容中出現此符號,要使用\對其轉義,使用格式:\/分隔字元可替換為其它字元:例如@,#等;多檔案模式:vim FILE1 FILE2 ...:n 編輯下一個檔案:N 編輯上一個檔案:files 列出目前這個vim開啟的所有檔案:next 編輯下一個檔案:first 編輯第一個檔案:prev 編輯上一個檔案:last 編輯最後一個檔案:wqall 儲存並退出所有開啟檔案:q!all 強制退出所有開啟檔案多檔案視窗分割:vim -o|-O FILE1 FILE2 ...Ctrl+w, ARROW(箭頭) 切換視窗單檔案視窗分割:Ctrl+w, s: split, 水平分割Ctrl+w, v: vertical, 垂直分割定製vim的某些工作特性:(1) 行號顯示:set nu禁用:set nonu(2) 括弧匹配顯示:set sm禁用:set nosm(3) 自動縮排:set aiset noai(4) 高亮搜尋set hlsearchset nohlsearch(5) 文法著色syntax onsyntax off(6) 忽略字元大小寫set icset noic練習:1、複用尋找替換命令刪除檔案中的行首的空白字元;%s/^[[:space:]]//g2、用尋找替換命令為檔案每行開頭為空白字元的行的行首加一個#; 原有空白字元保留;%s/^\s\+/#&/g3、替換/tmp/functions檔案中的/etc/sysconfig/init為/var/log; %s#/etc/sysconfig/init#/var/log#g 4、刪除/tmp/functions檔案中所以#開頭,且#後面至少跟了一個空白字元的行的行首#%s/^\(#\)\(\s\+\)/\2/g