1. 程式人生 > 實用技巧 >linux——檔案編輯

linux——檔案編輯

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 跳轉至對應的行號


#2.檔案內容查詢
/string #需要搜尋的內容(查詢)
n       #按搜尋到的內容依次往下進行查詢
N       #按搜尋到的內容依次往上進行查詢


#3.檔案內容替換
:1,5s#sbin#test#g   #替換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的行,然後儲存當前檔案