文本編輯秘籍之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 13:58
下一篇 2016-08-10 13:58

相關推薦

  • Hadoop實戰實例

     Hadoop 是Google MapReduce的一個Java實現。MapReduce是一種簡化的分布式編程模式,讓程序自動分布到一個由普通機器組成的超大集群上并發執行。就如同java程序員可以不考慮內存泄露一樣, MapReduce的run-time系統會解決輸入數據的分布細節,跨越機器集群的程序執行調度,處理機器…

    Linux干貨 2015-04-13
  • Linux編譯安裝

    Linux編譯安裝    Linux上真正可以執行的文件是二進制文件,這些可以執行的二進制文件是哪兒來的呢?首先,必須要寫程序的源代碼,然后,由編譯程序將程序的源代碼 編譯成二進制形式。源代碼是由程序員編寫的,使用特定的程序語言,如C,C++,Java,Python。但是機器看不懂這些語言,所以要使用編譯程序將這些語言編寫的源代碼編譯成機…

    Linux干貨 2016-08-24
  • http和apache服務器

    超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標準。設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法。 http/1.1 :1997年1月 引入了持久連接(persistent connection) , tcp連接默認不關閉,可以被多個請…

    2017-12-05
  • Linux批量創建用戶、passwd、shadow、組管理、group、gshadow、默認配置文件login.defs、切換用戶su、提升權限(二)

    Linux批量創建用戶、passwd、shadow、組管理、group、gshadow、默認配置文件login.defs、切換用戶su、提升權限(二) Linux對于權限的管理非常完善,其強大的權限管理機制體現了它的魅力之處,讓無數人為之操碎了心。Linux中的權限既能放也能收,既可以管理整個組的權限,也可以管理單個用戶的權限,正是因為有了ACL的加入變得非…

    Linux干貨 2016-08-06
  • 20160809作業

    一、如何設置tab縮進為4個字符       臨時設置:set tabstop=4       全局設置vim /etc/vimrc—>添加set tabstop=4       當前用戶生效,手動添加文…

    Linux干貨 2016-08-10
  • Javascript 裝載和執行

    一兩個月前在淘寶內網里看到一個優化Javascript代碼的競賽,發現有不少的人對Javascript的執行和裝載的基礎并不懂,所以,從那天起我就想寫一篇文章,但一直耽擱了。自上篇《瀏覽器渲染原理簡介》,正好也可以承前啟后。 首先,我想說一下Javascript的裝載和執行。通常來說,瀏覽器對于Javascript的運行有兩大特性:1)載入后馬上執行,2)執…

    Linux干貨 2016-08-15
欧美性久久久久