(四)文本編輯器Vim/Vi

  目錄html

 

本系列先前的隨筆位於新浪博客編程

 

前言

 

  Vi和Vim都是文本編輯器,不一樣的是Vim是Vi的升級版本,它不只兼容Vi的全部指令,並且還有一些新的特性在裏面。vim

  Vim/Vi是一個功能強大的全屏幕文本編輯器,是Linux/UNIX上最經常使用的文本編輯器,主要用於使用Linux Sever時進行相似於DOS下批處理的Shell腳本編程,以及進行配置文件的修改,它的做用是創建、編輯、顯示文本文件。app

  Vim/Vi沒有菜單,只有命令編輯器

 

  Vim/Vi的三種工做模式:學習

  

 

 

經常使用命令

  

  一、插入命令

插入命令
命令 做用
a(append) 在光標後附加文本
A 在本行行末附加文本,即光標移至行末並進入插入模式
i(insert) 在光標前插入文本
I 在本行行首插入文本,即光標移至行首並進入插入模式
o 在光標下插入新行
O 在光標上插入新行

 

  二、定位命令 

定位命令
命令 做用
h方向左鍵 光標左移一個字符
j方向下鍵 光標下移一行
k方向上鍵 光標上移一行
l方向右鍵 光標右移一個字符
$ 光標移至行尾
0 光標移至行首
H(High) 光標移至屏幕上端
M(Middle)  光標移至屏幕中央
L(Low) 光標移至屏幕下端
:set nu 顯示行號
:set nonu 取消顯示行號
gg 光標到第一行
G 光標到最後一行
nG:n 光標到第n行

 

   三、刪除命令

刪除命令
命令 做用
x 刪除光標所在處字符
nx 刪除光標所在處後n個字符
dG 刪除光標所在行起到文件末尾的內容
D 刪除從光標所在處到行尾
:n1,n2d 刪除指定範圍(n1~n2)的行

 

  四、複製和剪切命令

複製和剪切命令
命令 做用
yyY 複製當前光標所在行
nyynY 複製當前光標所在行起n行
dd 剪切當前光標所在行
ndd 剪切當前光標所在行起n行
p(paste) 粘貼在當前光標所在行下面
P 粘貼在當前光標所在行上面

 

  五、替換和撤銷命令 

替換和撤銷命令
命令 做用
r(replace) 替換光標所在處字符
R 從光標所在處開始替換字符,按Esc結束
u(undo) 撤銷上一步操做

 

  六、搜索和替換命令

搜索和替換命令
命令 做用
/string

從前向後搜索指定字符串stringspa

n跳到下一個指定字符串出現的位置插件

N跳到上一個指定字符串出現的位置設計

搜索時忽略大小寫:set iccode

:%s/old/new/g 全文替換指定字符串(用new替換old)
:n1,n2s/old/new/g 在必定範圍(n1~n2)內替換指定字符串

 

   七、保存和退出命令

保存和退出命令
命令 做用
:w 保存修改
:w new_filename 另存爲指定文件
ZZ:wq 保存修改並退出
:q! 不保存修改退出

:wq!(只有管理員root

文件的全部者可使用)

保存修改並退出

可忽略文件的只讀屬性

 

 

擴展應用

 

  1.在當前文件末尾導入其餘文件的內容   :r 文件名 

 

  2.在Vim/Vi中執行命令   :! 命令 

 

  3.在當前文件末尾導入命令執行的結果(上面兩個命令結合)   :r !命令   

    範例:經常使用於把當前時間導入到文件末尾用來標識最後一次修改時間   :r !date 

 

  4.定義快捷鍵   :map 快捷鍵 觸發命令   (取消定義的快捷鍵 :unmap 快捷鍵 )

    範例:定義快捷鍵ctrl+p在行首插入#註釋本行    :map ^P I#<ESC>       (^P並非直接打出來的,而是先按ctrl+v,再按ctrl+p,I爲在行首插入,#爲註釋符號,在Shell腳本和Linux系統配置文件中#表示註釋,<ESC>表示從插入模式返回到命令模式)

         定義快捷鍵ctrl+b刪掉行首字符(多用於取消註釋)   :map ^B 0x   (0把光標移至行首,x刪除這個字符)

       定義快捷鍵ctrl+e在當前光標前插入個人郵箱地址   :map ^E iupc_eniac12@163.com<ESC>  

 

  5.連續行註釋   :n1,n2s/^/#/g   (實際上就是以前提到過的替換命令,^表示行首(是直接打出來的,不是ctrl+v),這裏的行首指的是這個位置不是光標移到行首指示的那個是字符,因此這麼命令起到的做用是添加而不是替換,要添加的符號是#)

    在大多數程序設計語言中註釋符號是//,而不是#,這時連續行註釋要這麼寫   :n1,n2s/^/\/\//g   (錯誤的寫法:n1,n2s/^////,Vim識別不出中間的//爲要添加的內容,因此要用轉義字符'\/'表示'/',new的地方是\/\/,使用了轉義字符表示//)

 

  6.連續行取消註釋   :n1,n2s/^#//g   (^#表示行首的#,把行首#替換成空,即刪除行首#)

 

  7.實時替換   :ab mymail upc_eniac12@163.com   (ab是替換命令,把a替換成b,此處a是mymail,b是upc_eniac12@163.com,該命令是實時替換即當咱們在文本中輸入mymail後再按下空格或ESC,Vim會自動把咱們剛纔輸入的mymail替換成upc_eniac12@163.com,因此這是一個懶人必備的命令,取消這個實時替換的命令是 :unab mymail )

 

  上述對Vim的設置只在本次打開有效,若是要讓其再任意時刻打開都有效須要編輯Vim的配置文件(~/.vimrc,~表示用戶的宿主目錄,管理員root的宿主目錄缺省在/root下面,普通用戶的宿主目錄缺省在/home下面),配置文件.vimrc缺省是空的,例如在文件中寫入 set nu ,則之後每次打開Vim都會默認顯示行號

 

 

總結

 

  Vim/Vi博大精深,初學者使用會以爲十分複雜,操做效率低下,但當你徹底熟悉了它以後,你就會以爲它簡直就是個神器,使用它能夠極大的提升咱們碼代碼的效率。

 

  這是一個你不須要使用鼠標,不需使用小鍵盤,只須要使用大鍵盤就能夠完成不少複雜功能文本編輯的編輯器,否則,Visual Studio也不就會有vim的插件了。

  學習vim就像學彈鋼琴同樣,一旦學會,受益無窮。

 

  另外這裏還有一篇關於Vim比較不錯的文章,想要深刻學習能夠看一看

相關文章
相關標籤/搜索