1.VIM基本概述
1.什么是VIM?
vi和vim是Linux下的一個文本編輯工具。(可以理解為windows的記事本,或word文檔)
2.為什么要使用VIM?
因為Linux系統一切皆為文件,而我們工作最多的就是修改某個服務的配置(其實就是修改文件內容)。 也就是說如果沒有vi/vim,我們很多工作都無法完成。PS: vim是學習linux最重要的命令之一
3.VI與VIM有什么區別?
vi和vim都是文本編輯器,只不過vim是vi的增強版,比vi多了語法高亮顯示,其他編輯功能幾乎無差,所以使用vi還是vim取決個人習慣。(相當於windows系統下的文本編輯軟件“記事本”與”notepad++”的區別) PS:因為前期最小化安裝CentOS系統,所以默認情況下沒有vim命令,但可以使用yum install vim -y安裝
4.如何使用VIM編輯器?
在使用VIM之前,我們需要先介紹下VIM的三種模式: 普通模式、編輯模式、命令模式,每種模式分別支持多種不同的快捷鍵,要想高效率地操作文本,就必須先搞清這三種模式的操作區別以及模式之間的切換方法。
5.VIM模式三種模式介紹
1.普通模式: 主要是控制光標移動,可對文本進行復制、粘貼、刪除等工作。 使用vim filename 編輯一個文件時,一進入該文件就是普通模式了。 在這個模式下,可以進行光標移動、復制、刪除、粘貼操作。
2.編輯模式: 主要進行文本內容編輯和修改 從普通模式進入編輯模式,只需你按一個鍵即可(i, I, a, A, o, O) 當進入編輯模式時,會在屏幕的最下一行會出現 “INSERT”標記 從編輯模式回到普通模式只需要按鍵盤左上方的 ESC 鍵即可。
3.末行模式: 主要用於保存或退出文本。 在普通模式下,輸入 “:” 或者 “/“ 即可進入命令模式。 在命令該模式下,可進行的操作有,顯示行號、搜索、替換、保存、退出。
小結: vim編輯打開文件整體流程如下: 1.默認打開文件處於普通模式 2.從普通模式切換至編輯模式需要使用a、i、o 3.編輯模式修改完畢后需要先使用ECS返回普通模式 4.在普通模式輸入”:”或”/“進入命令模式,可實現文件的保存與退出。 PS: 在vim中,無法直接從編輯模式切換到命令模式。
2.VIM模式使用
1.普通模式
#1.命令光標跳轉
G #光標跳轉至末端
gg #光標跳轉至頂端
Ngg #光標跳轉至當前文件內的N行
$ #光標跳轉至當前光標所在行的尾部
^或者0 #光標跳轉至當前光標所在行的首部
#2.文件內容較多
ctrl+f #往下翻頁(行比較多)
ctrl+b #往上翻頁
#3.復制與粘貼
yy #復制當前光標所在的行
5yy #復制當前光標以及光標向下4行
p(小寫) #粘貼至當前光標下一行
P(大寫) #粘貼至當前光標上一行
#4.刪除、剪貼、撤銷
dd #刪除當前光標所在的行
4dd #刪除當前光標所在的行以及往下的3行
dG #刪除當前光標以后的所有行
D #刪除當前光標及光標以后的內容
x #刪除當前光標標記往后的字符
X #刪除當前光標標記往前的字符
dd & p #剪貼、先刪除dd(number dd),后粘貼p
u #撤銷上一次的操作
#5.替換
r #替換當前光標標記的單個字符
R #進入REPLACE模式, 連續替換,ESC結束
2.編輯模式(從普通模式進入到編輯模式)
i #進入編輯模式,光標不做任何操作
a #進入編輯模式,將當前光標往后一位
o #進入編輯模式,並在當前光標下添加一行空白內容
I #進入編輯模式,並且光標會跳轉至本行的頭部
A #進入編輯模式,將光標移動至本行的尾部
O #進入編輯模式,並在當前光標上添加一行空白內容
3.命令模式,主要用於搜索, 保存, 退出文件。
#1.文件保存與退出
:w 保存當前狀態
:w! 強制保存當前狀態
:q 退出當前文檔(文檔必須保存才能退出)
:q! 強制退出文檔不會修改當前內容
:wq 先保存,在退出
:wq! 強制保存並退出
:x 先保存,在退出
ZZ 保存退出, shfit+zz
:number 跳轉至對應的行號
:set nu 顯示行號
:set nonu 不顯示行號
#2.文件內容查找
/string #需要搜索的內容(查找)
n #按搜索到的內容依次往下進行查找
N #按搜索到的內容依次往上進行查找
#3.文件內容替換
:1,5s#sbin#test#g #替換1-5行中包含sbin的內容為test
:1,5s#sbin#test# #只替換1-5行中第一個包含sbin的內容為test
:%s#sbin#test#g #替換整個文本文件中包含sbin的替換為test
:%s#sbin#test#gc #替換內容時時提示是否需要替換
#4.文件內容另存
:w /root/test.txt #將所有內容另存為/root/test.txt文件中
#5.文件內容讀入
:r /etc/hosts #讀入/etc/hosts文件至當前光標下面
:5r /etc/hosts #指定插入/etc/hosts文件至當前文件的第五行下面
4.視圖模式(從普通模式進入視圖模式),主要進行批量操作
ctrl+v 進入可視塊模式,選中需要注釋的行
1.插入:按shift+i進入編輯模式,輸入#,結束按ESC鍵
2.刪除:選中內容后,按x或者d鍵刪除
3.替換:選中需要替換的內容, 按下r鍵,然后輸入替換后的內容
shift+v 進入可視行模式,選中整行內容
1.復制:選中行內容后按y鍵及可復制。
2.刪除:選中行內容后按d鍵刪除。
3.VIM擴展知識
1.環境變量臨時生效
:set nu #顯示行號
:set ic #忽略大小寫, 在搜索的時候有用
:set ai #自動縮進
:set list #顯示制表符(空行、tab鍵)
:set no[nu|ic|ai…] #取消臨時設定的變量
2.環境變量永久生效。~/.vimrc 個人環境變量(優先級高) /etc/vimrc 全局環境變量
# vim ~/.vimrc #當下次再打開文件自動顯示行號並忽略大小寫
set nu
set ic
#如果個人vim環境沒有配置, 則使用全局vim環境變量配置。
#如果個人vim環境和全局環境變量產生沖突, 優先使用個人vim環境變量。
3.如何同時編輯多個文件
vim -o file1 file2 #水平分割
vim -O file1 file2 #垂直分割
#ctrl+ww 文件間切換
4.相同文件之間差異對比,通常用於對比修改前后差異
# diff #文件對比
# vimdiff #以vim方式打開兩個文件對比,高亮顯示不同的內容
5.如果VIM非正常退出 (ctrl+z)掛起或強制退出終端沒關閉VIM后
#假設打開filename文件被以外關閉,需要刪除同文件名的.swp文件即可解決
# rm -f .filename.swp
4.VIM練習示例
1.將/etc/passwd 復制到/root/目錄下,並重命名為test.txt 2.用vim打開test.txt並顯示行號 3.分別向下、向右、向左、向右移動5個字符,分別向下、向上翻兩頁 4.把光標移動到第10行,讓光標移動到行末,再移動到行首,移動到test.txt文件的最后一行,移動到文件的首行 5.搜索文件中出現的 root 並數一下一共出現多少個,不區分大小寫搜索 6.把從第一行到第三行出現的root 替換成–od–,然后還原上一步操作 8.把整個文件中所有的root替換成–od– 9.把光標移動到20行,刪除本行,還原上一步操作 10.刪除第19行,還原上一步操作 11.刪除從5行到10行的所有內容,還原上一步操作 12.復制2行並粘貼到11行下面,還原上一步操作(按兩次u) 13.復制從11行到15行的內容並粘貼到8行上面,還原上一步操作(按兩次u) 14.把13行到18行的內容移動文件的尾部,還原上一步操作(按兩次u) 15.光標移動到首行,把/sbin/nologin改成/bin/bash 16.在第一行下面插入新的一行,並輸入”# Hello!” 17.保存文檔並退出
2.練習示例2-文件
[root@www ~]# cat proxy.conf
server {
Listen 8080;
Server_Name vim.OldboyEDU.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Forward-for;
proxy_intercept_errors on;
proxy_next_upstream error timeout;
proxy_next_upstream_timeout 3s;
proxy_next_upstream_tries 2;
error_page 500 502 403 404 = /proxy_error.html;
}
location = /proxy_error.html {
root /code/proxy;
}
}
2.練習示例2-題目 1.使用vim打開proxy.conf文件 2.修改Listen為listen小寫,並將8080修改為80 3.修改ServerName為server_name小寫。 4.修改vim.OldboyEDU.com為vim.oldboy.com 5.在server_name行下插入一行 root /code; 5.復制5-14行的內容,然后將其粘貼到14行下面 6.刪除與proxy_set_header相關的兩行全部刪除 7.如上操作完成后,在13-20行前面加上#號 8.刪除21-23的行,然后保存當前文件