Linux文本處理工具 二 Vim

vimLinux中的一款功能強大的文本編輯器,基本能夠知足咱們在Linux中對文本處理的所有需求vim

一.vim打開文件

通常狀況下,咱們用vim打開一個已有文件時都是用vim+文件名直接打開一個文件,若文件不存在則保存時在當前目錄下新建這個文件,並在底行提示「[New File]」,但vim打開的功能不止於此centos

格式:vim  [option]  [file]bash

          vim          [file]      直接打開(新建)文件,若是是已有文件,則光標編輯器

                                      處於上次退出時的位置centos7

         vim    +#    [file]      打開文件後,讓光標處於第#行的行首,+默認光標spa

                                       處於末行行首命令行

         vim    -b     [file]      以二進制的方式打開文件code

         vim    -d     [file1]   [file2]   比較多個文件(如果兩個文件則在屏幕上同orm

                                                  時顯示兩個文件)blog

         vim    -m    [file]       以只讀的方式打開文件

二.vim的三種主要模式簡介

三種模式的簡介:

vim主要有Normal(命令),Insert(插入或編輯),extended command(擴展命令)三種模式,這三種模式各有各的功能

命令模式:咱們打卡一個文件時直接進入vim的命令模式,也就是vim的默認模式,因爲vim是個基於命令行的編輯器,因此沒有鼠標,全部的光標移動操做都經過鍵盤執行,而這些操做都是在命令模式中執行,除了移動光標,命令模式中還主要進行復制,剪切,粘貼,搜索等操做。

編輯模式:這個模式主要提供文本的具體編輯功能

擴展命令模式:多用於查找,讀取,顯示行號等功能

除了這三種經常使用的模式,vim還有:選擇(visual)模式,不過功能相較單一,主要用於vim中文本的選擇

                               替換(replace)模式,用於字符的替換

 

 

 

模式圖示:                                          

           

 

 

模式間的轉換:

 

 

命令模式 --> 插入模式

i: 在光標所在處輸入

I:在當前光標所在行的行首輸入

a: 在光標所在處後面輸入

A:在當前光標所在行的行尾輸入

o: 在當前光標所在行的下方打開一個新行

O:在當前光標所在行的上方打開一個新行

插入模式 --> 命令模式

ESC

命令模式 --> 擴展命令模式

:

擴展命令模式--> 命令模式

ESC, enter

命令模式 --> 替換模式

R/r 

替換模式-->命令模式

ESC

命令模式 --> 選擇模式

V/v

選擇模式-->命令模式

ESC

V/v

替換模式<-->編輯模式

 Insert

三.命令模式

在命令模式下輸入的命令是在屏幕顯示的,下面是經常使用的命令模式的命令:

 

ZZ: 保存並退出

ZQ: 不保存直接退出

 

光標的移動指令:

 

  字符間移動 h:  向左移動光標(等同鍵盤的上下左右鍵但上下左右鍵能夠在任意模式下使用,但在擴展命令模式下 使用上下

   鍵,分別表示上一條命令和下一條命令,hjkl只能在命令模式和選擇模式使用)

l:  向右移動光標

j: 向下移動光標

k:  向上移動光標

#h/j/k/l 一次性移動指定行 #表示數字(例如輸入3 h則表示向左

      移動三個字節)

  單詞間移動w: 光標移到下一個單詞的詞首

e: 光標移到下一個單詞的詞尾

b: 光標移到當前或上一個單詞的詞首

#w|e|b 一次性移動指定個單詞 #表示數字

 頁間移動H: 光標移到當前頁的頁首

L: 光標移到當前頁的頁尾

M: 光標移到當前頁的頁中

  整個文件間移動 G: 光標移到整個文件的尾行

#G: 光標跳到指定行   

gg: 光標移到整個文件的首行

^: 光標跳轉至行首的第一個非空白字符

行內移動0: 光標跳轉至行首

$: 光標跳轉至行尾

  句段間移動):光標跳轉至下一句句首

(:光標跳轉至上一句句首

}:光標跳轉至下一段段首

{:光標跳轉至上一段段首

 

當前頁面的翻頁操做:

 

Ctrl+f: 向文件尾部翻一屏

Ctrl+b: 向文件首部翻一屏

Ctrl+d: 向文件尾部翻半屏

Ctrl+u:向文件首部翻半屏

 

對文本的刪除複製等操做:

 

刪除  x: 刪除光標處的字符

#x: 刪除光標處起始的#個字符

xp: 交換光標所在處的字符及其後面字符的位置

c$: 刪除到行尾,同時進入插入模式

c^:刪除到行首,同時進入插入模式

c0:刪除到行首,包含帶空格的行首,同時進入插入模式

cw: 刪除到當前單詞的詞尾,同時進入插入模式

cc: 刪除當前行,同時進入插入模式

#cc:多行刪除,同時進入插入模式

      替換 J:刪除當前行後的換行符

~:轉換大小寫

r: 替換光標所在處的字符

R:切換成REPLACE模式 此模式下輸入的字符將替換當前字符,退格鍵也由刪除變爲還原以前的字符,按ESC退出

剪切d$: 剪切到行尾

d^:剪切到非空行首

d0:剪切到行首

dw: 剪切當前單詞

dd: 剪切光標所在的行

#dd:多行剪切

複製y$: 複製到行尾

y^:複製到非空行首

y0:複製到行首

yw: 複製當前單詞

yy: 複製光標所在的行

#yy:多行復制,#表示複製的行數

"[a-z]d|y 複製或剪切到指定的寄存器

粘貼 p:緩衝區存的若是爲整行,則粘貼當前光標所在行的下方;不然,則粘貼至當前光標所在處的後面

P:緩衝區存的若是爲整行,則粘貼當前光標所在行的上方;不然,則粘貼至當前光標所在處的前面

"[a-z]p|P 粘貼到光標所在位置

        撤銷重作u撤銷最近的更改

#u撤銷以前屢次更改

U 撤消光標落在這行後全部此行的更改

Ctrl - r重作最後的「撤消」更改

. 重複前一個操做

n.重複前一個操做n

四.擴展命令模式

 

:」進入擴展命令模式並建立一個命令提示符: 處於底部的屏幕左側

命令:

 

基礎命令:

 

w                             寫(存)磁盤文件

wq                           寫入並退出

x                              寫入並退出

q                              退出

q!               不存盤退出,即便更改都將丟失

r     [filename]          讀文件內容到當前文件中

w    [filename]         將當前文件內容寫入另外一個文件

!     [command]         執行命令

r!    [command]        讀入命令的輸出

 

擴展命令模式中的地址定界功能

 

地址定界第一步:

在擴展命令模式的「:」後面輸入數據來表示範圍

下面是輸入數據的格式:

# 具體第#行,例如2表示第2

#,# 從左側#表示起始行,到右側#表示結尾行

#,+# 從左側#表示的起始行,加上右側#表示的行數例如2,+3 表示25

. 當前行

$ 最後一行

% 全文, 至關於1,$

/pat1/,/pat2/表示從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束

例如/asd/,/zxc/表示從第一個有「asd」的行到其後面第一個有「zxc」的行

#,/pat/從第#行到其後面第一個有pat的行

/pat/,$從第一個有pat的行到最後

 

第二部在輸入的數據後跟一個編輯命令

d刪除前面所選擇的範圍

y複製前面所選擇的範圍

w  file: 將範圍內的行另存至指定文件中

r  file:在指定位置插入指定文件中的全部內容

 

擴展命令模式的查找功能

 

/PATTERN:從當前光標所在處向文件尾部查找,PATTERN爲要搜索的詞條

?PATTERN:從當前光標所在處向文件首部查找,PATTERN爲要搜索的詞條

n:與命令同方向

N:與命令反方向

 

擴展命令模式的替換功能

 

s: 在擴展模式下完成查找替換操做

格式:s/要查找的內容/替換爲的內容/修飾符

要查找的內容:可以使用模式

替換爲的內容:不能使用模式,但可使用\1, \2, ...等後向引用符號;還可使用「&

引用前面查找時查找到的整個內容

修飾符:

i: 忽略大小寫

g: 全局替換;默認狀況下,每一行只替換第一次出現

gc:全局替換,每次替換前詢問

• 查找替換中的分隔符/可替換爲其它字符,例如

s@/etc@/var@g

s#/boot#/#i

 

舉例講解一:

替換/etc/rc.d/init.d/functions文件中的/etc/sysconfig/init/var/log

1.vim進入/etc/rc.d/init.d/functions,因爲文件過長,在此只選取一部分展現

[root@centos7 ~]# vim /etc/rc.d/init.d/functions

# Read in our configuration

if [ -z "${BOOTUP:-}" ]; then

    if [ -f /etc/sysconfig/init ]; then

        . /etc/sysconfig/init

    else

        # This all seem confusing? Look in /etc/sysconfig/init,

        # or in /usr/share/doc/initscripts-*/sysconfig.txt

        BOOTUP=color

        RES_COL=60

        MOVE_TO_COL="echo -en \\033[${RES_COL}G"

        SETCOLOR_SUCCESS="echo -en \\033[1;32m"

        SETCOLOR_FAILURE="echo -en \\033[1;31m"

2.在命令模式下(默認模式)輸入「:」進入擴展命令模式

3.在「:」後輸入%s@/etc/sysconfig/init@/var/log@gi

[root@centos7 ~]# vim /etc/rc.d/init.d/functions

# Read in our configuration

if [ -z "${BOOTUP:-}" ]; then

    if [ -f /etc/sysconfig/init ]; then

        . /etc/sysconfig/init

    else

        # This all seem confusing? Look in /etc/sysconfig/init,

        # or in /usr/share/doc/initscripts-*/sysconfig.txt

        BOOTUP=color

        RES_COL=60

        MOVE_TO_COL="echo -en \\033[${RES_COL}G"

        SETCOLOR_SUCCESS="echo -en \\033[1;32m"

        SETCOLOR_FAILURE="echo -en \\033[1;31m"

:%s@/etc/sysconfig/init@/var/log@gi

解釋:%」表示整個文本

            s表示進行查找替換操做(本質上是表示引用「sed」命令)

           @用來分界,三個@將命令分紅四部分,第二部分爲在文本中搜索的詞條

            第三部分是要替換的詞條,第四部分是命令的參數

            /etc/sysconfig/init要搜索的詞條

            /var/log要替換的詞條

            g表示替換

            i表示忽略大小寫

結果:替換後部分用藍色背景顯示

 

[root@centos7 ~]# vim /etc/rc.d/init.d/functions # Read in our configuration if [ -z "${BOOTUP:-}" ]; then

    if [ -f /var/log ]; then . /var/log else # This all seem confusing? Look in /var/log, # or in /usr/share/doc/initscripts-*/sysconfig.txt BOOTUP=color RES_COL=60 MOVE_TO_COL="echo -en \\033[${RES_COL}G" SETCOLOR_SUCCESS="echo -en \\033[1;32m" SETCOLOR_FAILURE="echo -en \\033[1;31m"

 

五.編輯模式

編輯模式在vim中用來輸入,修改,刪除文本,是編輯文本的模式

編輯模式下的經常使用命令:ENTE      換行

BACK SPACE      退格鍵,刪除光標前一個字符

DELETE         刪除鍵,刪除光標後的一個字符

方向鍵    在文本中移動光標(在編輯模式下由於要輸入,

因此沒法使用hjkl來移動光標)

HOME/END      移動光標到行首/行尾

Page Up/Page Down      /下翻頁

Insert      切換光標爲輸入/替換模式,光標將變成豎線/下劃線

ESC       退出輸入模式,切換到命令模式

相關文章
相關標籤/搜索