VIM入門及進階

什么是VIM?

    VIM類似于Vi編輯器, 它是一個功能強大、可高度定制的文本編輯器, 是一個純粹的自由軟件。注意:vi和vim不完全相同

為什么要使用VIM?

    相信大多數人接觸Linux時使用的第一個文本編輯器都不是VIM,很多人看到VIM復雜的命令操作就望而祛步了, 從而選擇nano,gedit等較簡單的文本編輯器, 但是熟悉使用VIM之后你真的就不想回去了!




VIM的用法:

    很多習慣使用Windows的朋友可能一開始難以接受VIM編輯器, 因為它實在是太"難"了, 純命令操作, 但是很多經常使用Linux的朋友一般能快速上手。

VIM如何打開文件:  

vim [OPTION]... [FILE]...

如果不指定文件則進入以下界面

    blob.png

vim +2 /etc/passwd  ##使用vim打開/etc/passwd文件并且使光標處在第二行

vim PATTERN  /etc/passwd ## 使用vim打開/etc/passwd文件并且使光標處在指定模式匹配到的行上, 關于模式請自行查閱正則表達式的相應內容,這里不做闡述

VIM是一種模式化的編輯器, 分為以下4種模式:

命令模式:輸入相應指令完成文本的編輯

輸入模式:可直接輸入字符

末行模式:VIM內建的命令行接口,功能強大

可視化模式:可選定字符通過相應指令執行對選定字符的操作



模式轉換

 命令模式 –> 輸入模式

   i:在所在光標前進入插入模式
   a:在所在在光標后進入插入模式
   o:在光標所在行下新建一行,并轉到插入模式
    O;在光標所在行上新建一行,并轉到插入模式
   I:直接跳到所在行的行首,并進入插入模式
   A:直接跳大所在行的行尾,并進入插入模式

 輸入模式 –> 編輯模式

   按下ESC鍵退回到命令模式

 命令模式 –> 末行模式

   輸入: 進入末行模式

 末行模式 –> 命令模式

   按下ESC鍵退回命令模式, 可能有時候需要按兩下



關閉文件:

末行模式中:
    q:退出
    w:保存
    q!:強制退出
    wq:保存退出
    x:保存退出
命令模式下:
    ZZ:保存退出



光標跳轉:

字符間跳轉:

 h:左
 j:下
 k:上
 l:右
 #COMMAND:指定一次跳轉的數量, 例如3h, 向左跳轉3個字符

單詞間跳轉:

 w:后一個單詞的詞首
 e:當前或下一個單詞的詞尾
 b:當前或上一個單詞的詞首
 #COMMAND:同樣可以通過#指定一次跳轉的數量

行首尾跳轉:

 ^:跳轉到當前行的第一個非空白字符
 $:跳轉到當前行的尾部
 0:跳轉到當前行的首部

行間移動:

 #G:跳轉到指定行
 G:跳轉到最后一行
 gg,1G:跳轉到第一行

句間移動:

):下一句
(:上一句
#COMMAND:同樣可以通過#指定一次跳轉的數量

段間移動:

}:下一段
{:上一段
#COMMAND:同樣可以通過#制定一次跳轉的數量



VIM的命令模式下的命令:


字符編輯:

x:刪除當前光標所在的字符
#x:刪除當前光標起始處的#個字符
xp:交換和光標所在字符后的字符的位置

替換命令:

r:替換當前光標所在字符

刪除命令:

d:刪除命令, 可結合光標跳轉命令使用,來實現范圍刪除
例如:dw刪除一個單詞, dG刪除當前光標所在行到最后一行
dd:刪除整行
D:刪除光標當前所在行并保存當前行
#COMMAND:同樣可以通過#制定一次跳轉的數量

粘貼命令:

p:粘貼當前緩存區的內容, 如果緩存區中內容為整行內容,則內容粘貼在當前行的正下方, 否則粘貼至光標的后面
P:粘貼當前緩存區的內容, 如果緩存區中內容為整行內容,則內容粘貼在當前行的正上方, 否則粘貼至光標的后面

復制命令:

y:復制, 工作命令相似d命令
例如:yw復制一個單詞
yy:復制整行
#COMMAND:同樣可以通過#制定一次跳轉的數量

改變命令:

c:修改,可以使 命令模式 --> 輸入模式
cc:刪除行并輸入新內容
cw:刪除后一個單詞,并進入插入模式
ce,c^,c0...操作請自己嘗試, 這里不做闡述

其他相關的編輯操作

v:按字符選定
V:按行選定
選定后結合編輯命令使用
u:撤銷之前的編輯
Ctrl+r:撤銷之前的撤銷
.:重復前一個編輯操作

翻屏操作:

Ctrl+f:向文件尾部翻一屏
Ctrl+b:向文件首部翻一屏
Ctrl+d:向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏

查找操作:

/PATTERN:在全文搜索指定模式匹配的字符, 從光標的位置至文件尾部的順序
?PATTERN:在全文搜索指定模式匹配的字符, 從光標的位置至文件首部的順序
n:與當前命令同方向, /PATTERN為往后翻
N:與當前命令反方向



VIM末行模式的操作:


(1) 地址定界

注釋:以下命令不加:, 使用前須輸入:進入末行模式
start,end
#:具體第#行, 例如2表示第2行
#,#:表示第#行到第#行, 例如2,10表示第2行到第10行
#,+#:表示左側的#表示起始, 加上右邊#表示的行數
.:表示當前行
$:表示最后一行
.,$-1:表示當前行到倒數第2行
%:表示全文, 相當于1,$
/pat1/,/pat2/:從第一個被匹配的pat1行開始,到第一個被匹配的pat2的行結束
使用方法:
后跟一個編輯命令
d:刪除
y:復制
w /path/to/somewhere:將范圍內的行另存到指定文件
r /path/to/somewhere:在指定位置插入指定文件的所有內容

(2) 查找和替換

地址定界s/要查找的內容/替換的內容/修飾符
  例如:替換全文的abc為123 %s/abc/123/gi
要查找的內容:可使用模式匹配
替換為的內容:不可使用模式, 但可以使用\1,\2等后向引用, 還可以使用&符號引用在前面找到的內容
修飾符:
i:忽略大小寫
g:全局替換
查找替換的分隔符可替換為其他字符
例如::s/abc/123/g可替換成 :s@abc@123@g

練習:

1、復制/etc/grub2.cfg 至/tmp目錄, 用查找替換命令刪除/tmp/grub2.cfg文件中的行首的空白字符
    %s/^[[:space:]]//
2、復制 /etc/rc.d/init.d/functions文件至/tmp目錄, 用查找替換命令為/tmp/functions的每行開頭為空白字符的行的行首添加一個#號
    %s/^[[:space:]]/#&/

多文件模式:

vim FILE1 FILE2 FILE3...
在末行模式下輸入以下命令:
   firs:第一個
   netx:下一個
   prev:上一個
   last:最后一個
   wall 保存所有文件
   qall 退出所有

窗口分隔模式:

vim -o|-O FILE1 FILE2...
-o:水平分隔
-O:垂直分隔
在窗口間切換:Ctrl+w+上下左右
單文件窗口分隔:
Ctrl+w,s split 水平分隔
Ctrl+w,v vertical 垂直分隔

如圖:為水平分隔

blob.png

如圖:為垂直分隔


blob.png




定制vim的工作特性:


我們可以通過修改VIM的配置文件來達到定制VIM的工作特性

配置文件:
  全局 /etc/vimrc
  個人 ~/.vimrc
末行模式下的配置只對當前vim進程有效

(1) 行號
顯示:set number, 簡寫為set nu
取消顯示:set nonumber, 簡寫為set nonu

(2) 括號匹配
匹配:set showmatch, 簡寫為set sm
取消:set nosm

(3) 自動縮進
啟用:set ai
禁用:set noai

(4) 高亮顯示
啟用:set hlsearch
禁用:set nohlsearch 簡寫 set noh

(5) 語法高亮
啟用:syntax on
禁用:syntax off

(6) 忽略字符大小寫
啟用:set ic
禁用:set noic

(7) 獲取幫助:
:help
:help subject


總結:

   VIM是一個入門難,精通難的文本編輯器,諸多指令需要牢牢的記在心中,熟練使用可以提高效率






原創文章,作者:Net18-AnyISalIn,如若轉載,請注明出處:http://www.www58058.com/12057

(0)
Net18-AnyISalInNet18-AnyISalIn
上一篇 2016-03-04
下一篇 2016-03-04

相關推薦

  • Linux磁盤管理實操

    Linux磁盤管理實操 1、創建一個10G分區,并格式為ext4文件系統。 先使用fdisk工具創建一個10G的新分區。使用fdisk打開要創建磁盤分區的物理設備fdisk /dev/sdb,然后使用n指令創建新的分區,分區類型選此處選擇為主分區,第一個柱面使用默認的1,最后的柱面,使用+10G這種表示方式,表示創建的分區大小為10G。 創建后可以使用p指令…

    系統運維 2016-12-13
  • 創建目錄樹

    創建目錄樹 [wing@bogon ~]$ mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,\ sysconfig/network-scripts},\ lib/modules,lib64,proc,sbin,sys,tmp,usr/local{bin,sbin},\ var/{lock,…

    Linux干貨 2017-07-24
  • Lua簡明教程

    這幾天系統地學習了一下Lua這個腳本語言,Lua腳本是一個很輕量級的腳本,也是號稱性能最高的腳本,用在很多需要性能的地方,比如:游戲腳本,nginx,wireshark的腳本,當你把他的源碼下下來編譯后,你會發現解釋器居然不到200k,這是多么地變態?。?bin/sh都要1M,MacOS平臺),而且能和C語言非常好的互動。我很好奇得瀏覽了一下Lua解釋器的源…

    Linux干貨 2016-08-15
  • 文件查找:locate/find

    文件查找就是在文件系統上查找符合條件的文件,工具名分別為:locate和find locate是非實時查找或數據庫查找的工具;而find則是實時查找工具。 locate locate依賴于事先構建的索引。索引的構建是在系統較為空閑時自動進行(即為周期性任務),也可以手動更新數據庫(updatedb) 注意:索引構建過程需要遍歷整個根文件系統,極其消耗資源。 …

    Linux干貨 2016-03-12
  • 八大排序算法

    概述 排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。 我們這里說說八大排序就是內部排序。     當n較大,則應采用時間復雜度為O(nlog2n)的排序方法:快速排序、堆排序或歸并排序序。    快速…

    Linux干貨 2015-04-07
  • MySQL慢日志監控腳本實例剖析

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1577326        公司線上的 MySQL 慢日志,之前一直沒有做好監控。趁著上周空閑,我就把監控腳本寫了下,…

    Linux干貨 2016-08-15

評論列表(1條)

  • stanley
    stanley 2016-03-04 17:26

    不錯,層次清晰,內容豐滿。贊

欧美性久久久久