文本編輯秘籍之vim寶典

一、初識Vim

Vim是從 vi 發展出來的一個文本編輯器。其功能非常強大,熟練掌握vim的常用操作和快捷操作能讓我們從繁雜的文本處理任務中殺出血路,在運維的道路上愉快前行。

vim使用簡單命令組合來完成復雜操作,同時也支持基本正則表達式。

二、撥開vim迷霧:

2.1 使用vim打開一個文件:

如果該文件存在,文件被打開并顯示內容;如果該文件不存在,當編輯后第一次存盤時創建它

       vim 的用法:vim  [OPTION]…  FILE…

       vim后直接跟文件,可以打開、編輯文件。默認情況下,第一次打開文件。光標會定位在行首;若曾打開編輯過文件,再次打開文件光標會停留在上次退出時的位置。這時,如果我們在對一個大文件進行操作,我們想打開文件后就定位在某行或者定位在包含了某個字符的行或者直接處于行尾。只需要在打開文件時加上定位參數就行了:

            + m: 打開文件后,直接讓光標處于第m行的行首

+ /Pattern:打開文件后,直接讓光標處于第一個被Pattern匹配到的行的行首.。Pattern支持正則表達式。

vim  +  file: 直接打開file,光標在最后一行

例1.1:打開文件并將光標定位于第11行

[root@localhost /tmp]#vim +11 fs1

例1.2:打開文件并定位在以UUID開頭的行

vim定位.gif

注:在以模式定位光標時,代開過程中會出現提示,直接摁“Enter”鍵就ok了。

2.2 vim模式詳解:

在不同的模式中,可以通過不同的方式來實現對文本的操作。vim模式被分為三類:

              編輯模式(也叫命令模式):通過鍵盤快捷方式操作

輸入模式:在文本中輸入內容

末行模式:vim內置的命令行接口,執行vim的內置命令。比如:查找、替換、執行shell命令等。

不同模式之間進行切換:

blob.png

    

           編輯模式 –> 插入模式

i: insert, 在光標所在處輸入

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

a: append, 在光標所在處后面輸入

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

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

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

插入模式 —-> 編輯模式:ESC

編輯模式 —-> 末行模式::

末行模式 —-> 編輯模式:ESC 

附:多數人的行為習慣受windows的影響,在保存文本時習慣ctrl+s,殊不知在vim中ctrl+s會鎖定屏幕,那么要如何解鎖呢,使用ctrl +q即可。

三、末行模式可用操作

(1)退出vim編輯:

先退出當前模式至末行模式。使用下面的命令即可退出。

              q  退出

q!  強制退出,放棄做出的修改。

wq 保存退出

x   保存退出,等同于wq。

(2)讀取文件內容或另存文件內容

r  filename  讀取指定文件的內容,并將內容插入到光標所在行的下一行

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

例:讀取/etc/issue文件中的內容至第4行后,將新增后的內容保存至/tmp/test.txt

vim之r&w.gif

(3)執行shell命令

       vim支持不退出文件編輯執行shell命令,方便在編輯文件的同時進行其他操作。

       !command:執行命令

 r!command:將命令的執行結果追加保存至光標所在行后

例:將ls /tmp的執行結果插入18行后

vim之末行執行命令.gif

四、 編輯模式可用操作

字符間跳轉:

h: 左 l: 右 j: 下 k: 上

#COMMAND:跳轉由#指定的個數的字符;

單詞間跳轉:

w:下一個單詞的詞首

e:當前或下一單詞的詞尾

b:當前或前一個單詞的詞首

#COMMAND:由#指定一次跳轉的單詞數

當前頁跳轉:

H :頁首 ,即跳轉至當前頁第一行

M:頁中間行

L :頁底

行首行尾跳轉:

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

0: 跳轉至行首

$: 跳轉至行尾

    行間移動:

#G :跳轉至由#指定行

G :跳轉至最后一行

1G, gg: 跳轉至第一行

      句間移動:

(:跳轉至上一句

):跳轉至下一句

      段落間移動:

{:跳轉至上一段

} : 跳轉至下一段

       翻屏操作

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

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

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

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

字符編輯:

x: 刪除光標處的字符;

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

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

~:轉換大小寫

替換命令(r, replace)

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

R:切換成REPLACE模式

刪除命令:

d: 刪除命令,可結合光標跳轉字符,實現范圍刪除;

d$: 刪除到行尾

d0:刪除到行首

      dd: 刪除光標所在的行

#dd:多行刪除

復制命令(y, yank):

      yy:復制行

#yy: 復制多行

粘貼命令

p: 將復制或刪除的內容復制至指定行的下方

P:將復制或刪除的內容復制至指定行的上方

      改變命令:c

              cc:刪除當前行并輸入新內容

#cc:

             C:刪除當前光標到行尾,并切換成插入模式

例:將fs1文件中的/dev替換為test

vim之replace.gif

六、撤銷操作:

       對文件內容更改之后,想要撤銷更改操作

  u:撤銷最近的更改

             #u:撤銷之前多次更改

             按Ctrl – r重做最后的“撤消”更改

七、可視化模式:

       允許選擇的文本塊

v 面向字符

V 面向行

ctrl-v 面向塊

        可視化鍵可用于與移動鍵結合使用:w, ) , } ,箭頭等

        突出顯示的文字可以被刪除,復制,變更,過濾,搜索/替換等。

例:將fs1文件中的20-26行第三列之后的內容注釋掉

vim之注釋.gif

操作步驟:

    1、摁ctrl + v 選中行

    2、摁shift + i切換至插入模式

    3、摁shift + 3輸入想要插入的#號

    4、摁esc

八、多窗口模式

當需要參考一個文件對另一個文件進行修改時,可以使用此模式。

vim -o|-O FILE1 FILE2 …

-o: 水平分割

-O: 垂直分割

在窗口間切換: Ctrl+w, 方向鍵

九、vim的配置文件

       配置文件:永久有效

全局: /etc/vimrc

個人: ~/.vimrc

常用配置:

顯示行號:

啟用:set number簡寫為set  nu

禁用:set nonu

自動縮進:

啟用:set ai

禁用:set noai

           設置tab鍵占用幾個空格:

                  set tabstop=2

十、使用vimtutor練習:

       vim提供的各種功能只有在不斷重復練習才能熟悉,為了方便練習,vim通過vimtutor提供練習文檔。

原創文章,作者:M20-1鐘明波,如若轉載,請注明出處:http://www.www58058.com/32616

(0)
M20-1鐘明波M20-1鐘明波
上一篇 2016-08-10
下一篇 2016-08-10

相關推薦

  • 雙網卡綁定及單網卡多IP地址實現方法

    Bonding就是將多塊網卡綁定同一IP地址對外提供服務,可以實現高可用或者負載均衡。當然,直接給兩塊網卡設置同一IP地址是不可能的。通過bonding,虛擬一塊網卡對外提供連接,物理網卡的被修改為相同的MAC地址。mode=1(active-backup):一個網卡處于活動狀態 ,一個處于備份狀態,所有流量都在主鏈路上處理。當活動網卡down掉時,啟用備份…

    Linux干貨 2016-09-05
  • 文本處理工具初探

    作為一個系統管理員,文本處理功能是經常使用的,熟練地使用各種文本工具有助于提高工作效率,從繁忙的工作中早點解脫。下面就來介紹處理文本的常用命令。 處理文本的命令大致分為:        查看文件內容:cat、less、more       …

    Linux干貨 2016-08-07
  • 第二周作業

    1 linux 常見的文件管理命令都有哪些?其常用的使用方法。 ls 文件列出命令   常見選項  -l 顯示長文本信息          -d 顯示當前目錄信息          -a 顯示所有文件信息     &nb…

    Linux干貨 2016-09-26
  • 網絡知識點

    1. 實現異地搭建局域網的方法1>. 讓運行商拉專線,這是相當昂貴的。2>.  VPN (Virtual PrivateNetwork)  虛擬專用網絡 2. VPN的隧道協議主要有三種:PPTP、L2TP和IPSec。其中PPTP和L2TP協議工作在OSI模型的第二層,又稱為二層隧道協議;IPSec是第三層隧道協議。 2. …

    Linux干貨 2016-09-01
  • sed與vim淺析

    sed與vim sed Stream EDitor, 行編輯器,sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”( pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出?!?/p>

    Linux干貨 2016-08-10
  • CentOS7系統用戶空間管理進程systemd詳解

    概述:     系統啟動過程中,當內核啟動完成,后加載根文件系統,后就緒的一些用戶空間的服務的管理工作,就交由init進行啟動和管理,在CentOS6之前的init的管理方式都類似,相關的內容我們在之前的文章中也做出過介紹。在CentOS7上,init變成了systemd,其管理方式也發生了重大的變化,本章就跟大家歐一…

    Linux干貨 2016-09-21
欧美性久久久久