在Linux的世界里,絕大部分的配置文件都是以ASCII的純文本形式存在的,所以作為一名優秀的Geek,熟練掌握一種文本編輯輯器是非常重要的。
Linux世界中的文本編輯器有很多,比如:Emacs,pico,nano,vim等。
但是vi是所以類Unix系統都會內置的文本編輯器,功能強大,且具備一定的程序編寫能力,(其他文本編輯器則不一定存在哦?。┧韵旅嫖覀冎攸c介紹vim。
我們可以把vim視為高版本的vi。
好了,下面我們說下vim的具體用法吧!
vim打開一個文件非常簡單:
#vim [option]… [FILE] 例如: #vim /etc/hosts
這樣就可以打開文本文件了。
vim也可以什么都不跟,直接就敲vim,可以查看版本等信息。
vim有三種工作模式,分別是:編輯模式(也叫命令模式)、輸入模式、末行模式。下面我們分別介紹下!
編輯模式:我們先拷貝/etc/rc.d/init.d/functions到/tmp/下,然后在用vim打開function文件。
這樣我們就用vim打開一個文本文件了!當然打開文件不是目的,目的是對文件進行修改配置。
下面我們就細述下vim。
vim有三種工作模式:編輯模式(也叫命令模式),輸入模式,末行模式。我們先談下三種模式的作用與轉換關系。
編輯模式:用vim打開文件時默認的模式,在這種模式下,鍵盤的操作常被理解為編輯命令,我們可以移動光標和做刪除復制的操作。
輸入模式:可以對文件進行修改和編寫,如果想退回編輯模式就要按下【Esc】鍵了。
末行模式:vim內置的命令接口,執行vim的內置命令。
下面用張圖展示個人理解三者之間的轉換關系:
男 媒人 女
如圖所示,我們可以把這種相親,男放有問題需要找媒人溝通,而不能直接找女方,女方同理,編輯模式即起到紐帶的作用。
下面我們介紹下編輯模式下我們可以用到的命令:
i:在光標所在處的前方轉換為輸入模式
a:在光標所在處的后方轉換為輸入模式
o:在光標所在處的下方新建一個空白行并轉換為輸入模式
R:轉換為輸入模式并一直替換光標所在處的字符
I:在光標所在行的行首轉換為輸入模式
A:在光標所在行的行尾轉換為輸入模式
O:在光標所在行的上方新建一個空白行并轉換為輸入模式
那么當我們編輯完怎樣退出呢?
退出文件:
在末行模式下
:q!不保存退出
:wq 保存退出
:x 保存退出
:wq!強制保存并退出
:w!若文件屬性為“只讀”,強制寫入。
光標的移動:
h:光標向左移動一個字符
j:光標向下移動一行
k:光標向上移動一行
l:光標向右移動一個字節
個人習慣了用上下左右鍵,但是這些鍵還是有必要知道的。
單詞間的移動:
w:下一個單詞詞首
e:當前單詞或下一個單詞詞尾
b:當前單詞或下一個單詞詞首
這里支持#w,#e,#b的是用,#代表數字,比如:3w:后面的第三個單詞的詞首。
行內移動:
^:移動到行首(這里指的行內第一個非空白字符)
0:絕對行首
$:絕對行尾
編輯命令:
x:刪除光標所在處的字符
#x:刪除從光標所在處向右的#個字符
刪除命令d:
可以結合w,b,e,$,0,^一起使用
例如:
dw:刪除一個單詞
dd:刪除光標所在行
#dd:刪除光標所在行及下面的#-1行
D:=d$刪除光標所在處到行尾
復制命令:
y:yank,復制
同理也可以結合w,b,e,$,0,^來使用
#yy:復制#行,包括光標所在的行
Y:=yy
粘貼命令:
p:past,粘貼
行級別:
p:粘貼于當前行下方
P:粘貼于當前行上方
小于行級別:
比如:3yw
p:粘貼于當前光標所在處的后方
P:粘貼于當前光標所在處的前方
修改命令:
c:change
先刪除,再轉換為輸入模式
同理也可以結合光標跳轉字符使用w,e,b,$,0,^,修改跳轉范圍內的字符 2cw
在我們編輯過程中難免會有操作失誤的時候,這里vim同樣提供給我們撤銷命令。
撤銷命令:
u:在編輯模式下按u鍵即可,就好比我們在windows下習慣用的Ctrl+z
#u:撤銷最近的#次操作
如果我們不想啟用剛剛的撤銷操作呢,想返回撤銷之前的樣子呢?
按下Ctrl+r即可
末行模式:
在末行模式下也可以鎖定行
:# 敲回車后直接跳轉到第#行
:$ 跳轉到最后一行
內容鎖定:
格式:starpos,endpos
#:第#行
.:當前行
$:最后一行
%:全文,相當于1,$
例:10,$-1:第十行到倒數第二行
c,
d,y等命令可以直接附加在地址范圍后使用
上圖說明:
內容鎖定還支持將選定范圍內的內容保存到另一個文件中和將指定文件中的內容讀取到指定位置
w /path/to/somefile:將選定范圍內的內容保存至某文件中 (.,$w /tmp/text.txt)
將/etc/issue中的內容保存在function中
vim還支持搜索替換
格式為:s/查找模式/要替換成的內容/gi
查找模式:可以使用正則表達式
要替換成的內容:不能使用正則表達式,僅能使用引用
%s/file/FILE
g:global,全局替換
i:模式匹配不區分字符大小寫
例如:替換/tmp/functions文件中的/etc/sysconfig/init為/var/log
文本查找:
/PATTERN
?PATTERN
n:搜索文本中的下一個etc單詞
N:搜索上一個
用?ect大小寫n的作用相反
多文本模式:
:next 下一個
:previous 上一個
:last 最后一個
:first 第一個
上圖說明:
多文本編輯完后可以按wqall保存并退出。
翻屏操作:
Ctrl+f:向文件尾部翻一屏
Ctrl+b:向文件首部翻一屏
Ctrl+d:向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
j:向文件尾部翻一行
k:向文件首部翻一行
多窗口模式:
vim
-o:水平分割
-O:垂直分割
Ctrl+w:切換窗口
Ctrl+w后按s:水平分割
Ctrl+w后按v:垂直分割
如圖:
窗口屬性定義:
:set nu 顯示行號
:set nonu 取消行號
:set ai 自動縮進(提示:同志們寫腳本/代碼時特別有用哦?。?/p>
:set noai
:set ic 忽略字符大小寫
:set noic
其他定義還請同志們自行實驗。
語法高亮:
:syntax on | off
搜索高亮:
:set hlsearch
:set nohlsearch
這些定義的屬性都可在配置文件中設置
全局:/etc/vimrc
用戶:~/.vimrc
好了vim的常用命令就講到這里了,有更豐富的用法和講述不正確的地方還請同志們指正出來!
謝謝大家!
原創文章,作者:水蒸氣,如若轉載,請注明出處:http://www.www58058.com/3491
內容豐滿,少了些層次
@stanley:謝謝老師指點!下次改進!