05 Linux文件編輯


一. vim基本概述

1. 什么是vim?

vi和vim是Linux下的一個文本編輯工具。(可以理解為windows的記事本,或word文檔)

2. 為什么要使用vim?

因為Linux系統一切皆為文件,而我們工作最多的就是修改某個服務的配置(其實就是修改文件內容)。
也就是說如果沒有vi/vim,我們很多工作都無法完成。

提示: 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的三種模式: 普通模式、編輯模式、命令模式,每種模式分別支持多種不同的快捷鍵,要想高效率地操作文本,就必須先搞清這三種模式的操作區別以及模式之間的切換方法。

img

5. vim模式三種模式介紹

普通模式: 主要是控制光標移動,可對文本進行復制、粘貼、刪除等工作。

使用vim filename 編輯一個文件時,一進入該文件就是普通模式了。
在這個模式下,可以進行光標移動、復制、刪除、粘貼操作。

編輯模式: 主要進行文本內容編輯和修改

從普通模式進入編輯模式,只需你按一個鍵即可(i, I, a, A, o, O)
當進入編輯模式時,會在屏幕的最下一行會出現 “INSERT”標記
從編輯模式回到普通模式只需要按鍵盤左上方的 ESC 鍵即可。

命令行模式: 主要用於保存或退出文本。

在普通模式下,輸入 “:” 或者 “/“ 即可進入命令模式。
在命令該模式下,可進行的操作有,顯示行號、搜索、替換、保存、退出。

小結: vim編輯打開文件整體流程如下:

  1. 默認打開文件處於普通模式

  2. 從普通模式切換至編輯模式需要使用a、i、o

  3. 編輯模式修改完畢后需要先使用ECS返回普通模式

  4. 在普通模式輸入”:”或”/“進入命令模式,可實現文件的保存與退出。

PS: 在vim中,無法直接從編輯模式切換到命令模式。

二. 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       # 撤銷(Undo)上一次的操作 


# 5.替換 Replace
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  # 需要搜索的內容(查找)
:/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鍵刪除。

三. 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

四. vim練習示例

1. 基本練習

1.將/etc/passwd 復制到/var/tmp/目錄下,並重命名為test.txt

[root@yang tmp]# cp -p /etc/passwd /var/tmp/
[root@yang tmp]# ls
passwd
[root@yang tmp]# mv passwd test.txt
[root@yang tmp]# ls
test.txt

2.用vim打開test.txt並顯示行號

[root@yang tmp]# vim test.txt
:set nu

3.分別向下、向右、向左、向右移動5個字符,分別向下、向上翻兩頁

[root@yang tmp]# vim test.txt
# 向下、向上翻兩頁
ctrl + f
ctrl + b

4.把光標移動到第10行,讓光標移動到行末,再移動到行首,移動到test.txt文件的最后一行,移動到文件的首行

[root@yang tmp]# vim test.txt
:10
$
^ 或者 0
G
gg

5.搜索文件中出現的 root 並數一下一共出現多少個,不區分大小寫搜索

[root@yang tmp]# vim test.txt
/root
ESC
:q
    
[root@yang tmp]# cat test.txt | grep root |  wc -w

[root@yang tmp]# vim test.txt
:set ic

6.把從第一行到第三行出現的root 替換成–od–,然后還原上一步操作

[root@yang tmp]# vim test.txt
:1,3s#root#-od-#g
u    

8.把整個文件中所有的root替換成–od–

[root@yang tmp]# vim test.txt
:%s#root#-od-#g

9.把光標移動到20行,刪除本行,還原上一步操作

[root@yang tmp]# vim test.txt
:20
dd
u

10.刪除第19行,還原上一步操作

[root@yang tmp]# vim test.txt
19gg
dd
u

11.刪除從5行到10行的所有內容,還原上一步操作

[root@yang tmp]# vim test.txt
5gg
5dd
u

12.復制2行並粘貼到11行下面,還原上一步操作(按兩次u)

[root@yang tmp]# vim test.txt
1gg
2yy
11gg
p
u
u

13.復制從11行到15行的內容並粘貼到8行上面,還原上一步操作(按兩次u)

[root@yang tmp]# vim test.txt
11gg
5yy
8gg
P
u
u

14.把13行到18行的內容移動文件的尾部,還原上一步操作(按兩次u)

[root@yang tmp]# vim test.txt
13gg
5dd
G
p
u
u

15.光標移動到第2行,把/sbin/nologin改成/bin/bash

[root@yang tmp]# vim test.txt
2gg
0
i
改
ESC

16.在第一行下面插入新的一行,並輸入”# Hello!”

[root@yang tmp]# vim test.txt
1gg
o
寫: # Hello!
ESC    

17.保存文檔並退出

:wq

2. 練習文件

[root@yang ~]# cd /var/tmp/
[root@yang tmp]# vim proxy.conf
i

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;
    }
}

:wq

1.使用vim打開proxy.conf文件

[root@yang tmp]# vim proxy.conf

2.修改Listen為listen小寫,並將8080修改為80

14gg
r
L
2gg
$
X
X

3.修改ServerName為server_name小寫。

3gg
r
s

4.修改vim.OldboyEDU.com為vim.oldboy.com

/vim找到操作即可

5.在server_name行下插入一行 root /code;

/server_name
o
root/code
ESC

5.復制5-14行的內容,然后將其粘貼到14行下面

5gg
10yy
14gg
p

6.刪除與proxy_set_header相關的兩行全部刪除

/proxy_set_header
2dd
n
2dd

7.如上操作完成后,在13-20行前面加上#號

:13,20s/^/#/g

8.刪除21-23的行,然后保存當前文件

21gg
3dd
:wq


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM