目錄
一.關於vim編輯器
Vim是一個類似於Vi的著名的功能強大、高度可定制的文本編輯器,在Vi的基礎上改進和增加了很多特性。VIM是自由軟件。vim可以當作
vi的升級版本,他可以用多種顏色的方式來顯示一些特殊的信息。
[root@node5 ~]# rpm -qf `which vim`
vim-enhanced-7.4.160-5.el7.x86_64
[root@node5 ~]# rpm -qf `which vi`
vim-minimal-7.4.160-2.el7.x86_64
#從輸出可以看到,vim是vi的增加版,最明顯的區別就是vim可以語法加亮,它完全兼容vi
二.vim編輯器的模式
1.vim編輯器有三種模式,第一次進入是一般模式,左下角出現“Insert” 是編輯模式,輸入:是命令行模式。
- 從編輯模式到命令行模式怎樣切換? 編輯模式->esc->一般模式->: ->命令模式
- 一般模式怎樣進入編輯模式? 按a或i或o或A或I或O

2.總結:vim如何進入其它模式?
- a A o O i I 都是可以進行插入,編輯模式
- : 進入命令行模式
- v 進入可視模式
- ctrl+v 進入可視塊模式
- V 進入可視行模式
- R 擦除、改寫,進入替換模式
- 你進入以上模式后,想要退出 ,按esc
三.一般模式下的基礎操作
i 當前字符之前插入 (光標前)
I 行首插入 (行首)
a 當前字符之后插入 (光標后)
A 行尾插入(行尾)
o下一行插入 (另起一行)
O上一行插入(上一行插入)
x 向后刪除一個字符 等同於delete
X 向前刪除一個字符
u 撤銷一步 每按一次就撤銷一次
r 替換, "r"命令不是一個操作符命令。它等待你鍵入下一個字符用以替換當前光標下的那個字符。"r"命令前輟以一個命令記數是將多個字符都替換為即將輸入的那個字符。要把一個字符替換為一個換行符使用"r"。它會刪除一個字符並插入一個換行符。在此處使用命令記數只會刪除指定個數的字符:"4r"將把4個字符替換為一個換行符。
#光標定位
hjkl 左下上右
0 和 home鍵表示切換到行首, $和end鍵表示切換到行尾
gg 快速定位到文檔的首行 , G定位到未行
3gg 或者 3G 快速定位到第3行
/string(字符串) -----找到或定位你要找的單詞或內容,如果相符內容比較多,我們可以通過N、n來進行向上向下查找,並且vi會對查找到的內容進行高亮顯示,取消用 :noh
/^d ----^意思表示以什么開頭 ,,查找以字母d開頭的內容
/t$ -----$意思表示以什么結尾,,查找以字母t結尾的內容
vim + a.txt 打開文件后,光標會自動位於文件的最后一行
#對文本進行編輯操作
#刪除、復制、粘貼、撤銷
y 復制(以字符為單位):表示對單個字符進行復制,如果要復制整行,用yy(以行為單位),"y"操作符命令會把文本復制到一個寄存器3中。然后可以用"p"命令把它取回。因為"y"是一個操作符命令,所以你可以用"yw"來復制一個word. 同樣可以使用命令記數。如下例中用"y2w"命令復制兩個word,"yy"命令復制一整行,"Y"也是復制整行的內容,復制當前光標至行尾的命令是"y$"。
復制N行: Nyy ,比如: 2yy ,表示復制2行
dd(刪除,以行為單位,刪除當前光標所在行)
刪除N行: Ndd ,比如: 2dd ,表示刪除2行
p : P粘貼
剪切: dd
x 刪除光標所在位置的字符
D 從光標處刪除到行尾
u 撤銷操作
ctrl+r 還原撤銷過的操作,將做過的撤銷操作再還原回去,也就是說撤銷前是什么樣,再還原成什么樣
r 替換,或者說用來修改一個字符, "r"命令不是一個操作符命令。它等待你鍵入下一個字符用以替換當前光標下的那個字符。"r"命令前輟以一個命令記數是將多個字符都替換為即將輸入的那個字符。要把一個字符替換為一個換行符使用"r"。它會刪除一個字符並插入一個換行符。在此處使用命令記數只會刪除指定個數的字符:"4r"將把4個字符替換為一個換行符。
四.V模式(列模式)的基礎操作
1.進入v模式 移動光標選擇區域,編程的時候進行多行注釋的步驟:
- ctrl+v 進入列編輯模式
- 向下或向上移動光標,把需要注釋、編輯的行的開頭選中起來
- 如果需要刪除的話,就直接輸入x鍵進行刪除
- 如果要添加內容,就按大寫的I
- 再插入注釋符或者你需要插入的符號,比如"#"
- 再按Esc,就會全部注釋或添加了
2.刪除:再按ctrl+v 進入列編輯模式;向下或向上移動光標 ;選中注釋部分,然后按d, 就會刪除注釋符號。
五.命令模式下的基礎操作
:w 保存 save
:w! 強制保存
:q 沒有進行任何修改,退出 quit
:q! 修改了,不保存,強制退出
:wq 保存並退出
:wq! 強制保存並退出
:x 保存退出
#調用外部文件或命令
假設:我想要寫入我的網卡MAC地址,我要查看一下,當前在vim編輯文檔,照着寫。這樣好麻煩。
在命令行模式下操作:
:!ifconfig 調用系統命令
!+命令
讀取其他文件。(把其他文件中的內容追加到當前文檔中)
:r /etc/hosts
#文本替換
#格式:范圍(其中%所有內容) s分隔符 舊的內容 分隔符 新的內容(分隔符可以自定義)
#默認是每一行的第一個符合要求的詞(/g全部)
:1,3 s/bin/xuegod #替換第1到3行中出現的第一個bin進行替換為xuegod
:1,3 s/bin/xuegod/g #替換第1到3行中查找到所有的bin進行替換為xuegod
:3 s/xue/aaaaa #只把第3行中內容替換了
:% s/do/xuegod/g #將文本中所有的do替換成xuegod
:% s/do/xuegod/gi #將文本中所有的do替換成xuegod, 並且忽略do的大小寫
:% s@a@b@g #將文本中所有的a替換成b
六.自定義vim環境
可以根據自己的喜好自定義vim環境。
#臨時設置vim環境
:set nu #設置行號
:set nonu #取消設置行號
:noh #取消高亮顯示
#永久設置vim環境
[root@node5 ~]#vim /etc/vimrc #設置后會影響到系統所有的用戶
[root@node5 ~]#vim ~/.vimrc #在用戶的家目錄下,創建一個.vimrc。這樣只影響到某一個用戶,沒有自己建一個
例:
[root@node5 ~]# cat /root/.vimrc
set nu
七.vim同時打開多個文件
1.以上下形式,打開兩個文檔,使用ctrl+ww在兩文檔之間進行切換編輯
#小寫的o上下分屏
[root@node5 ~]#vim -o /etc/passwd /etc/hosts
2.以左右方式打開兩個文檔,使用ctrl+ww在兩文檔之間進行切換編輯
#大寫O左右分屏
[root@node5 ~]#vim -O /etc/passwd /etc/hosts
八.比較兩個文件的內容
比較兩個文件的內容有兩種方法:diff和vimdiff。
[root@node5 ~]#cp /etc/passwd mima.txt
[root@node5 ~]#echo aaa >> mima.txt
[root@node5 ~]#diff /etc/passwd mima.txt
40a41
> aaa
[root@node5 ~]#vimdiff /etc/passwd mima.txt