初探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 20:49
下一篇 2016-12-18 21:48

相關推薦

  • Linux軟件包管理與實例

    Linux系統的早期,編譯是利用程序代碼生成可執行文件的過程的手動編譯。雖具有一定優勢,但是專業知識要求高,不利于實際操作。因此出現了許多軟件包管理器,最具代表的是由Red Hat 推出的RPM。Yum則有利于解決linux安裝軟件時的依賴性。 所謂依賴性,就是linux系統中的軟件將不同的功能模塊單獨寫入到不同的軟件包中,最后將多個相互依存的軟件包結合起來…

    2017-08-13
  • 計算機及Linux系統基礎簡介

    一、計算機的組成及其功能 計算機由運算器,控制器,存儲器,輸入裝置和輸出裝置五大部件組成計算機,每一部件分別按要求執行特定的基本功能。 運算器或稱算術邏輯單元(Arithmetical and Logical Unit) 運算器的主要功能是對數據進行各種運算。這些運算除了常規的加、減、乘、除等基本的算術運算之外,還包括能進行“邏輯判斷”的邏輯處理能力,即“與…

    Linux干貨 2017-07-02
  • cobbler實現centos7和centos6的無人值守安裝

    環境:系統: CentOS 7.2  ip: 172.16.0.11 一. Cobbler安裝準備 Cobbler是一個Linux服務器安裝的服務,可以通過網絡啟動(PXE)的方式來快速安裝、重裝物理服務器和虛擬機,同時還可以管理DHCP,DNS等。 Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),…

    Linux干貨 2017-06-04
  • 文本處理章練習題

    2017.7.27練習 1、找出ifconfig “網卡名” 命令結果中本機的IPv4地址 ifconfig |head -n 2 |tail -n 1|tr -s ” ” : |cut -d: -f4   2、查出分區空間使用率的最大百分比值 df|tr -s ‘ ‘ %|sort -t% -k5 …

    2017-07-29
  • 一起學DHCP系列(三)理解、APIPA

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://jeffyyko.blog.51cto.com/28563/162407      這是《一起學DHCP》系列的第三節。      …

    Linux干貨 2015-03-25
  • N26-第十一周

    1、詳細描述一次加密通訊的過程,結合圖示最佳。     發送方:1、使用單項加密算法計算數據文件的特征碼2、使用發送方私鑰加密特征碼3、使用對稱加密算法生成一對臨時密鑰4、使用臨時密鑰加密數據文件和加密后的特征碼5、使用接收方的公鑰加密使用臨時密鑰加密后的數據和特征碼和臨時密鑰的解密密碼,并將之發送給接收方 接收方1、使用接收方的私鑰解密…

    2017-04-09

評論列表(1條)

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

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

欧美性久久久久