在這天地間,流傳這兩大神器的故事:聽說Emacs是神的編輯器,而Vim是編輯器之神。正所謂,工欲善其事,必先利其器。今天就和你們分享一下關於編輯器之神Vim的傳說。vim
1、Vim的歷史
VI:Visual Interfaceapp
何爲文本文件?編輯器
文本文件通常指只有字符原生編碼構成的二進制計算機文件,與富文本相比,其不包含字樣樣式的控制元素,可以被最簡單的文本編輯器直接讀取學習
文本文件常見的格式?編碼
ASCII、MIME、.txt、...spa
那麼,何爲文本編輯器?命令行
文本編輯器是計算機軟件中的一種。主要用於用來編寫和查看文本文件。code
文本編輯器的種類:教程
行編輯器:sed接口
全屏編輯器:nano、vi、vim
2、Vim編輯器的基本操做
VIM:模式化的編輯器
基本模式
編輯模式 (命令模式)
輸入模式 (插入模式)
末行模式 (vim內置的命令行接口)
Note:打開的時候默認的模式是編輯模式
打開文件
# vim [OPTION]... FILE...
+#
:打開文件後,直接讓光標處於第#行的行首
+/PATTERN
:打開文件後,直接讓光標處於第一個被PATTERN匹配到的行的行首;
模式轉換
模式轉換:
編輯模式 - - > 輸入模式
i
:insert,在光標所在處前面插入;
a
:append,在光標所在處的後面插入;
o
:open,在當前光標所在行的下一行打開新行,並轉換爲輸入模式;
I
:在當前光標所在行的行首輸入;
A
:在當前光標所在行的行尾輸入;
O
:在光標所在行的上一行打開一個新行,並轉換爲輸入模式;
輸入模式 - - > 編輯模式
ESC
編輯模式 - - > 末行模式
:
末行模式 - - > 編輯模式
ESC
關閉文件
:q
:退出
:!
:強制退出,丟棄作出的修改;
:wq
:保存退出;
:x
:保存退出;
:w /PATH/TO/SOMEWHERE
:當前編輯的文本保存到別的文件;
ZZ
:保存退出;
圖示說明以下: (轉載請註明出處)
字符間跳轉:
h,j,k,l
h
:左
l
:右
k
:上
j
:下
#COMMAND
:跳轉由#指定的個數的字符;
單詞間跳轉:
w
:跳轉至下一個單詞或後一個單詞的詞首;
e
:跳轉至當前或下一個單詞的詞尾;
b
:跳轉至當前或上一個單詞的詞首;
#COMMAND
:由#指定一次跳轉的單詞數;
行首行尾跳轉:
^
:跳轉至行首的第一個非空白字符;
0
:跳轉至絕對的行首;
$
:跳轉至絕對行尾;
行間移動:
#G
:跳轉至由#指定行;
G
:跳轉至最後一行;
1G
,gg
:跳轉至第一行;
句間移動:
)
:跳轉至下一個句子;
(
:跳轉至上一個句子;
段落間移動:
}
:跳轉至下一段
{
:跳轉至上一段
字符編輯:
x
:刪除光標處的單個字符;
#x
:刪除光標處起始的#個字符;
xp
:交換光標所在處的字符及其後面字符的位置;
替換命令:
r
,replace
r
:替換光標所在處的字符;(單字符替換)
刪除命令:
d
:刪除命令,可結合光標跳轉字符,實現範圍刪除;
d$
:刪除至絕對行尾
d^
:刪除至行首的第一個非空白字符
d0
:刪除至絕對行首
dd
:刪除光標所在行;
#dd
:向下刪除#行;
粘貼命令:
(p
,put,paste)
p
:緩衝區中存儲的若是爲整行內容,則粘貼至當前光標所在行的下方;不然,則粘貼至當前光標所在處的後面;
P
:緩衝區中存儲的若是爲整行內容,則粘貼至當前光標所在行的上方;不然,則粘貼至當前光標所在處的前面;
複製命令:
y
,yank
y
:複製,工做行行爲類似於d命令;
y$
:複製至絕對行尾
y0
:複製至絕對行首
y^
:複製至行首的第一個非空白字符
yy
:複製整行
#yy
:複製多行;
改變命令:
c
,change
c
:修改
編輯模式 - -> 輸入模式
cc
:刪除並輸入新內容
#cc
:一次刪除#行
3、其它編輯操做
v
:按字符選定
V
:按行選定
Note:常常結合編輯命令;
u
(undo):撤銷此前的操做;
#u
:撤銷指定次數的操做;
撤銷此前的撤銷:
Ctrl+r
重複前一個編輯操做:
.
4、翻屏操做
Ctrl+f
:向文件尾部翻一屏;
Ctrl+b
:向文件首部翻一屏;
Ctrl+d
:向文件尾部翻半屏;
Ctrl+u
:向文件首部翻半屏;
vim自帶的練習教程:
vimtutor
5、vim的末行模式
內建的命令行接口;
特性:
(1). 地址定界
:start_pos,end_pos
#:
具體的第#行,例如:2表示第2行;
#,#
:從左側#表示起始,到右側#表示結束;
#,+#
:從左側#表示的行開始,加上右側#表示的行數;
.
當前行;
$
:最後一行;
%
:全文;至關於(1,$)
/pat1/,/pat2/
:表示從第一次被pat1匹配到的行開始,一直到pat2匹配到的行結束
使用方式:
後跟一個編輯命令:
d
:刪除指定範圍的內容
y
:複製指定範圍的內容
w /PATH/TO/SOMEWHERE
:將範圍內的行另存至指定文件中;
r /PATH/FROM/SOMEFILE
:在指定位置插入指定文件中的全部內容;
(2). 查找
/PATTERN
:從當前光標所在處向文件尾部查找
?PATTERN
:從當前光標所在處向文件首部查找
n
:與命令同方向;
N
:與命令反方向;
(3). 查找並替換
s
:在末行模式下完成查找替換操做
s/要查找的內容/替換爲的內容/修飾符
要查找的內容:可以使用模式;
替換爲的內容:不能使用模式,但可使用1, 2, ...等後向引用符號;好可使用"&"
引用前面查找時查找到的整個內容;
修飾符:
i
:忽略大小寫
g
:全局替換;默認狀況下,沒一行只替換第一次出現的內容;
查找替換中的分隔符/
可替換爲其它字符,例如:
s@@@
s###
## 6、vim的文件模式
vim FILE1 FILE2 FILE3 ...
:next
切換至下一個文本
:prev
切換至前一個文本
:first
切換至前一個文本
:last
切換至最後一個文本
:wall
保存全部
:qall
退出全部
vim -o|-O FILE1 FILE2 ...
-o
:水平分割
-O
:垂直分割
在窗口間切換:Ctrl+w,Arrow
Ctrl+w,s
:split,水平分割
Ctrl+w,v
:vertical,垂直分割
配置文件:(永久有效)
全局:/etc/vimrc
我的:~/.vimrc
(默認不存在,須要本身建立)
末行:(當前vim進程有效)
(1) 行號:
顯示:set number
,簡寫爲:set nu
取消顯示:set nonumber
,簡寫爲:set nonu
(2) 括號匹配:
匹配:set showmatch
,簡寫爲:set sm
取消匹配:set nosm
(3) 自動縮進:
開啓:set ai
禁用:set noai
(4) 高亮搜索
開啓:set hlsearch
禁用:set nohlsearch
(5) 語法高亮
開啓:syntax on
禁用:syntax off
(6) 忽略字符大小寫
啓用:set ic
禁用:set noic
在末行模式下:help SUBJECT