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 09:24
下一篇 2016-08-15 09:25

相關推薦

  • Redhat的Linux產品版本AS/ES/WS的聯系與區別

    Redhat 有兩大Linux產品系列,其一是免費的Fedora Core系列主要用于桌面版本,提供了較多新特性的支持。另外一個產品系列是收費的Enterprise系列,這個系列分成:AS/ES/WS等分支,他 們都是redhat企業級Linux,簡稱為 RHEL AS 是超級服務器版(Advanced Server),他在標準Linux內核的基礎上,做了性…

    Linux干貨 2015-03-20
  • Linux基礎之—用戶和組管理

    導言:   我們在使用計算機資源時為了資源的合理規劃和利用,同時為了實現更好的管理,需要在計算機里有一個使用資源的憑證,這個憑證就是用戶,下面就來介紹Linux用戶和組管理。 1.資源分派:     資源的分派可以分為三個步驟,分別是    (1)認證(Authertication)   &nbsp…

    Linux干貨 2016-08-04
  • 磁盤管理

    linux的哲學思想:一切皆文件; 設備類型: 塊(block):隨機訪問,交換數據單位是“塊”; 字符(character):線性訪問,數據交換單位是“字符”; 設備文件:FHS /dev     設備文件:關聯至設備驅動程序;設備的訪問入口;       &nbsp…

    Linux干貨 2016-08-30
  • vsftpd

    練習:完成vsftpd配置 (1) 禁錮系統用戶于家目錄 [root@node3 ~]# yum -y install vsftpd [root@node3 ~]# vim /etc/vsftpd/vsftpd.conf chroot_local_user=YES &n…

    Linux干貨 2016-10-16
  • 進程管理

    進程概念 內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能等 Process(進程):運行中的程序的一個副本,是被載入內存的一個指令集合 進程ID (Process ID ,PID )號碼被用來標記各個進程 UID、GID、和SELinux語境決定對文件系統的存取和訪問權限 通常從執行進程的用戶來繼承 存在生命周期 task struc…

    2017-05-09
  • Linux基礎知識(五)

    本文主要講述使用grep做模式匹配,具體示例包括: 1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; 3、打出netstat -tan命令執行結果中以‘LISTEN’,后或跟空白字符結尾的行; 4、添加用戶b…

    Linux干貨 2016-10-23
欧美性久久久久