linux文本編輯利器-vim

概述

Vim是從vi發展出來的一個文本編輯器。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用,和Emacs并列成為類Unix系統用戶最喜歡的文本編輯器。Vim強大的編輯能力中很大部分是來自于其普通模式命令。vim的設計理念是命令的組合。例如普通模式命令"dd"刪除當前行,"dj"代表刪除到下一行,原理是第一個"d"含義是刪除,"j"鍵代表移動到下一行,組合后"dj"刪除當前行和下一行。用戶學習了各種各樣的文本間移動/跳轉的命令和其他的普通模式的編輯命令,并且能夠靈活組合使用的話,能夠比那些沒有模式的編輯器更加高效的進行文本編輯。

一.vim安裝

在新版的linux中,大部分都內置了vim編輯器。而一些比較老的版本中依然是vi,亦或者是使用過程中,失手把vim卸載了。遇到這些情況,如果想要使用功能強大的vim,就需要我們重新對其進行安裝。
如果你的系統已經連接外網,且yum源沒做修改,只需要執行一下命令進行安裝
yum install -y vim
如果沒有網絡的情況下,就需要到用rpm包的方式自行安裝。如下面是我在CentOS7上把vim卸載后,手動安裝的過程
~]# yum remove -y vim #卸載vim
  tmp]# which vim #在另一臺vim正常的CentOS7上查看vim命令位置
    /usr/bin/vim
tmp]# rpm -qf /usr/bin/vim  #查看vim是由哪個安裝包安裝而來
    vim-enhanced-7.4.160-1.el7.x86_64
Packages]# rpm -ivh vim-enhanced-7.4.160-1.el7.x86_64.rpmwarning: vim-enhanced-7.4.160-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
        package vim-enhanced-2:7.4.160-1.el7.x86_64 is already installed
[root@centos7 Packages]##以上是我由本地rpm包中安裝,實際中可能需要從其它相同版本中拷貝,然后安裝。由于其沒有依賴包,rpm包的方式還是蠻方便的哈。。

二.vim的簡單使用

1.打開文件
vim [OPTION]... FILE...
    +#:打開文件后直接將光標處于第#行
    +/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首
    vim + file 直接打開file,光標在最后一行
    vim -b file 二進制方式打開文件
    vim -d file1 file2... 比較多個文件
        示例:~]# vim -d headscp.txt second.sh third.sh #此時會垂直分三屏分別顯示三個文件并高亮顯示差異

image

linux文本編輯利器-vim

vim -m file 只讀打開文件ex file 或 vim -e 直接進入ex模式vim 后面跟文件名,如果該文件存在,文件被打開并顯示內容
如果該文件不存在,當編輯后第一次存盤時創建它
2.vim的模式
在vim編輯文本時,擊鍵行為是依賴于vim的“模式”vim有三種主要模式:
    命令模式(默認):移動光標,剪切/粘貼文本
    插入(編輯)模式:修改文本
    擴展命令模式:保存,退出等
對于上面的三種模式中的操作,稍后會進行詳細說明
ESC鍵 退出當前模式
ESC鍵 ESC鍵 總是返回到命令模式
3.模式間的轉換:
命令模式-->插入模式
        i:insert,在光標所在處輸入        I:在當前光標所在行的行首輸入
        a:append,在光標所在處后面輸入
        A:在光標所在行的行尾輸入
        o:在當前光標所在行的下方打開一個新行
        O:在當前光標所在行的上方打開一個新行
插入模式-->命令模式
    ESC鍵
命令模式-->擴展模式
    :
擴展模式-->命令模式
    ESC
鎖定和解鎖:
    CTRL+s 鎖定
    Ctrl+q 解鎖
4.關閉文件
擴展模式:    :q 退出    :q! 強制退出,丟棄做出的修改    :wq 保存退出    :x  保存退出
命令模式:    ZZ:保存退出    ZQ:不保存直接退出

三. vim進階

1.擴展模式
按“:”進入Ex模式
創建一個命令提示符:處于底部的屏幕左側
命令:
    w寫(存)磁盤文件
    wq寫入并退出
    x寫入并退出
    q退出
    q!不存盤退出,即使更改都將丟失
    r filename 讀文件內容到當前文件中
    w filename 將當前文件內容寫入另一個文件
    !command 暫停對文本的操作,進行命令的操作,此過程不會改變文件內容,是一種不必中斷編輯直接進行命令操作的好方式
    r!command 把一個命令的執行結果讀入到當前處理的文件中
2. 命令模式
光標跳轉
字符間跳轉:    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向前刪除單詞d ( 刪一句;d {刪一段d G刪到行尾;d gg 刪到行首
#COMMAND:上面一些也可以結合數字實現多行多個單詞的刪除
dd:刪除光標所在的行
    #dd:多行刪除D:從當前光標位置一直刪除到行尾,留空格,等同于d$
復制命令
y:復制,行為相似于d命令y$:復制至行尾
y0:復制至行首y^:復制至第一個非空字符
ye:復制至當前詞尾或下個詞尾
yw:復制一個單詞
yb:向前復制一個單詞#COMMANDyy:復制行    #yy:復制多行y:復制整行
粘貼命令
P:緩沖區存的如果是整行,則粘貼當前光標所在行的下方;否則,則粘貼至當前光標所在處的后面P:緩沖區存在的如果是整行,則粘貼當前光標所在的行的上方;否則,則粘貼至當前光標所在處的前面
改變命令
c:修改后切換成插入模式
命令模式-->插入模式
    c$:刪除至行尾
    c^:刪除至行首第一個非空字符    c0:刪除至行首    cb:向前刪除一個單詞
    ce:向后刪除至單詞尾部或下一個單詞尾部
    cw:刪除至下一單詞行首    #COMMAND:同時刪除多個
    cc:刪除當前行并輸入新內容        #cc:刪除多行
    C:刪除當前光標到行尾,并切換成插入模式

四. vim提高

1.命令模式:
100iwang [ESC] 粘貼“wang” 100次

GIF.gif

image<start position> <command><end position>

COMMAND:
    y 復制、d 刪除、gU 變大寫、gu變小寫
例如 0y$ 命令意味著:    0--> 先到行頭
    y--> 從這里開始拷貝    $-->拷貝到本行最后一個字符
        ye:從當前位置拷貝到本單詞的最后一個字符
2.擴展模式
地址定界
:start_pos,end_pos#:具體第#行,例如2表示第二行#,#:從左側#表示行起始,到右側#表示行結尾#,+#:從左側#表示的行起始,加上右側#表示的行數:2,+3 表示2到5行.:當前行
$:最后一行
    .,$-1:當前行到倒數第二行
%:全文,相當于1,$
/pat1/,/pat2/
    從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束    #,/pat/:從#行開始到匹配的行結束
    /pat/,$:從匹配到的行到文件結尾
使用方式:后面跟一個編輯命令
    d:刪除
    y:復制
    w file:將范圍內的行另存至指定文件中
    r file :在指定位置插入指定文件中的所有內容
查找
/PATTERN:從當前光標所在處向文件尾部查找
?/PATTERN:從當前光標所在處向文件尾部查找n:與命令同方向N:與命令反方向
查找并替換
s:在擴展模式下完成查找替換操作
    格式:s/要查找的內容/替換為的內容/修飾符
    要查找的內容:可以使用模式
    替換為的內容:不能使用模式,但可以使用\1,\2,...等后向引用符號;還可以使用“&”引用前面查找時查找到的整個內容
    修飾符:        i:忽略大小寫        g:全局替換;默認情況下,每一行只替換第一次出現        gc:全局替換,每次替換前詢問
查找替換中的分隔符/可替換為其它字符,例如
    s@/etc@/var@g
    s#/boot#/#i
撤銷更改
u撤銷最近的更改
#u撤銷之前的多次更改U撤銷光標落在這行后所有此行的更改
按Ctrl - r重做最后的“撤銷”更改
.重復前一個操作n.重復前一個操作n次
vim寄存器
vim中有26個命名寄存器和1個無命名寄存器,長存放不同的剪切板內容,可以不同會話間共享。
用a,b,...,z表示,放在數字和命令之間:
    如:3"tyy表示復制2行到t寄存器中    "tp表示將t寄存器內容粘貼未指定,將使用無命名寄存器
有10個數字寄存器0,1,2...,9表示,0存放最近復制內容,1存放最近刪除內容。當新的文本變更和刪除時,1轉存到2,2轉存到3,依此類推。數字寄存器不能在不同會話間共享。
編輯二進制文件:
以二進制方式打開文件
    vim -b binaryfile擴展命令模式下,利用xxd命令轉換為可讀的十六進制
    :%!xxd
編輯二進制文件
擴展命令模式下,利用xxd命令轉換回二進制
    :%!xxd -r
保存退出
可視化模式
允許選擇文本塊
    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)設置tab默認縮進為4個字符    set smartindent    set tabstop=4
    set shiftwidth=4
    set expandtab    set softtabstop=4(4)自動縮進
    啟用:set ai
    禁用:set noai
(5)高亮搜索
    啟用:set hlsearch
    禁用:set nohlsearch
(6)語法高亮
    啟用:syntax on
    禁用:syntax off(7)忽略字符的大小寫
    啟用:set ic
    禁用:set noic
(8)文件格式
    啟用:fileformat=unix
    不忽略:fileformat=dos
(9)設置文本寬度:
    :set textwidth=65(vim only)
:set wrapmargin=15獲取set相關幫助
:help option-list:set or :set all
vi/vim內置幫助及自定補全
vi/vim內置幫助
    :help
    :help topic 
    Use:q to exit helpvimtutor是vim自帶的幫助及練習手冊,可以經常使用提高編輯速度
補全:vim使用過程中,已知補全方式為前面已經有過該單詞出現,下次使用輸入前面單詞,然后按Ctrl+p可以列出可選項供我們選擇,偶爾使用可以提高文本編輯速度。

總結

上文中僅僅對vim的部分功能做了總結,作為一款強大的編輯器,當然還有諸多功能來提高我們的文本編輯速度。為了盡快熟悉vim的使用,要善用vimtutor,多練習多使用。

原創文章,作者:提著醬油瓶打醋,如若轉載,請注明出處:http://www.www58058.com/33608

(0)
提著醬油瓶打醋提著醬油瓶打醋
上一篇 2016-08-11
下一篇 2016-08-12

相關推薦

  • Nginx 進階 (ssl、fpm、rewrite、cache配置等)

    Nginx(與ssl結合配置https網站、rewrite,fastcgi配置詳解) 前言 前面已經介紹過Nginx的一些基礎概念,還有幾個比較重要的模塊:利用ssl給會話加密,利用rewrite功能靈活改寫訪問結果,以及利用fastcgi與php模塊結合等等。 一、配置https網站 1、自建CA (1)生成私鑰文件 mkdir -p /etc/pki/C…

    Linux干貨 2016-12-26
  • rpm及yum

    庫文件 查看二進制程序所依賴的庫文件: ldd /PATH/TO/BINARY_FILE [root@localhost ~]# ldd /bin/bash 管理及查看本機裝載的庫文件: ldconfig /sbin/ldconfig -p:  顯示本機已經緩存的所有可用庫文件 名及文件路徑映射關系 配置文件:/etc/ld.so.conf, /e…

    Linux干貨 2016-08-29
  • Linux bash編程基礎語法總結

    前言 在Linux學習過程中,我們無可避免的會碰到一個既讓人喜歡,又令人頭疼的神奇的東西——bash編程,即shell腳本。那么什么是shell腳本呢?shell是一個命令語言解釋器,而shell腳本則是Linux命令的集合,按照預設的順序依次解釋執行,來完成特定的、較復雜的系統管理任務,類似于Windows中的批處理文件。本文帶來的是bash編程的基礎語法…

    Linux干貨 2015-04-04
  • Raspberry pi設置自動撥號,搭建無線路由環境

    Raspberry pi設置自動撥號,搭建無線路由環境 前言  raspberry pi(樹莓派), 是一款針對電腦業余愛好者、教師、小學生以及小型企業等用戶的迷你電腦,由于可以燒錄Linux操作系統,因此可以衍生出各種各樣的使用途徑,諸如控制版,爬蟲機器,個人vps,門禁系統…..本文主要介紹如何在raspberry pi上面完成pppoe撥號上…

    2017-03-28
  • python-多進程

    進程是由系統自己管理的。 1:最基本的寫法 from multiprocessing import Pool def f(x):     return x*x if __name__ == '__main__': &nb…

    Linux干貨 2016-11-05
  • keepalived的原理及安裝應用

    keepalived的主從模式,keepalived的日志功能和主主模式

    2018-03-13
欧美性久久久久