vim編輯器:文本編輯器: 文本:純文本,ASCII text;Unicode 文本編輯器種類: 行編輯器:sed 全屏編輯器:nano,vi vi:visual interface vim:vi improved vim:模式化的編輯器: 編輯模式,命令模式(復制粘貼);鍵盤操作通常被解析為編輯命令 輸入模式: 末行模式:內置的命令行接口 打開文件: vim [options] [file ..] +#:打開文件后,直接讓光標處于第#行的行首 +[num] For the first file the cursor will be positioned on line "num". If "num" is missing, the cursor will be positioned on the last line. +/PATTENR:打開文件后,直接讓光標處于第一個被PATTREN匹配到的行的行首 +/{pat} For the first file the cursor will be positioned on the first occurrence of {pat}. See ":help search-pattern" for the available search patterns. +:最后一行的行首 vim -d file1 file2...比較多個文件 -d Start in diff mode. There should be two, three or four file name arguments. Vim will open all the files and show differences between them. Works like vimdi(1). vim -b file 二進制打開文件 -b Binary mode. A few options will be set that makes it possible to edit a binary or executable file. ex file 或 vim -e 直接接入ex模式 -e Start Vim in Ex mode, just like the executable was called "ex". 如果該文件存在,文件被打開并顯示內容 如果該文件不存在,當編輯后第一次存盤時創建它 模式轉換: 編輯模式-->輸入模式 i:insert:在光標所在處輸入 a:append:在光標所在處后方輸入 o:在光標所在處的下方打開一個新行 I:在光標所在行的行首輸入 A:在光標所在行的行尾輸入 O:在光標所在處的上方打開一個新行 輸入模式-->編輯模式: ESC 編輯模式-->末行模式 : 末行模式-->編輯模式 兩次ESC;ESC,ESC 鎖定和解鎖:Ctrl+s、Ctrl+q 關閉文件: 編輯模式下: ZZ:保存并退出 ZQ:不保存退出 末行模式: q退出 q! 強制退出,不保存此前的編輯操作 wq 保存退出 x 保存并退出 w寫(存)磁盤文件 r filename 讀文件內容到當前文件中 w /path/to/somefile !command執行shell命令 r!command將shell命令的標準輸出,存入當前文件中 光標跳轉: 字符間跳轉: h:左 j:下 k:上 l:右 #COMMAND:跳轉由#指定的個數的字符 當前頁跳轉: H:頁首 M:頁中間行 L:頁底 單詞間跳轉: w:下一個單詞的詞首 b:當前或前一個單詞的詞首 e:當前或后一個單詞的詞尾 #COMMAND:跳轉由#指定的個數的單詞 行首行尾跳轉: ^:跳轉至行首的第一個非空白字符; 0:跳轉至行首 $:跳轉至行尾 行間跳轉: G:最后一行 #G:跳轉至由#指定的行 1G或者gg:跳轉至第一行 句間跳轉:(不常用) ( 上一句 )下一句 #( 上#句 #) 下#句 段間跳轉 { 上一段 } 下一段 #{ 上#段 #} 下#段 翻屏: Ctrl+u:向文件首部翻半屏 Ctrl+d:向文件尾部翻半屏 Ctrl+f:向文件尾部翻一屏 Ctrl+b:向文件首部翻一屏 Enter:按行向后翻 vim編輯命令: 字符編輯 x:刪除光標所在處的字符 #x:刪除光標所在處起始的#個字符 xp:交換光標所在處的字符與其后面的字符的位置 ~:轉換大小寫 替換命令(replace) r:替換光標所在處的字符 rCHAR R:切換為REPLACE模式 刪除命令 d:刪除命令,可結合光標跳轉字符,實現范圍刪除 d$: d^: d0: dw: de: db: #COMMAND dd:刪除光標所在處的行 #dd:刪除光標所在處的行起始的共#行 D:從當前光標位置一直刪除到行尾,留空行等同于d$ 粘貼命令(paste) P(小寫):緩沖區中的內容如果為整行,則粘貼在當前光標所在行的下方 否則,粘貼至當前光標所在處的后面 p(大寫):緩沖區中的內容如果為整行,則粘貼在當前光標所在行的上方, 否則,粘貼至當前光標所在處的前面; 復制命令:(yank) y:復制,工作行為相似與d命令 yw ye yb y$ y^ y0 #COMMAND yy:復制一整行 #yy:復制#行 改變命令(change,c): 編輯模式-->輸入模式,實現刪除操作; c$ c^ c0 cb ce cw #COMMAND cc:刪除光標所在處的行,并轉換為輸出模式 #cc: C:刪除當前光標到行尾,并切換成插入模式 100isi[ESC]粘貼 "si"100次 <start position><command><end position> Command: y復制、d刪除、gU變大寫、gu變小寫 例如0y$命令意味著: 0-->先到行頭 y-->沖這里開始拷貝 $-->拷貝到本行最后一個字符 ye從當前位置拷貝到本單詞的最后一個字符 vim可視化模式: v:按字符選定 V:按行選定 Ctrl+v:面向塊 結合編輯命令使用:d,c,y 可視化鍵可用于與移動鍵結合使用: w,),},箭頭等 突出顯示的文件可以被刪除,復制,變更,過濾,搜索/替換等 撤銷(undo)操作: u:撤銷此前的操作 #u:撤銷此前的#操作 U:撤銷光標落在這行后所有此行的更改 撤銷此前的撤銷操作 recover Ctrl+r 重復執行此前的命令 .: #.:重復前一個操作#此 vim自帶的練習教程:vimtutor vim末行模式 內建的命令行接口 1、地址定界:start_pos,end_pos $:最后一行 .:當前行 %:全文 #:表示特定的第#行,例如5即第5行 #,#:指定行范圍,左側為起始行,右側為結束行 1,$ .,$-1 #,+#:指定行范文,左側為起始行絕對編號,右側為相對左側行號的偏移量 /pattern/:從光標所在處起始向文件尾部第一次被模式所匹配到的行 /first/,$ /pat1/,/pat2/ vim刪除空白行 :g/^$/d 可同編輯命令一同使用,實現編輯操作: d:刪除 y:復制 c:修改、改變 w /path/to/somefile:將范圍內的文本保存至指定的文件中; r /path/from/somefile:將指定的文件中的內容讀取到指定位置 2、查找 /PATTERN:從當前光標所在處向文件尾部查找能夠被當前模式匹配到的所有字符串 ?PATTERN:從當前光標所在處向文件首部查找能夠被當前模式匹配到的所有字符串 n:下一個,與命令方向相同 N:上一個,與命令方向相反 3、查找并替換 s:末行模式的命令;使用格式: s/要查找的內容/替換為的內容/修飾符 要查找的內容:可使用正則表達式 替換為的內容:不能使用正則表達式,但可以引用; 如果"要查找的內容" 部分在模式中使用分組符號: 在"替換為的內容中"使用后向引用 直接引用查找模式匹配到的全部文本,要使用&符號 修飾符: i:忽略大小寫 g:全局替換,一行中如果匹配到多次,則均替換 gc:全局替換,每次替換前詢問 可把分隔符替換為其他非常用字符 * @ 實例: %s@\<t\([[:alpht:]]\+\)\>@T\1@g %s@\<\(f[[:alpha:]]\+\)\>@\1er@g 等同于 %s@\<f[[:alpha:]]\+\>@&er@g %s@^#@@g vim的多文件功能: vim FILE1 FILE2... 在文件間切換: next 下一個 prev(prevous) 上一個 first 第一個 last 最后一個 退出所有文件: wqall 保存所有文件并退出 wall qall 多窗口: vim -o|O file1.txt file2.txt file3.txt -o:水平分割窗口 -O:垂直分割窗口 在窗口直接切換:Ctrl+w,ARROW 注意:單個文件也可以水平分割為多個窗口進行查看: Ctrl+w,s:split 水平分割窗口 Ctrl+w,v:vertical 垂直分割窗口 Ctrl+w,q:取消相鄰窗口 Ctrl+w,o:取消全部窗口 :wqall:退出 定制vim的工作特性: 注意:在末行模式下的設定,僅對當前vim進程有效 永久有效: 全局:/etc/vimrc 用戶個人:~/.vimrc 1、行號 顯示:set number 簡寫為 set nu 取消:set nonumber 簡寫為 set nonu 2、括號匹配高亮 匹配:set showmatch set sm 取消:set noshowmatch set nosm 3、自動縮進 啟用:set al auto indent 禁用:set noal 4、高亮搜索: 啟用:set hlsearch highlight search 禁用:set nohlsearch 5、語法高亮: 啟用:syntax on syntax 語法 禁用:syntax off 6、忽略字符大小寫 啟用:set ic ignore character 禁用:set noic 7、文件格式 set fileformat=unix set fileformat=dos 8、設置文本寬度 set textwidth=65 (vimonly) set wrapmargin=15 獲取幫助 help help Subject help option-list set or:set all vi/vim內置幫助 help help topic use :q to exit help # vimtutor 入門教程摘要
vim寄存器 vim有26個命名寄存器和一個無命令寄存器,常存放不同的剪貼板內容,可以不同會話間共享 用a,b,c...z表示,用"寄存器表示,放在數字和命令之間 如 3"ayy 表示復制3行到a寄存器中 "ap 表示將a寄存器內容粘貼 未指定,將使用無命名寄存器 有10個數字寄存器,用0,1,…,9表示, 0存放最近復制內容, 1存放最近刪除內容。 當新的文本變更和刪除時,1轉存到2,2轉存到3,以此類推。數字寄存器不能在不同會話間共享。 以二進制方式打開文件 vim -b binaryfile 擴展命令模式下,利用xxd命令轉換為可讀的十六進制 :%!xxd 編輯二進制文件 擴展命令模式下,利用xxd命令轉換二進制 :%!xxd -r 保存退出 拓展: VIM中分行,使用替換命令,用正則匹配要分行的位置,然后替換換行符,但是在VIM中不能使用\n在替換的文本中,要用\r,如: :%s/--/\r/g 表示在所有“--”處進行分行。 VIM中刪除空白行,: :g/^$/d :g/^\s*$/d \s*代表空白字符
原創文章,作者:sixijie,如若轉載,請注明出處:http://www.www58058.com/34715