vim
vim是一個類似于vi的文本編輯器,不過在vi的基礎上增加了很多功能,在早起vim和Emacs編輯器打的很火熱,在1999年被linuxwork文本編輯分類的優勝者,而vim屈居第二,但2000年vim贏得了salashdot beanie的最佳開放源代碼文本編輯大獎,此時的Eamcs到第二位,vim和Emacs都是非常優秀的文本編輯器。
vi:Visual Interface,是一種文本編輯器,所謂文本數據是基于字符編碼的文件,。
文本編輯器分類:
行編輯器:所行編輯器是指一行一行的來編輯處理的工具,如之前講過的sed
全屏編輯器:編輯空間占整個屏幕,如nano,vi
vim即vi improved,vi的增強版,vim是模式化的編輯器
vim的工作模式又三種,編輯模式,輸入模式,命令擴展模式
vim的使用
打開文件
vim [option]…..filename….
+n:打開文件后,直接將光標定位只指定的行的行首
+/parttern:打開文件后,直接將光標定位都第一個被pattern匹配的行首
vim +filename,直接打開文件,光標在最后一行
vim –b filename filename二進制方式打開文件
vim –d file1 file2:比較多個文件
vim –m filename :只讀打開文件,這是不能寫入數據。
在使用文件存在時,如果文件不存在,文件被打開并的內容
如果文件不存在,就相當于新建了一個文件。
模式切換
esc鍵:從輸入模式轉換到編輯模式
從編輯模式轉換到輸入模式,可以使用一下命令
i:insert,在光標所在處輸入
I:在當前光標所在行的行首輸入
a:append,在光標所在處后面輸入
A:在當前光標所在行的行尾輸入
o:在當前光標所在行的下方打開一個新的行
O:在當前光標所在行的上方打開一個新的行
命令模式——>擴展命令模式
:
擴展命令模式——>命令模式
esc
鎖定和解鎖:ctrl+s,ctrl+q
關閉文件
擴展命令模式下推出文本
:q 退出文件
:q! 強制保存退出,丟棄做出的修改
:wq 保存退出
:x 保存退出
命令模式下退出文本
ZZ 保存退出
ZQ 不保存退出
擴展模式
按“:”進入Ex模式
創建一個命令提示符,處于底部的屏幕左側
命令
w寫入磁盤文件
wq保存退出
x 寫入并推出
q 退出
q!不存盤退出,即使修改的內容,也不會保存
r filename 讀文件內容到當前文件中
:r /etc/issue 將文件內容插入到光標所在的位置
!command 在命令擴展模式下指定命令
:!ls /etc/issue
r!command 將某個命令執行的記過讀入到當前文件中
r!cat /etc/issue
命令模式光標跳轉
字符間跳轉
h:左
l:右
j:下
k:上
記憶小技巧h在哪一排的最左邊所以是左,l在最右邊就是右,j可以理解成japan,日本在韓國的下邊,j就是下,而韓國的首字母是k,韓國在日本上方,k就是上
單詞間跳轉
w:下一個單詞的詞首
e:當前或下一個單詞的詞尾,end最后
b:當前或前一個單詞的詞首,before
#command:有#指定一次跳轉的單詞數,比如我想跳轉3個詞,就是3w
當前頁跳轉
H:當前頁的首部,可以理解成head
M:頁中間,middle
L:當前頁的底部,lower
行首行尾跳轉
^:跳轉至行首的第一個非空白字符
0:跳轉至行首,絕對行首
$:跳轉至行尾
行間移動:
#G:擴展模式下直接指定跳轉的行數如 :10跳至第十行
G:跳轉至文件內容的最后一行
1G,gg:跳轉至文件的第一行
句間移動
“(”:上一句
“)”:下一句
段落間移動:
“{”:上一段
“}”:下一段
命令行模式翻屏操作
翻屏
ctrl+f:向下翻一屏
ctrl+b:向上翻一屏
ctrl+d:向下翻半屏
ctrl+u:向上翻半屏
命令模式操作
字符編輯:
x:刪除光標處的字符
#x:刪除光標處的#個字符
xp:交換光標所在處的字符及其后面字符的位置,也就是后面的一個字符,換到前面的一個字符的位置
~:轉換大小寫,原本是大寫轉換成小寫,原本是小寫,轉換成大寫
命令替換(replace)
r:替換光標所在處的字符
R:切換成REPLACE模式
刪除命令
d:刪除命令,可結合光標跳轉字符(w,b,e),實現范圍刪除
d$:刪除到行尾
d^:刪除到非空行首
d0:刪除到行首
dw:刪除到下一個單詞的詞首
de:刪除到下一個單詞的詞尾
db:刪除至上一個詞的詞尾
#command,3dw
dd:刪除光標所在的行 3dd
D:從光標處一直刪除到行尾,留空行等同于d$
復制命令(yank)
y:復制,跟d類似
y$:從當前位置復制到行尾
y0: 從當前行復制到行首
y^:從當前位置復制到非空白行首
yw:從當前位置復制一個單詞詞首
ye:從當前位置復制一個單詞詞尾
yb:從當前位置復制單詞的詞尾
yy:復制行 3yy
y:復制整行
粘貼命令(paste)
p:緩沖區如果為整行,粘貼當前光標所在行的下面,否則,粘貼至光標所在處的后面
P(大寫):緩沖區如果為整行,粘貼當前光標所在行的上面,否則,粘貼至光標所在處的前面
改變命令(change)
c:修改后切換成插入模式
命令模式——>插入模式
c$:從光標的當前位置到行尾的內容刪除,用戶可新添加內容
c^:從光標的當前位置到行非空白字符行首的內容刪除,用戶可新添加內容
c0:從光標的當前位置到行絕對行首的內容刪除,用戶可新添加內容
cb:從光標的當前位置到上個單詞的詞首刪除,用戶可新添加內容
ce:從光標處到下個詞的詞尾刪除,用戶添加新內容
cw:從光標的當前位置到下個詞的詞首刪除,用戶添加新內容
#command
cc:刪除當前行并輸入新內容 3cc
C:刪除當前光標到行尾,并切換成插入模式
命令模式
10"xiaoesc粘貼‘xiao’1o次
y復制,d刪除,gU變大寫,gu變小寫(移動光標才會改變)
擴展模式:地址定界
:start,end
#: 具體第#行,例如2表示第2行;
#,#: 從左側#表示行起始,到右側#表示行結尾
#,+#: 從左側#表示的行起始,加上右側#表示的行數
:2,+3 表示2到5行
“.” :當前行
$:最后一行
: .,$-1當前行到倒數第二行
%:全文,相當于1,$
/part1/./part2/
從第一次被part1模式匹配到的行開始,到第一次被part2匹配到的行結束
:/root/,/abc/
#,/part/ 從#行到被模式第一次被part匹配到的行結束
/part/,$ 從第一次被模式匹配到的行到最后一行
使用方式:后跟一個編輯命令
d:刪除
y:復制
w /path/to/file 將范圍匹配到的行寫到指定的文件中
r file:在指定位置插入指定文件的內容
查找
/pattern:從當前光標所在處向文件尾部查找
?pattern:從當前光標所在處向文件首部查找
n:向下翻頁
N:向上翻頁
查找替換
s:在擴展命令模式下完成查找替換操作
格式: s/要查找的內容/替換的內容/修飾符
要查找的內容:可以使用模式
替換的內容:不能使用模式,但可以使用\1,\2….等后向印象引用符號;還可以使用“&”引用前面查找時找到的整個內容
修飾符:
i:忽略大小寫
g:全局替換;默認情況下,每一行只替換第一次出現
gc:全局替換,每次替換前詢問
查找替換中的分隔符/可替換為其他字符,例如
s@/root@/var@g
s#/boot#/#i
撤銷更改
u撤銷最近的更改
#u:撤銷之前多次更改
U:撤銷光標落在這行后所有此行的更改
按ctrl –r 重做最后的撤銷更改
.重復前一個操作
n.重復前一個操作n次
vim寄存器
有26個命名寄存器和1個無命名寄存器,常存放不同的剪貼版內容,可以不同會話間共享。用a,b,…,z表示,用“寄存器表示,放在數字和命令之間
如:3"tyy 表示復制3行到t寄存器中"tp 表示將t寄存器內容粘貼未指定,將使用無命名寄存器有10個數字寄存器,用0,1,…,9表示,0存放最近復制內容,1存放最近刪除內容。當新的文本變更和刪除時,1轉存到2,2轉存到3,以此類推。數字寄存器不能在不同會話間共享。
編輯二進制文件
以二進制方式打開文件
vim –b /bin/bash
擴展命令模式下,利用xxd命令轉換為刻度的十六進制
:%!xxd
編輯二進制文件
擴展命令模式下,利用xxd命令轉換回二進制
保存退出
可視化模式
允許選擇地文本
v:面向字符
V:面向行
ctr –v 面向塊
可視化鍵可用于移動鍵結合使用
w, ), {,方向鍵等
突出顯示的文字可以被刪除,復制,變更,過濾,搜索/替換等
多文件模式
vim file1 file2 file3 file4
:next 下一個
:prev 上一個
:first 第一個
:last 最后一個
:wall保存所有
:qall 退出所有
:wqall 保存退出所有
使用多個窗口
vim –o|-O file1 file2
-o:水平分割
-O:垂直分割
在窗口間切換ctrl+w, 左右鍵
單個文件窗口分割
ctrl+w,s:split,水平分割
ctrl+w,v:vertical,垂直分割
ctrl+w,q取消相鄰窗口
ctrl+w,o:取消全部窗口
:wqall退出
vim配置文件
全局:/etc/vimrc
個人:~/.vimrc
擴展模式:當前vim進程有效
顯示行號
set number簡寫為set nu
取消行號 set nonu
括號成對匹配
set showmatch簡寫set sm
取消 set nosm
自動縮進
啟用set ai
取消set noai
高亮搜索
啟用: set hlsearch
取消: set nohlsearch
語法高亮
啟用:syntax on
取消:syntax off
忽略字符的大小寫
啟用:set ic
取消:set noic
文件格式
啟用 fileformat=unix
不忽略:fileformat=dos
設置文本寬度
:set textwidth=60
:set wrapmargin=10
:help option-list 獲取幫助列表
:set or :setall 顯示set相關的命令
vim內置幫助
:help
:help topic
vimtutor(執行命令進入幫助文檔)
練習
復制/etc/profile至/tmp/目錄,用查找替換命令刪除/tmp/profile文件中的行首的空白字符
cp /etc/profile /tmp
vim profile
:s@^[[:space:]]@@g'
復制/etc/rc.d/init.d/functions文件至/tmp目錄,用查找替換命令為/tmp/functions的每行開頭為空白字符的行的行首添加一個#號
習
cp /etc/rc.d/init.d/functions /tmp
vim funtions
:s@^[[space:]]@#&@g'
原創文章,作者:fszxxxks,如若轉載,請注明出處:http://www.www58058.com/32125