初探VIM_第六周練習(02)

引言—什么是Vim?

接觸Linux這么久,想必對于一切皆文件的哲學思想已經不陌生了。因此,學習并掌握用一款Linux文本編輯器,對于玩轉LInux來說,是很有必要的。

vi編輯器是Unix系統最初的編輯器,它使用控制臺圖形模式來模擬文本編輯窗口,允許查看文件中的行、在文件中移動、插入、編輯和替換文本。

在GNU項目將vi編輯器移植到開源世界時,又在vi的基礎上做了一些改進。由于它不再是以前Unix中的那個原始的vi編輯器,開發人員也就將它重命名為vi improved,簡稱vim。

Vim的使用

vim三種模式概述

基本上vim共分為三種模式,分別為一般模式、編輯模式、命令行模式。

一般模式

  • 用vim打開文件,就直接進入一般模式。在這個模式中,可以上下左右按鍵來移動光標,可以刪除字符/整行,可以復制粘貼等操作。

編輯模式

  • 按下“i, I, o, O, a, A, r, R”中的任意之一,可以從一般模式進入到編輯模式中,只有進入了編輯模式才能進行編輯。在編輯模式中,再按下Esc鍵,就可以回到一般模式。

命令行模式

  • 按下“:、/、?”3個中的任意之一,就可以從一般模式進入到命令行模式中。命令行模式又稱末行模式,在這個模式中,可以查找數據,讀取、保存、替換、顯示行號等一系列的文本操作。另外退出vim編輯器,也是從這個模式下退出的。

三種模式的關系,如下圖所示:

圖片1.png

  • 根據以上的關系圖,不難發現:只能從一般模式切換到編輯模式和末行模式,即僅可實現一般模式和編輯模式,一般模式和末行模式之間的切換,編輯模式和末行模式之間無法進行切換,只能通過中間的橋梁—一般模式。

一般模式

打開文件

# vim [options] [file ..]

如果不指定文件,將進入以下界面:

圖片2.png

光標跳轉

字符間跳轉

h / ←:左;
j / ↓:下;
k / ↑:上;
l / →:右;
#COMMAND:跳轉由#指定的個數的字符,COMMAND是h/j/k/l;

單詞間跳轉

* w:下一個單詞的詞首;
* e:當前或后一個單詞的詞尾;
* b:當前或前一個單詞的詞首;
* #COMMAND:跳轉由#指定的個數的單詞;

行首行尾跳轉

^:跳轉至行首的第一個非空白字符;
0:跳轉至行首;(絕對行首)
$:跳轉至行尾;(絕對行尾)

行間跳轉

#G:跳轉至由#指定的行;
1G, gg:第一行;
G:最后一行;

句間跳轉

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

段間跳轉

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

刪除

x:刪除光標所在處的字符;
#x:刪除光標所在處起始的#個字符;
d:刪除命令,可結合光標跳轉字符,實現范圍刪除;
d$:刪除當前光標所在處,直至行尾;
d^:刪除當前光標所在處,直至行首;
dw:刪除當前光標所在處,直至下一個單詞的詞首;
dd:刪除光標所在處的行;
#dd:刪除光標所處的行起始的共#行;

復制

y:復制,工作行為相似于d命令;
y$:復制當前光標所在處,直至行尾;
y^:復制當前光標所在處,直至行首;
yw:復制當前光標所在處,直至下一個單詞的詞首;
yy:復制一整行;
#yy:復制#行;

粘貼

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

其他編輯操作

可視化模式:(進行塊選,然后操作)
v:按字符選定;
V:按行選定;
    結合編輯命令使用:d, c, y

撤銷(undo)操作:
u:撤銷此前的操作;
    #u:撤銷此前的#個操作;
撤銷此前的撤銷:
    Ctrl+r

重復執行前一個編輯操作:
    .(點號)

編輯模式

在一般模式中,只要按下i,o,a等字符就能進入編輯模式。在編輯模式中,可以發現左下角狀態欄會出現-插入-的字樣(如果是英文環境則是-INSERT-字樣),即此刻就可以編輯文本了。鍵盤上除了[Esc]這個鍵以外,按下其他的任何鍵均視為一般輸入,所以可以進行編輯了。如下圖即為進入編輯模式的截圖:

圖片3.png

命令行模式

地址定界

:start_pos[,end_pos]    起始位置和結束位置,中間用(,)隔開,且后者可以省略;
#:特定的第#行,例如5即第5行;    (#表示數字)
.(點號):當前行;
$:最后一行;
#,#:指定行范圍,左側為起始行,右側為結束行;一般右側值大于左側值;
#,+#:指定行范圍,左側為超始行絕對編號,右側為相對左側行號的偏移量;例如:3,+7;此為相對地址定界法;
.,$-1:從當前行到倒數第二行;
1,$:表示全文:從第一行到最后一行;
%:全文;
/pattern/:從光標所在處起始向文件尾部第一次被模式所匹配到的行;
/first/,$:從第一次能被first匹配到的行開始,到最后一行結束;
/pat1/,/pat2/:從光標所在處起始(開始往下找),第一次由pat1匹配到的行開始,至第一次由pat2匹配到的行結束之間的所有行;
地址定界,可同編輯命令一同使用,實現編輯操作:如,d刪除,y復制等;
w /PATH/TO/SOMEFILE:將范圍內的文本保存至指定的文件中;
r /PATH/FROM/SOMEFILE:將指定的文件中的文本讀取并插入至指定位置;

查找

/PATTERN:從當前光標所在處向文件尾部查找能夠被當前模式匹配到的所有字符串;
?PATTERN:從當前光標所在處向文件首部查找能夠被當前模式匹配到的所有字符串;
    n:下一個,與命令方向相同;
    N:上一個,與命令方向相反;

查找并替換

s:末行模式的命令;使用格式:
s/要查找的內容/替換為的內容/修飾符
可把分隔符替換為其它非常用字符:即將s//替換為 s@@@ s###

要查找的內容:可使用正則表達式;
替換為的內容:不能使用正則表達式,但可以引用;
    如果“要查找的內容”部分在模式中使用分組符號:在“替換為的內容”中使用后向引用;
    直接引用查找模式匹配到的全部文本,要使用&符號;
修飾符:
    i:忽略大小寫;
    g:全局替換,意味著一行中如果匹配到多次,則均替換;

關閉文件

ZZ        保存并退出;
:q        離開vim編輯器;
:q!        強制退出,不保存此前的編輯操作;
:wq        保存并退出;
:w        將編輯的文件寫入硬盤文件中;
:x        保存并退出;
:w /PATH/TO/SOMEFILE         將保存的修改后,保存到其他文件中。類似于另存為。

多文件編輯

  • 1、通過vim FILE1 FILE2 ...命令來使用一個vim打開多個文件。

  • 2、在vim中先使用:files命令查看編輯的同時打開的文件是什么,如下圖所示,我們同時打開了兩個文件。按下任意鍵之后,就可以回到vim的一般模式。

    圖片4.png

  • 3、在文件間切換:

    :next / :n  下一個;
    :prev / :N  上一個;
    :first   第一個;
    :last   最后一個;
  • 4、下面就可以在打開的多文件之間進行復制粘貼等操作。

  • 5、退出所有文件:

    :wqall  保存所有文件并退出;
    :wall       只是保存所有文件;
    :qall       只是退出所有文件;

多窗口編輯

輸入命令vim -o | -O FILE1 FILE2 ...,則進入多窗口編輯模式,如下圖所示:

-o:水平分割窗口
-O:垂直分割窗口
在窗口間切換:Ctrl+w, ARROW(箭頭↑↓→←)
注意:單個文件也可以分割為多個窗口進行查看:
Ctrl+w, s:水平分割窗口
Ctrl+w, v:垂直分割窗口

圖片5.png

圖片6.png

定制vim的工作特性

注意:在末行模式下的設定,僅對當前vim進程有效;若想永久生效需要配置腳本文件。

永久有效:
    全局:/etc/vimrc
    用戶個人:~/.vimrc
1、行號
    顯示:set number, 簡寫為set nu
    取消顯示:set nomber, set nonu
2、括號匹配高亮
    匹配:set showmatch, set sm
    取消:set nosm
3、自動縮進
    啟用:set ai
    禁用:set noai
4、高亮搜索
    啟用:set  hlsearch
            禁用:set nohlsearch
5、語法高亮
    啟用:syntax on
    禁用:syntax off 
6、忽略字符大小寫
    啟用:set ic
    禁用:set noic

總結

Vim的學習曲線相當的陡峭,入門不易,深入需要花時間,熟練記憶并練習三種模式對應的操作,方能熟能生巧。

原創文章,作者:N24_VC,如若轉載,請注明出處:http://www.www58058.com/64089

(0)
N24_VCN24_VC
上一篇 2016-12-18
下一篇 2016-12-18

相關推薦

  • 【典韋文章】zabbix實現微信報警

    作者 典韋,追馬代發 一、注冊微信公眾號 首先申請微信公眾平臺https://mp.weixin.qq.com/一個人最多申請5個公眾號,所以還是可以的 申請完之后就可以根據騰訊的提示使用微信公眾號了,然后用你自己的微信掃描關注微信號。 就可以看到用戶數了,接下來的就要使用的用戶的微信ID號了。點擊用戶查看用戶的微信ID號。在瀏覽器查看用戶的微信ID號。就是…

    Linux干貨 2015-08-24
  • Linux基礎知識之用戶和組的配置文件解析

    實驗環境:  Linux系統的版本為CentOS6.8_x86_64版本,以root用戶遠程用xshell連接,進行實驗。 1.創建用戶設置的配置文件:/etc/default/useradd        useradd 的配置文件如下圖所示:        &nbs…

    Linux干貨 2016-08-02
  • 查找與壓縮

    文件查找 在文件系統上查找符合條件的文件; ? 文件查找:locate, find locate :非實時查找(數據庫查找) find :實時查找 locate 1.查詢系統上預建的文件索引數據庫 /var/lib/mlocate/mlocate.db ? 2.依賴于事先構建的索引,索引的構建是在系統較為空閑時自動進行(周期性任務);管理需要員手動更新數據庫…

    Linux干貨 2016-08-22
  • 邏輯卷實例

    1、創建一個至少有兩個PV組成的大小為20G的名為testvg的VG;要求PE大小為16MB, 而后在卷組中創建大小為5G的邏輯卷testlv;掛載至/users目錄 2、新建用戶archlinux,要求其家目錄為/users/archlinux,而后su切換至archlinux用戶,復制/etc/pam.d目錄至自己的家目錄 3、擴展testlv至7G,要…

    Linux干貨 2016-09-01
  • CentOS 7和CentOS 6 使用gpg工具實現公鑰加密和解密

    運行環境: [root@Shining ~]# uname -a Linux Shining.ACG 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x…

    Linux干貨 2016-12-01
  • 8-10 bash變量淺談

    8-10 作業 一、腳本 1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。 2、編寫腳本/root/bin/backup.sh,可實現每日將/etc/目錄備份到/root/etcYYYY-mm-dd中 3、編寫腳本/root/bin/disk.…

    Linux干貨 2016-08-15

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-12-23 12:27

    贊,vim是將來工作很常用的工具~希望能靈活運用~繼續加油~

欧美性久久久久