vim編輯器

vim編輯器

vi:Vistual Interface,是一種文本編輯器,所謂文本編輯器就是基于字符編碼的文件,常見的編碼有ASCLL編碼,UNICODE編碼。

vim:即vi IMproved:vi的增強版,可以使用顏色或者底線等方式來顯示一些特殊信息,是模式化的編輯。

文本編輯器的種類

行編輯器:所謂行編輯器就是一行一行來編輯處理的工具,如sed

全屏編輯器:編輯空間占據整個屏幕,如nano,vi

vim工作的三種模式

編輯模式:也叫命令模式,鍵盤操作常被理解為編輯命令,如移動光標,剪切/粘貼文本。

輸入模式:在文本文件中進行內容輸入

末行模式:vim內置的命令行接口,執行vim的內置命令,如保存,退出等。 

vim的使用

打開文件

#vim [OPTION]…FILE…

+#:打開文件后,直接讓光標處于第#行的行首
+/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首
vim + file:直接打開file,光標在最后一行
vim -b file:二進制方式打開文件
vim -d file1 file2...:比較多個文件
vim -m file 只讀打開文件

如果該文件存在,文件被打開并顯示內容

如果該文件不存在,當編輯后第一次存盤時創建它

模式轉換

1、ESC鍵:可以從輸入模式轉到編輯模式

2、從輸入模式轉到編輯模式,可以使用下面的命令:

i:在光標所在的前方轉換為輸入模式
a:在光標所在的后方轉換為輸入模式
o:在光標所在行的下方新建一個空白行并轉換為輸入模式
I:在光標所在的行的行首輸入
A:在光標所在的行的行尾輸入
O:在光標所在行的上方新建一個空白行

3、編輯模式轉到末行模式,直接輸入冒號(:)即可在窗口的左下方顯示冒號:

4、末行模式到編輯模式:敲擊ESC鍵

5、輸入到編輯到末行:輸入模式不能直接轉換到末行模式

退出文件

需要先切換至編輯模式之后才能退出,在切換至編輯模式之后鍵入一下命令即可進行相關操作

:q 退出
:q! 不保存退出
:wq 保存退出
:x 保存退出
:wq!強制保存退出
:ZZ 編輯模式保存退出的快捷鍵
:ZQ 編輯模式不保存退出的快捷鍵
:w /PATH/TO/SOMEWHERE 將當前文件內容寫入另一個文件
:r /PATH/TO/SOMEWHER 讀文件內容到當前文件中
r!command 把命令的標準輸出讀入文件

命令模式光標跳轉

字符間跳轉:

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$: 刪除到行尾
d^:刪除到非空行首
d0:刪除到行首
dw:刪除下一個單詞的詞首
de:刪除下一個單詞的詞尾
db:刪除當前或前一個單詞的詞首
#COMMAND
dd: 刪除光標所在的行
   #dd:多行刪除
D:從當前光標位置一直刪除到行尾,留空行,等同于d$

復制命令(y, yank):

y: 復制,行為相似于d命令
y$:復制從光標處到行尾
y0:復制從光標處到行首(絕對行首)
y^:復制從光標處到行首
yy:復制行
   #yy: 復制多行
Y: 復制整行
#COMMAND

粘貼命令(p, paste):

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

改變命令(c, change):

c: 修改,結合光標跳轉字符使用,修改跳轉范圍內的字符

    w,b,e,$,^,0

所為的修改就是先刪除,再轉換為輸入模式

cc:刪除當前行并輸入新內容
#cc:刪除指定行并輸入新內容
C:刪除當前光標到行尾,并切換成插入模式

    地址定界:

:start_pos,end_pos
#: 具體第#行,例如2表示第2行;
#,#: 從左側#表示行起始,到右側#表示行結尾
#,+#: 從左側#表示的行起始,加上右側#表示的行數
:2,+3 表示2到5行
.: 當前行
$: 最后一行
.,$-1 當前行到倒數第二行
%:全文, 相當于1,$
/pat1/,/pat2/ 從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束
#,/pat/ 從指定行開始,到第一次被pat匹配到的行結束
pat/,$ 從第一次被pat模式匹配到的行開始,到最后一行結束
    
使用方式:后跟一個編輯命令
  d:刪除所匹配的內容
  y:復制所匹配的內容
  w file: 將范圍內的行另存至指定文件中
  r file:在指定位置插入指定文件中的所有內容

    查找:

/PATTERN:從當前光標所在處向文件尾部查找
  n:與命令同方向
  N:與命令反方向
?PATTERN:從當前光標所在處向文件首部查找
  n:與命令反方向
  N:與命令同方向

查找并替換

    s: 在擴展模式下完成查找替換操作

格式:s/要查找的內容/替換為的內容/修飾符

要查找的內容:可使用模式

替換為的內容:不能使用模式,但可以使用\1, \2, …等后向引用符號;還可以使用“&”引用前面查找時查找到的整個內容

修飾符:

i: 忽略大小寫
g: 全局替換;默認情況下,每一行只替換第一次出現
gc:全局替換,每次替換前詢問

查找替換中的分隔符/可替換為其它字符,例如s@/etc@/var@g s#/boot#/#i

撤銷更改

u:撤銷最近的更改
#u:撤銷之前多次更改
U:撤消光標落在這行后所有此行的更改
按Ctrl-r重做最后的“撤消”更改
.:重復前一個操作
n.:重復前一個操作n次

可視化模式

允許選擇的文本塊

    v面向字符

    V面向行

    ctrl-v 面向塊

可視化鍵可用于與移動鍵結合使用:

    w,),},箭頭等

突出顯示的文字可以被刪除,復制,變更,過濾,搜索/替換等

多文件模式

vim FILE1 FILE2 FILE3 …

:next 下一個
:prev前一個
:first 第一個
:last 最后一個
:wall 保存所有
:qall退出所有
:wqall

使用多個“窗口”

多文件分割

vim -o|-O FILE1 FILE2 ...
    -o: 水平分割
    -O: 垂直分割
    在窗口間切換:Ctrl+w, Arrow

單文件窗口分割:

Ctrl+w,s: split, 水平分割
Ctrl+w,v: vertical, 垂直分割
ctrl+w,q:取消相鄰窗口
ctrl+w,o:取消全部窗口
:wqall退出

定制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
(5) 語法高亮
    啟用:syntax on
    禁用:syntax off
(6) 忽略字符的大小寫
    啟用:set ic
    不忽略:set noic
(7) 文件格式
    啟用:fileformat=unix
    不忽略:fileformat=dos
(8) 設置文本寬度
    :set textwidth=65 (vimonly)
    :set wrapmargin=15
        
:help option-list
:setor:set all

練習

1、復制/etc/profile至/tmp/目錄,用查找替換命令刪除/tmp/profile文件中的行首的空白字符

%s@^[[:space:]]\+@@g

2、復制/etc/rc.d/init.d/functions文件至/tmp目錄,用查找替換命令為/tmp/functions的每行開頭為空白字符的行的行首添加一個#號

%s@^[[:space:]]\+@#&@g

3、如何設置tab縮進為4個字符?

set ts=4

4、復制/etc/rc.d/init.d/functions文件至/tmp目錄;替換/tmp/functions文件中的/etc/sysconfig/init為/var/log;

%s@/etc/sysconfig/init@/var/log@g

5、刪除/tmp/functions文件中所有以#開頭,且#后面至少有一個空白字符的行的行首的#號;

%s@^#[[:space:]]\{1,\}@@g

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

(0)
xiaoqingxiaoqing
上一篇 2016-08-15
下一篇 2016-08-15

相關推薦

  • linux用戶權限管理

    用戶: 管理員–root= 0 普通用戶–(1-65535) 系統用戶–(1-499),(1-999) 登錄用戶–(500+),(1000+) 用戶和組的配置文件位置: /etc/passwd– 存儲系統用戶所有信息 /etc/group– 存儲用戶組的所有信息 /etc/shadow&…

    2017-04-02
  • 文件目錄介紹

    對于操作系統的目錄感覺總是記不住,今天結合上課筆記和自己的理解總結一下:/——-執行操作時總是要跳轉到不同的目錄,根是一個樹狀結構,下面介紹都是根下的目錄以及相關介紹├── bin 存放用戶使用的基本命令(可執行程序,二進制文件)、分區的時候不會單獨給它分區├── boot  跟內核有關的文件├── cgroup &nbsp…

    Linux干貨 2017-04-10
  • 操作系統文件管理

      在現代計算機系統中,要用到大量的程序和數據,因內存容量有限,且不能長期保存,故而平時總是把它們以文件的形式存放在外存中,需要時再隨時將它們調入內存。如果由用戶直接管理外存上的文件,不僅要求用戶熟悉外存特性,了解各種文件的屬性,以及它們在外存上的位置,而且在多用戶環境下,還必須能保持數據的安全性和一致性。顯然,這是用戶所不能勝任、也不愿…

    Linux干貨 2015-04-13
  • python快速入門之數據類型

        Python 是 90 年代初由 Guido Van Rossum 為了打發圣誕節而創建的語言。如今它已是當前最流行的程序語言之一.     Python的關鍵要素有以下幾點:1.基本數據類型;2.對象引用;3.組合數據類型;4.邏輯操作符;5.控制流語句;6.算數操作符…

    Python干貨 2015-12-10
  • 初識路由以及小實驗

    路由(routing)就是通過互聯的網絡把信息從源地址傳輸到目的地址的活動。路由發生在OSI網絡參考模型中的第三層即網路層。 初識路由以及小實驗 根據實驗的目的要求畫出實驗拓撲圖 準備實驗環境 根據實驗拓撲圖開始配置 配置計算機的IP: 配置路由器R1和R2的IP 配置路由 實驗目的 實驗準備 實驗步驟 驗證實驗結果 實驗目的 為了更好的了解路由,通過一個小…

    Linux干貨 2016-11-24
  • python 10第二周博客作業

    1.取磁盤利用率:cut -d命令 df|tr –s? ‘ ’?? ‘%’ |cut –d “%” –f5正則表達式:df -h |grep “^/dev/sd” |grep -o “[[:digit:]]\+%”|grep -o “[[:digit:]]\+”2. paste 合并兩個…

    Linux干貨 2018-03-17
欧美性久久久久