vim編輯器
vim編輯器是linux中最強大的全屏幕純文本編輯器,他是vi編輯器的增強版。 文本編輯器: 文本:純文本,在ASCII角度講是純粹的不加任何修飾的文本信息 支持Unicode編碼方式 文本編輯器種類: 行編輯器:sed 全屏編輯器:nano,vi vi : (VIsual Interface) vim: VI IMproved 其他編輯器: gedit: 一個簡單的圖形編輯器 gvim:一個vim編輯器的圖形版本
vim: 模式化的編輯器,
基本常用模式: 命令模式 編輯模式,也叫插入模式 末行模式:也叫擴展命令模式,內置的命令行接口 打開文件: vim [options] [file ..] 如果vim打開的文件不存在,他會自動創建此文件,并把編輯的內容保存在此文件中。如果文件事先存在,則會打開此文件,并且光標默認處在第一行的第一個字符上。 關閉vim:兩個大寫ZZ。就可以保存關閉 +#:打開文件后,字節讓光標處于第#行行首 +/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行首。 vim + file :打開文件后,光標自動處在尾行行首 +#: 打開文件后,直接讓光標處于第# 行的行首 +/ PATTERN :打開文件后,直接讓光標處于第一個被PATTERN 匹配到的行的行首 vim + file 直接打開file, 光標在 最后一行行首[object Object]
vim –b file 二進制方式打開文件 vim –d file1 file2… 比較多個文件:在文件不同的位置會有高亮顯示
vim -m file 只讀打開文件 ex file 或 或 vim –e 直接進入ex 模式轉換: 命令模式:默認模式 命令模式--> 編輯模式: i:insert,在光標所在處前方輸入 a: append,在光標所在處后方輸入 o: 在光標所在處下方打開一個新行,光標直接處于新行行首 I:在當前光標所在行的行首輸入。 A:在當前光標所在行的行尾輸入。 O: 在光標所在的行的上方打開一個新行。 編輯模式-->命令模式 只需要敲Esc鍵 命令模式-->末行模式:擴展命令模式 : 末行模式:擴展命令模式-->命令模式 按Esc 鎖定和解鎖:CTRL+s,Ctrl+q 鎖定后通過鍵盤輸入的操作,不通過輸出設備顯示,但是在解鎖之后會插入到光標所在位置后方插入前面輸入設備輸入的數據。 關閉文件: ZZ:保存并退出 ZQ:不保存退出 末行模式下:輸入q退出 q!強制退出,不保存此前的編輯操作。 wq保存修改并退出 x保存并退出 w/PATH/TO/SOMEFILE 保存至新文件FILE并退出,相當于另存為的效果
光標跳轉:
字符間跳轉: h:光標向左跳轉一個字符 l:光標向右跳轉一個字符 j:光標向下跳轉 k:光標向上跳轉 #COMMAND:跳轉由#指定的個數的字符 單詞間跳轉 w:光標跳轉到下一個單詞的詞首 e:光標跳轉到當前或者下一個單詞的詞尾 b:光標跳轉到當前或前一個單詞的詞首 #COMMAND :跳轉由#指定的個數的單詞 行首行尾跳轉 ^:光標跳轉至行首的第一個非空白字符 0:跳轉至行首 $:光標跳轉至行尾 行間跳轉 #G:光標跳轉至由#指定的行 1G或者gg:光標跳轉至第一行 G:跳轉至最后一行 句間跳轉 ):跳轉到下一句 (:跳轉到上一句 段間跳轉 }:跳轉到下一段 {:跳轉到上一段 翻屏操作; Ctrl + f :向文件尾部翻一屏 Ctrl + b :向文件首部翻一屏 Ctrl + d :向文件尾部翻半屏 Ctrl + u : 向文件首部翻半屏 Enter : 按行向后翻
vim的編輯命令:
-
字符編輯:
x:刪除光標所在處的字符; #x:刪除光標所在處起始的#個字符 xp:交換光標所在處的字符與其后面字符所在的位置 替換命令:(replace) rCHAR:替換光標所在處的字符為CHAR
-
刪除命令
d:刪除命令,可結合光標跳轉字符,實現范圍刪除; d$:刪除當前光標所在處至行尾的字符 d^:刪除當前光標所在處至行首第一個非空白字符位置 dd:刪除光標所在行的整行字符 #dd:刪除光標所在處的行起始的共#行字符; 刪除的字符不會被清掉,會保留在緩沖區當中,但是只能粘貼最后一次操作的東西
-
粘貼命令:(put paste)
p:緩沖區的內容如果為一整行,或者為多個整行,則粘貼在當前光標所在行的下方;否則粘貼至當前光標所在出的后方。 P:緩沖區的內容如果為一整行,或者為多個整行,則粘貼在當前光標所在行的上方;否則粘貼至當前光標所在出的前方。
-
復制命令:(yank)
y:復制,工作行為相當于d命令; y$:從光標所在位置復制到行尾 y^:從行首非空白字符開始復制到光標所在位置 y0:從行首復制到光標所在位置 改變命令(change ,c) 編輯模式--> 輸入模式,實現刪除操作; cc:刪除光標所在處的行,并轉換為輸入模式 #cc:刪除光標所在處以及后面的#行,并轉換為輸入模式
-
其他的編輯操作:
可視化模式: v:按字符選定 V:按行選定 結合編輯命令:d , c , y 撤銷操作:(undo) u:撤銷此前的操作,一般默認可以撤銷50次。前提是此前操作都保存在緩沖區當中。 #u:撤銷此前#次的操作 撤銷此前的撤銷操作: Ctrl + r :恢復此前的撤銷操作 重復執行前一個編輯操作: . :重復此前的編輯操作。
vim自帶的練習教程:vimtutor
vim末行模式:(擴展命令行模式)
內建的命令行接口 (1)地址定界: :start_pos[,end_pos] #:特定的第#行,例如5就表示第5行 .:點號表示當前行 $:表示最后一行 #,#:從第#行到第#行,左側為起始行,右側為結束行 #,+#:指定行范圍,左側為起始行的絕對編號,右側為相對左側行號的偏移量。 %:表示全文 /pattern/:第一次被指定的模式所匹配到的行,光標所在處起始,到文件尾部的第一次。 /first/,$,從第一次first所匹配到的行到最后一行 /pattern1/,/pattern2/:從光標所在處起始,第一次由pattern1匹配到的行開始,至第一次pattern2匹配到的的行之間的所有行。 可同編輯命令一同使用,實現編輯操作: d:刪除匹配到的內容 y:復制匹配到的內容 c:替換匹配到的內容 w /PATH/TO/SOMEFILE:將范圍內的文本保存在指定的文件中 r /PATH/FROM/SOMEFILE:將制定文件中的文本讀取并插入至指定位置。 !COMMAND 在末行模式下執行命令,不對當前文件產生影響 r!COMMAND 將命令執行結果插入當前光標所在位置的后方 (2)查找 /PATTERN:從當前光標所在處向文件尾部查找能夠被當前模式匹配到的所有字符串 ?PATTERN:從當前光標所在處向文件首部查找能夠被當前模式匹配到的所有字符串 n:下一個,與命令方向相同 N:上一個,與命令方向相反 (3)替換查找并替換 s:末行模式的命令:使用格式: s/要查找的內容/替換為的內容/修飾符 要查找的內容:可使用正則表達式 替換為的內容:不能使用正則表達式,但可以引用; 如果“要查找的的內容”部分在模式中使用了分組符號:在“替換為的內容”中使用向后引用。 直接引用查找模式匹配到的全部文本; 修飾符:主要是用來實現修飾查找替換時的某些功能。 i:查找時忽略大小寫 g:全局替換,意味著一行中如果匹配到多次,則均替換。 可把分隔符替換為其它非常用字符: s@@@ s###
vim的多文件模式;
多文件: vim FILE1 FILE2 。。。 在文件間切換: next :下一個 prev :上一個 first: 第一個 last:最后一個 退出所有文件: wqall 保存所有文件并退出 wall 保存所有文件 qall 退出所有文件 多窗口: -o:水平分割窗口 -O: 垂直分割窗口 切換窗口:Ctrl+w 摁完松開 在摁向上或者向下鍵上下切換窗口 Ctrl+w 摁完松開 在摁向左或者向右鍵左右切換窗口
定制vim的工作特性
對vim的修改要想永久有效,需要對其配置文件進行修改: 全局永久有效:/etc/vimrc 個人永久有效:~/.vimrc 在末行模式(擴展命令模式)下修改,只對當前vim進程有效。 (1)行號 顯示:set number ,簡寫為set nu 取消顯示:set nonumber ,簡寫為set nonu (2)括號成對匹配 匹配:set showmatch ,簡寫set sm 取消:set noshowmatch , 簡寫 set nosm (3)自動縮進 啟用:set ai 禁用:set noai (4)高亮搜索 啟用:set hlsearch 禁用:set nohlsearch(5)語法高亮 啟用:syntax on 禁用:syntax off (6)忽略字符的大小寫 啟用:set ic 禁用:set noic (7)文件格式 啟用:fileformat = unix 不忽略:fileformat = dos (8)設置文本高度 set textwidth = 65 set wrapmargin = 15
當天作業:
-
1、如何設置tab縮進為4個字符?
set ts=4
-
2、復制/etc/rc.d/init.d/functions文件至/tmp目錄;替換/tmp/functions文件中的/etc/sysconfig/init為/var/log;
[root@localhost ~]#sed 's@/etc/sysconfig/init@/var/log@g' /tmp/functions
-
3、刪除/tmp/functions文件中所有以#開頭,且#后面至少有一個空白字符的行的行首的#號;
[root@localhost ~]# sed -r 's@^#([[:space:]]+)@\1@' /tmp/functions
原創文章,作者:dxkboke,如若轉載,請注明出處:http://www.www58058.com/32548