VIm學習筆記
VIM(interface improvrd VI)是VI(visual interface)的增強版,是處理ASCII碼的模式化的文本編輯器,功能很多,對於我們初學者來說,只需要先學會基本的操作就可以了,好了廢話不多說,直接進入主題。
VI的三種模式:命令行模式(command mode),爲剛進入VI的默認模式,此在此模式中,向裏面輸入的任何數據VI都會把它理解爲命令----表現爲揚聲器在不停的滴滴作響,也就是說在命令行模式是不能輸入任何數據的,只能輸入命令。 想要對文件進行編輯的話要轉換爲輸入輸入模式(input mode)才能進行輸入,按下小寫字母a(append)鍵就進入了輸入模式,左下角會有‘insert’提示信息,可以在當前光標停留處的下一個字符對文本附加編輯。 對文本進行編輯完了之需要對文本進行保存等操作,此時按鍵盤左上角的(esc)首先進入命令模式,然後再按冒號(:)就進入了VI的第三種模式:末行模式(last mode),整個屏幕的最下面那一行,在此模式中可以對文本進行編輯,可以顯示行號(set =num/nonum) 、顯示腳本顏色(set syntax =on/off)等,所有在編輯模式下的操作都能在末行模式下操作;而且末行模式還能完成一些編輯模式下不能完成的功能和特性;如使用正則表達式對文本進行查找、替換等。 VI三種模式簡圖
一、字符間跳轉:
h 左邊
i右邊
j下
k上
支持數字加跳轉字符使用,如5h表示向左邊跳轉5個字符
二、單詞間跳轉:
w跳至後一個單詞的詞首;
e跳至當前和下一個單詞詞尾;
b跳至當前和下一個單詞詞首;
三、句子間跳轉:
)下一句
(前一句
段落間跳轉:
}下一段
{前一段
四、行間跳轉:
^跳轉到行首的第一個非空白字符
$跳轉到行尾
0跳轉到絕對行首
1G、gg跳轉至文件首部的第一個字符
G:最後一行
NG:某一行
五、關閉文件:
在末行模式下:
:w保存
:q退出
:!強制
:wq保存退出
:q!強制退出
:x保存退出=wq
wall:所有的都保存
qall:所有的都不保存
w!強制保存
wqall:所有的都保存退出
在編輯模式下:
輸入大寫的ZZ也可以保存退出
六、打開文件:
Vi+選項+文件
Vi+數字-----表示打開文件之後光標停留在數字行
Vi打開多個文件的方法及文件間切換:
next 下一個
Last最後一個
First第一個
Prev前一個
-o水平分割
-O垂直分割
按住ctrl別鬆開按w,,鬆開ctrl和w,,再按上下鍵箭頭即可切換
q退出光標所在文件,qall退出所有的,都可以和all結合使用。
七、編輯命令:
x刪除光標所在處右邊單個字符
nx刪除光標所在處右邊n個字符
八、d刪除命令
通常和跳轉的單詞一起結合使用,,只要能跳轉就能刪,能跳到哪兒就能刪到哪兒
dw
db
de
d)
d(
dd刪除光標所在行
ndd刪除光標所在行及向下n行
d^刪除光標所在出一直到行首
d$刪除光標所在處一直到行尾
在末行模式下使用d命令
末行模式地址定界:
起始地址,結束地址
1,7d刪除從第一行到第七行
%表示全文
1,$(不但可以表示行尾還可以表示最後一行,定界用的)在定界時還支持相對錶達法
1,+6從第一行開始往下再走六行
1,$-2從第一行到倒數第三行
.點表示當前光標所在行
.,+3
,.+3d除了這一行之外再加三行總共是四行
%d全文刪除
注:在VI編輯過程中,如果對之前的操作沒有保存,所有的操作都可以撤銷到最原始的狀,態,默認會保存最近50次的操作,u命令可逐一撤銷此前的編輯操作。
撤銷此前的撤銷!Ctrl+r
粘貼:paste,put,p
刪除的是整行:
p在光標所在行的下方粘貼
P在光標所在行的上方粘貼
刪除的不是整行:
p在當前光標所在字符的後方粘貼
P在當前光標所在字符處的前方粘貼
複製:y--yank
yy複製一行
nyy複製n行
y$複製到行首
y^複製到行首
複製的是整行:
P在當前光標所在行的下方粘貼
P在當前光標所在行的上方粘貼
複製的不是整行:
P在當前光標所在字符處的後方粘貼
P在當前光標所在字符處的前方粘貼
Vimtutor--Vi自帶的練習VI文本操作
Vi練習案例一、寫一個腳本添加10個用戶,密碼同用戶名相同,並統計這10個用戶的ID號之和。
1 #author:ice 2 #date:2013-07-17 3 #weather:just fine 4 #!/bin/bash 5 for U in {1..10}; 6 do 7 useradd user$U; 8 echo user$U | passwd --stdin user$U 9 done
#chomod +x adduser.sh#賦權 #bash -n assuser.sh#檢查語法錯誤 #./adduser.sh#執行腳本 #tail /etc/passwd#查看執行結果
九、翻屏操作:
Ctrl+f向文件尾部翻一屏
Ctrl+b向文件首部翻一屏
Enter、j鍵逐行向下翻
K鍵向上逐行跳轉
Ctrl+d向文件尾部翻半屏
Ctrl+u向文件首部翻半屏
搜索:
/關鍵字從當前光標所在處向尾部查找
?關鍵字從當前光標所在處向首部查找
n下一個跟查找方向相同的方向
N前一個跟查找命令相反的方向
在VI編輯器中,可以使用模式(正則表達式所構成的匹配標準)
如查找以d開頭n結尾中間跟了任意兩個字母
#/\<d[]:alpha:]]\{2\}n\>
補充:正則表達式在不同的語言中幾乎都支持,perl、python、Java、php等,但是他們所支持的元字符是各不相同的。
而grep正則表達式所兼容的元字符是兼容POSIX的,其用法之獨特,功能之強大,實乃是運維人員的必備利器。
十、基本正則表達式:
1)指定匹配字符類:
1).______________點代表任意單個字符 2)[ ]————中括號指定範圍內的任意單個字符 3)[^ ]指定範圍外的任意單個字符使用脫字符取反 指定匹配次數: 1)*星號匹配其前的字符任意次 2)\?問號匹配其前的字符零次或一次 3)\{m,n\}匹配其前的字符指定次數則使用花括號,至少m次之多n次 4)\{m\}精確匹配前面出現的字符m次
2)匹配位置錨定:
^----------錨定行首使用脫字符
$-----------錨定行尾使用美元符號
\<錨定詞首使用f反斜線加左尖括號
\>錨定詞尾使用反斜線加右尖括號
\(\)小括號是用來分組的,內容都寫在小括號中間,分組以後可以在後面進行引用,\1,\2
1表示第一個左括號以及與之匹配的右括號括起來的內容;2表示第二個左括號以及與之匹配的第二個右括號匹配起來的內容。以此類推。。。。。。
在後方引用前面匹配到的內容。
擴展的正則表達式元字符:
+一次以上至少一次
{m.n}至少m次,之多n次
|或者 a|b|獲得的是左側的所有內容
也支持分組()不需要加反斜線了
十一、編輯命令:
c:刪除和編輯一些內容並轉換至輸入模式 cc刪除一行並轉換至輸入模式 Ncc刪除n行並轉換至輸入模式 c$刪除從當前光標所在位置到行尾並轉換至輸入模式 c^刪除刪除當前光標所在位置到行首並轉換至輸入模式 c0刪除當前光標所在字符到行首並轉換至輸入模式
十二、VIM可視化模式:
Visual模式, v------選中光標劃過的字符 V-------選中光標劃過的行,整行選取 Esc,esc回到編輯模式 複製大篇文檔,光標所過之處按下y鍵就複製了
十二、同一文檔窗口分割:
Ctrl+w,s水平分割 Ctrl+w,v垂直分割 Ctrl+箭頭,分割窗口之間跳轉
十三、窗口屬性定義:
顯示行號:在末行模式下設定數字,所有的功能想關閉,只需在前面加no即可
Set number,set nu Set number,set nonu 只對當前窗口生效 自動縮進: Set ai ----auto indent自動縮進,set ai
十四、不區分字符大小寫
Set igonrecase ,set ic Set noic
十五、獲取幫助:
末行模式下直接輸入Set
十六、顯示匹配的括號:
Set showmatch ,set sm Set nosm
十七、語法着色:
Syntax on Syntax off
十八、搜索結果高亮顯示:
Set hlsearch Set nohlsearch
十九、VIM的配置文件
全局:/etc/vomrc 個人:~/.vimrc不存在,需自己創建
案例:
# vim /etc/vimrc
添加一行
#Se nu------------顯示行號
wq保存退出即可,下次使用VI編輯就顯示行號了,對系統中所有用戶有效
注:只有管理員root纔有權限修改全局配置。
二十、查找替換:
:s ///---------->s和三個斜線後面跟上修飾符組成;
前兩個斜線之間的是查找模式,後兩個斜線之間是替換成的內容,三個斜線表示分隔符,用來分割那一部分是查找模式,哪一部分是替換成的內容。
格式:------>:地址定界s/查找模式/替換成的內容/gi,g和i是修飾符,修飾什麼呢?默認情況下查找命令在一行中查找到被匹配過的字符串以後只替換第一個,如果一行中有多個都能匹配到,它只能替換第一個;如果一行當中出現N個都給替換則使用g--global表示全都替換。I表示不區分大小寫
注:查找的模式可以使用正則表達式,替換後的內容不能使用模式
%=1,$-------->表示全文
示例如下:
#1,$s/good/i love linux so much/g