Vim

vim編輯器

        vim,可謂文本編輯界的大哥,功能強大無比,是進階版的vi, vim 不但可以用不同顏色顯示文字內容,還能夠進行諸如 shell script, C program等程序編輯功能。

vim是一種模式化的編輯器  (vim自帶教程,命令行中輸入vimtutor即可)

vim基本模式:

命令模式(默認模式)

     功能:移動光標,復制、輸入命令來完成等操作

     輸入命令時沒有可視信息,直到命令輸入完成后系統自動執行

輸入模式(編輯模式)

        功能:修改文本內容

擴展命令模式(內置命令行接口)

        功能:查找替換、保存退出等

blob.png

 

打開文件:

#vim [options] [file…]

+#:打開文件后光標自動跳轉到指定的行數
    [root@CentOS 7 test]# vim +10 passwd//進入文件光標自動在文件的第10行
+/PATTERN:打開文件后,光標直接處于第一個被PATTERN匹配到的行的行
    [root@CentOS 7 test]# vim +/^ftp passwd  
       //打開文件光標在第一次匹配到以ftp開頭的行的行首

關閉文件:(擴展命令模式下)

命令(默認)模式下:

    按shift+zz即可保存并退出,shift+zq即退出不保存。

擴展命令模式下:

q:退出不保存(未更改文件內容前)
q!:強制退出不保存(用于已修改文件后)
wq:保存并退出
x:保存并退出
//以上4個直接在擴展命令模式中的冒號輸入確認即可
w  /path/to/somefile:將文件另存為到指定文件
   編輯文件,在擴展命令模式下輸入保存地址即可,保存后可看到提示信息
 :w /test/passwd2   //保存的地址
"/test/passwd2" [New] 39L, 2026C written  
  //提示信息(新文件“/test/passwd2”寫入39行,2026個字節)
  
r  /path/form/some: 讀取指定文件內容到當前編輯文件
需要在正在編輯的文件中添加其他文件的內容,可在擴展命令模式下,輸入下面的命令即可導入
    :r /etc/issue   //在擴展命令行模式下導入/etc/issue文件內容到當前正在編輯的文件中

模式轉換:在進行模式轉換時的光標位置命令

命令模式——輸入模式   

i: insert 在光標所在處輸入
I:在當前光標所在行的行首輸入
a: append, 在光標所在處后面輸入
A:在當前光標所在行的行尾輸入
o 在當前光標所在行的下方打開一個新行
O:在當前光標所在行的上方打開一個新行

光標跳轉:(命令(默認)模式下進行)

    字符間跳轉:(在命令模式(默認)下直接輸入即可左右上下移動)

左(h)、右(l)、前(j)、后(k)

#(h/l/j/k):跳轉#個指定方向的字符  
     #10h  
 //向左移動10個字符(直接在默認模式下輸入即可,沒有可視的信息,命令輸入完之后會自動執行)

    

     單詞間跳轉: (命令(默認)模式下進行)

w:下一個單詞的詞首
e:當前或下一單詞的詞尾
b:當前或前一個單詞的詞首
# command:由#指定一次跳轉的單詞數
    #(w/e/b): 指定跳轉單詞數
        #5w  //跳轉到5個單詞的最后一個單詞詞首

       行首行尾跳轉:(命令(默認)模式下進行)

^:跳轉至行首的第一個非空字符
0:跳轉至行首,不識別空格直接到第一個字符
$:跳轉至行尾

        行間跳轉:(命令(默認)模式下進行)

#G:跳轉至由#指定的行
      #10G   //跳轉到第10行
1G/gg:跳轉至第一行

Vim編輯命令:(命令(默認)模式下進行)

      字符編輯:(命令(默認)模式下進行)

x:刪除光標所在處的字符
#x:刪除光標處起始指定的#個字符
xp:光標當前所在位置的字符與后面的字符轉換位置(兩個字符互換)

      替換命令:(命令(默認)模式下進行)

r:替換光標處的字符

      刪除命令:(命令(默認)模式下進行)

       d:刪除命令,可結合光標跳轉來實現刪除
       d $:刪除光標處向后的所有字符(行
       d^:刪除光標處向前的所有字符(行)
       dw:刪除向后指定的多少個單詞       如:d3w  //刪除3個單詞
       de:刪除向后的單詞
       db:刪除向前的單詞
       dd:刪除當前的一整行     //3dd,刪除3行

      復制命令:(命令(默認)模式下進行)

y:復制(復制,工作行為相當于d命令)
      y$,y^,yo,ye,yw,yb,#command
yy:復制一整行

       粘貼命令:(命令(默認)模式下進行)

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

可視化操作:(命令(默認)模式下進行)

v:按字符選定
V:按行選定


撤銷操作:(命令(默認)模式下進行)

u:撤銷此前的操作
#u:撤銷#次操作
      #4u:撤銷4次
ctrl+r:撤銷此前的撤銷操作
 .   :重復執行前一個編輯命令

擴展命令模式:

1.地址定界:

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

查找

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

查找替換

s: 在擴展模式下完成查找替換操作
格式: s/要查找的內容/替換為的內容/修飾符
要查找的內容:可使用模式
替換為的內容:不能使用模式,但可以使用\1, \2, ...
等后向引用符號;還可以使用“ &引用前面查找時查找到的整個內容
修飾符:
i: 忽略大小寫
g: 全局替換;默認情況下,每一行只替換第一次出現
gc:全局替換,每次替換前詢問
 查找替換中的分隔符/可替換為其它字符,例如
s@/etc@/var@g
s#/boot#/#i

vim的寄存器:

    有26個命名寄存器和1個無命名寄存器,常存放不同的剪貼版內容,可以不同會話間共享。

用a, b,&,z表示,用寄存器表示,放在數字和命令之間如: 3"tyy 表示復制3行到t寄存器中"tp 表示將t寄存器內容粘貼未指定,將使用無命名寄存器

    有10個數字寄存器,用0, 1, &, 9表示, 0存放最近復制內容, 1存放最近刪除內容。當新的文本變更和刪除時, 1轉存到2, 2轉存到3,以此類推。數字寄存器不能在不同會話間共享。

可視化模式:

允許選擇的文本塊
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 (vim only)
    :set wrapmargin=15
    :help option-list
    :set or :set all

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

(0)
LiiLii
上一篇 2016-08-09 16:04
下一篇 2016-08-09 20:17

相關推薦

  • Hadoop簡介

    Hadoop的概要介紹 Hadoop,是一個分布式系統基礎架構,由Apache基金會開發。用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力高速運算和存儲。 簡單地說來,Hadoop是一個可以更容易開發和運行處理大規模數據的軟件平臺。該平臺使用的是面向對象編程語言Java實現的,具有良好的可移植性。 Hadoop的發展歷史 &nbsp…

    Linux干貨 2015-04-13
  • Linux批量創建用戶、passwd、shadow、組管理、group、gshadow、默認配置文件login.defs、切換用戶su、提升權限(二)

    Linux批量創建用戶、passwd、shadow、組管理、group、gshadow、默認配置文件login.defs、切換用戶su、提升權限(二) Linux對于權限的管理非常完善,其強大的權限管理機制體現了它的魅力之處,讓無數人為之操碎了心。Linux中的權限既能放也能收,既可以管理整個組的權限,也可以管理單個用戶的權限,正是因為有了ACL的加入變得非…

    Linux干貨 2016-08-06
  • Linux發展史

    獨白:    先來說說我對Linux的認識吧,用一個成語形容:狗屁不通,想了一下,文明社會還是和諧點比較好,算是聞所未聞吧。15年初從朋友那得知Linxu,沖著他那十幾K的工資還是挺心動的,說實在很仰慕他,有點計算機基礎,自學兩個月出山,當時月薪8k;而我還是拿著3,4k的工資,也沒什么本領,于是找他要了些有關視頻資料,也開始了自學之路,…

    Linux干貨 2017-04-08
  • 架構師第一天之:Nginx

    nginx: 誕生背景: prefork機制不能支持過大的并發請求, C10K問題的解決 官方站點: http://nginx.org 二次開發版: tengine,openresty 特性: 模塊化設計,較好的拓展性 高可靠性:master/worker架構 支持熱部署:不停機更新配置文件,更換日至文件,更新服務器版本 低內存消耗:10000個keep-a…

    Linux干貨 2016-10-29
  • 網絡服務基礎理論

    最近學習了有關網絡管理的有關知識,所以給也在學習這些知識的童鞋分享一下我的一些經驗。 聽了這幾天課,總結了幾個前提。 有關網絡的通信均是基于數據傳輸的,且數據均是二進制格式的流式數據。 在網絡中需要把大包分成小包, 每傳一個包都需要有三個地址,由內向外為端口號、IP地址、MAC地址。端口號確定應用,IP確定網段,MAC確定廣播域中的某個網卡。 OSI模型 &…

    Linux干貨 2017-09-01
  • linux分區管理工具—fdisk

    一、關于為什么要分區       (1)為了數據的安全:當文件系統只有一個分區時,如果遇到分區需要格式化的情況,則硬盤里的數據無法保留,而如果提前對硬盤做了分區那么就可以很好地額解決這個問題;       (2)為了提升效率:硬盤(這里單指機械硬盤)分為外圈和…

    Linux干貨 2016-03-12

評論列表(1條)

  • wangnannan
    wangnannan 2016-08-12 20:00

    給個贊

欧美性久久久久