1、vim使用介紹
介紹linux
在linux系統中,大部分配置文件都是ASCII的純文本形式存放的,因此咱們在修改系統設置的時候使用簡單的文本編輯軟件就能夠實現了,若是你使用過windows當中的word的話,那麼你可能會感受linux字符界面的文本編輯工具並非太好用,畢竟沒有圖形窗口,看着不會太舒服。可是既然要學習linux,掌握並熟練使用文本編輯工具是必不可少的技能,在linux當中的文本編輯工具備不少,如emacs pico nano joe vi/vim 等等shell
既然有這麼多文本編輯工具,爲何要學習vi/vim呢?vim
爲何要使用vim?windows
雖然在linux下的文本編輯器衆多,這些工具都有各自的優勢,可是有幾點是其它編輯工具所不能比擬的運維
1 全部的類Unix系統都內建vi,其它的編輯工具則不必定,而vim至關因而vi的升級版編輯器
2 不少軟件的編輯界面都會調用vi,如後面提到的crontab、edquota等ide
3 vim具備程序編輯能力,能夠主動以字體顏色標識語法的正確性,方便代碼編寫工具
4 程序簡單,編輯速度很是快學習
綜上所述這是一個老式的文字處理工具,可是功能很齊全,不只是文本處理工具,仍是一個程序編輯工具,就連官方網站也說vim是一個程序開發工具而不是文字處理軟件,由於它包含了不少額外的功能,如:多文件編輯,區塊複製等,這些功能讓咱們在進行配置文件修改的時候會更方便。開發工具
介紹就到這裏,咱們來看一下基本使用
2、基本使用
因爲vi/vim是一個全屏幕的文本編輯器,它工做在三種模式下:分別是命令模式、輸入模式和末行模式。能夠分別從命令模式切換到輸入模式和末行模式,也能夠從末行模式或輸入模式切換到命令模式,可是輸入模式與末行模式之間不能互相切換。
第一種:命令模式,當我使用「vim myfile」命令打開myfile這個文件時就處於命令模式,屏幕左下角爲文件名(myfile),1L 表示本文件有1 行,26C 表示此文件有26 個字符。1,25表示光標當前位置,在此模式下用戶能夠輸入命令來進行文件存盤、移動光標、刪除字符、撤消命令和重複命令等操做,還能夠設置編輯環境。
this is the command mode.
~
~ 表示沒有內容
"myfile" 1L, 26C 1,25 所有
第二種:插q入模式,又叫輸入模式。在輸入模式下,屏幕的左下方會出現INSERT (插入)字樣。在輸入狀態下,用戶能夠輸入文本的內容。
this is the command mode.
~
~
~
~
-- 插入 -- 1,25 所有
第三種:末行模式。只要在命令模式下輸入命令「:」便可進入末行模式。在末行模式下,能夠進行保存文件、退出vi、進行查找和替換等操做。
this is the command mode.
~
~
~
~
:q!
三種模式介紹完了,咱們看下vim的使用,這裏面咱們仍是按照三種模式來對vim的使用進行說明
命令模式可使用的按鍵說明
光標控制按鍵
h 或 向左箭頭鍵(←)
光標向左移動一個字符
j 或 向下箭頭鍵(↓)
光標向下移動一個字符
k 或 向上箭頭鍵(↑)
光標向上移動一個字符
l 或 向右箭頭鍵(→)
光標向右移動一個字符
15j/15↓
向下移動15行
[Ctrl] + [f]
屏幕『向下』移動一頁,至關於 [Page Down]按鍵 (經常使用)
[Ctrl] + [b]
屏幕『向上』移動一頁,至關於 [Page Up] 按鍵 (經常使用)
[Ctrl] + [d]
屏幕『向下』移動半頁
[Ctrl] + [u]
屏幕『向上』移動半頁
n
那個 n 表示『數字』,例如 3 。按下數字後再按空格鍵,光標會向右移動3 個字符。
0 或功能鍵[Home]
這是數字『 0 』:移動到這一行的最前面字符處 (經常使用)
$ 或功能鍵[End]
移動到這一行的最後面字符處(經常使用)
H
光標移動到這個屏幕的最上方那一行的第一個字符
M
光標移動到這個屏幕的中央那一行的第一個字符
L
光標移動到這個屏幕的最下方那一行的第一個字符
G
移動到這個文件的最後一行(經常使用)
nG
n 爲數字。移動到這個文件的第 n 行。可配合 :set nu
gg
移動到這個檔案的第一行,至關於 1G (經常使用)
n
n 爲數字。光標向下移動 n 行(經常使用)
搜索與替換
/abc
向光標之下查找一個名稱爲 abc 的字符串。 (經常使用)
?abc
向光標之上查找一個字符串名稱爲 abc 的字符串。
n
這個 n 是英文按鍵。表明『重複前一個查找的動做』。
N
這個 N 是英文按鍵。與 n 恰好相反
:n1,n2s/abc1/abc2/g
n1 與 n2 爲數字。在第 n1 與 n2 行之間查找 abc1 替換爲 abc2
:1,$s/abc1/abc2/g
從第一行到最後一行查找 abc1 字符串,並將該字符串替換爲 abc2 (經常使用)
:1,$s/abc1/abc2/gc
從第一行到最後一行查找 abc1 字符串,並將該字符串替換爲 abc2 ,且在替換前顯示提示字符給用戶確認
刪除與複製粘貼
x, X
x 至關於 [del] , X 至關於 [backspace] (經常使用)
nx
n 爲數字,連續向後刪除 n 個字符。
dd
刪除光標所在的那一整行(經常使用)
ndd
n 爲數字。刪除光標所在的向下 n 行(經常使用)
d1G
刪除光標所在行到第一行的全部數據
dG
刪除光標所在行到最後一行的全部數據
d$
刪除光標所在處,到該行的最後一個字符
d0
那個是數字的 0 ,刪除光標所在處,到該行的最前面一個字符
yy
複製光標所在的那一行(經常使用)
nyy
n 爲數字。(經常使用)
y1G
複製光標所在行到第一行的全部數據
yG
複製光標所在行到最後一行的全部數據
y0
複製光標所在的那個字符到該行行首的全部數據
y$
複製光標所在的那個字符到該行行尾的全部數據
p, P
p 爲將已複製的數據在光標下一行貼上,P 則爲貼在光標上一行 (經常使用)
J
將光標所在行與下一行的數據結合成同一行
c
重複刪除多個數據,例如向下刪除 4 行,[ 4cj ],配合上下左右的按鍵使用
u
撤銷操做。(經常使用)
[Ctrl]+r
重作上一個動做。(經常使用)
從命令模式進入輸入模式
i, I
i=從當前光標所在處插入, I =在當前所在行的第一個非空處開始插入。 (經常使用)
a, A
a =從當前光標所在的下一個字符處開始插入, A =從光標所在行的最後一個字符處開始插入。(經常使用)
o, O
o =在當前光標所在的下一行處插入新的一行; O =在當前光標所在處的上一行插入新的一行。(經常使用)
r, R
r 只會取代光標所在的那一個字符一次;R會一直取代光標所在的文字,直到按下 ESC 爲止;(經常使用)
[Esc]
退出輸入模式,回到命令模式中(經常使用)
從命令模式進入到末行模式
:w
保存(經常使用)
:w!
若文件屬性爲『只讀』時,強制保存,是否能保存與權限有關
:q
不保存退出(經常使用)
:q!
強制退出不保存。
:wq
保存退出, :wq! 則爲強制保存退出 (經常使用)
ZZ
這是大寫的 Z !若檔案沒有更動,則不儲存離開,若檔案已經被更動過,則儲存後離開!
:w [filename]
將編輯的數據儲存成另外一個檔案(相似另存新檔)
:r [filename]
在編輯的數據中,從指定的文件讀取數據並加到光標所在行後面
:n1,n2 w [filename]
將 n1 到 n2 的內容保存爲 filename 這個檔案。
:! command
在系統中執行指定的命令 如 :! ls /home
vim 環境的變動
:set nu
顯示行號
:set nonu
取消行號
3、額外功能
區塊選擇
v
字符選擇,選中光標通過的地方
V
選中光標通過的行
[Ctrl]+v
區塊選擇
y
複製選中的部分
d
刪除選中的部分
多文件編輯
:n
編輯下一個文件
:N
編輯上一個文件
:files
列出目前這個 vim 的開啓的全部文件
多窗口編輯
:sp/:vsp [filename]
開啓一個新窗口,若是加 filename, 表示在新窗口編輯指定的文件,不然表示兩個窗口爲同一個文件(同步顯示)。
[ctrl]+w+ j [ctrl]+w+↓
按鍵的按法是:先按下 [ctrl] 不放, 再按下 w 後放開全部的按鍵,而後再按下 j (或向下箭頭鍵),則光標可移動到下方的窗口。
[ctrl]+w+ k [ctrl]+w+↑
同上,不過光標移動到上面的窗口。
[ctrl]+w+ q
退出光標所在窗口,也能夠 [ctrl]+w+j/k 切換窗口後,按下 :q 便可離開, 也能夠按下 [ctrl]+w+q 。
環境變量與記錄
.viminfo:記錄用戶的行爲,以前編輯過的文件光標在什麼位置,在這個文件中進行過什麼操做等,自動創建
.vimrc:定義vim的默認設置,如是否顯示行號等,須要手動生成
:set nu /:set nonu
就是設定與取消行號!
:set hlsearch /:set nohlsearch
搜索時是否高亮顯示。默認值是 hlsearch
:set autoindent :set noautoindent
是否自動縮排?autoindent 就是自動縮排。
:set backup/:set nobackup
是否自動備份,通常是 nobackup 的, 若是設定 backup 的話,那麼當你更動任何一個檔案時,則源文件會被另存成一個檔名爲 filename~ 的檔案。
:set ruler/:set noruler
是否顯示右下角的一些狀態欄說明
:set showmode/:set noshowmode
是否顯示左下角的狀態欄。
:set backspace=(012)
通常來講, 若是咱們按下 i 進入編輯模式後,能夠利用backspace來刪除任意字符的。 可是,某些版本則不準如此。這時就可使用這個設置2 能夠刪除任意;0 或 1 僅可刪除剛剛輸入內容
:set all
顯示目前全部的環境變量設定值。
:set
顯示與系統默認值不一樣的設置, 用戶修改過的
:syntax on :syntax off
是否顯示顏色
:set bg=dark :set bg=light
可用以顯示不一樣的顏色色調,預設是『 light 』。若是你經常發現批註的字體深藍色實在很不容易看, 那麼這裏能夠設定爲 dark 喔!試看看,會有不一樣的樣式呢!
密碼設置與取消
加密
vim filename--->:X--->輸入密碼--->保存(不然不加密)
取消密碼
1
vim filename--->輸入正確密碼--->:X--->空密碼--->保存
2
vim filename--->:set key= --->保存
注意:不要對系統文件進行加密的操做
vim插件
1
虛擬機網卡設置爲NAT
2
dhclient -r ensxx
dhclient ensxx
3 dnf install epel-release -y
4 dnf install vim-airline -y
vimdiff&vimtutor
vimdiff:編輯兩個或者更多個文件並顯示不一樣
vimtutor:一條神奇的命令
4、使用中的注意事項
因爲個別版本的linux默認只安裝vi,因此你須要額外安裝vim的軟件包,如何安裝軟件包咱們會在後續的課程中講解,另外vim在字符界面下不能輸入中文,而在圖形界面下可否輸入中文則取決於系統中是否安裝了中文輸入法
字符差別
因爲linux和windows的系統差別,它們針對於文件的中的一些特殊符號表示方式也是不一樣的,好比說用來表示換行的符號等,如
[root@manage01 ~]# cat -A hello-linux.txt
hello$
$
[root@manage01 ~]# cat -A hello-windows.txt
hello^M$
^M$
若是這種文件是從windows拷貝到linux的一本小說的話,基本沒什麼問題,可是若是是一個咱們須要執行指定工做的shell腳本就會出現問題,由於linux不認識這種符號的含義,就會致使shell腳本沒法執行。因此此時咱們就要對這種文件進行處理
[root@manage01 ~]# unix2dos [-kn] file [newfile]選項與參數:-k :保留文件本來的 mtime 時間格式-n :保留舊文件,將轉換後的內容輸出到新文件,如: dos2unix -n old new