vim編輯器基本應用

vi:Visual  Tnterface文本編輯器

vim:vi Improved vi的加強版

文本編輯種類:

  行編輯器:sed

  全屏編輯器:nano,vi,vim

其他編輯器::

  gedit:一個簡單的圖形編輯器

  gvim:一個vim編輯器的圖形版本

vim使用格式

+# :打開文件后,直接讓光標處于第#行的行首

+/pattern:打開文件后,直接讓光標處于第一個被模式匹配到的行的行首

+ file:打開文件,光標在最后一行

-b file:二進制方式打開文件

-d file1 file2…:比較多個文件

-m file :只讀打開文件

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

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

vim的三種主要模式

命令模式:默認進入文件就處于此模式==>移動光標,剪切/粘貼文本

插入(編輯)模式:修改文本

擴展命令模式:保存,退出  ==>我習慣叫末行模式

ESC鍵:退出當前模式

ECS鍵ESC鍵:總是返回到命令模式


模式轉換


命令模式(默認模式)—>插入模式

i:inset,在光標所在處輸入

blob.png

I:在光標所在行的行首輸入

blob.png

a:append,在光標所在處的后面輸入

blob.png

A:在光標所在行的行尾輸入

blob.png

o:在當前光標所在行的下方打開一個新行

blob.png

O:在當前光標所在行的上方打開一個新行

blob.png

插入模式–>命令模式

  Esc鍵

命令模式—>擴展命令模式

  :

擴展命令模式—>命令模式

  Esc鍵

鎖定和解鎖:

ctrl+s鎖定   ctrl+q解鎖

關閉文件:

在命令模式下

ZQ:不保存退出

ZZ:保存并退出

在擴展命令模式下

:q退出

:wq保存退出

:q!強制退出不保存

:x保存退出

:w /path/to/somefile :保存至新文件(類似另存為)

命令模式光標跳轉

字符跳轉:

h:左  l:右   j:下  k:上

#command(hjkl):跳轉#個字符

單詞跳轉:

w:下一個單詞的詞首

e:當前或下一個單詞的詞尾

b:當前或前一個單詞的詞首

#command(web):跳轉#個單詞

當前頁跳轉:

H:頁首    M:頁中間   L:頁尾

行首行尾跳轉:

^:跳轉至行首的第一個非空白字符

$:跳轉至行尾

0:跳轉至絕對行首

行間跳轉:

#G:跳轉至#行

G:跳轉最后一行

1G或者gg:跳轉至第一行

句間跳轉:

(:上一句

):上一句

段落間跳轉:

{  :上一段

}  :下一段

命令模式翻屏操作

ctrl+f :向文件尾部翻一屏

ctrl+b :向文件首部翻一屏

ctrl+d :向文件尾部翻半屏

ctrl+u :向文件首部翻半屏

命令模式操作

字符編輯

x :刪除光標處的字符

#x:刪除光標處起始的#個字符

xp:交換光標所在處的字符及其后面字符的位置

~ :轉換大小寫

替換命令

r:替換光標所在處的字符

R:切換成REPLACE模式

刪除命令:

d:刪除命令可結合光標跳轉字符,實現范圍刪除

d$:刪除到行尾

d^:刪除到非空行首

d0:刪除到行首

dw:刪除光標所在處到下一個單詞的詞首的內容

de:刪除光標到當前或下一個單詞的詞尾的內容

db:刪除光標到當前或前一個單詞的詞首的內容

#command:刪除#個單詞

dd:刪除整行

#dd:刪除#行

D:刪除光標所在處到行尾的字符,留空行,等同于d$

blob.png

執行了一些命令,結果如下

  1. 執行了d$,刪除了光標到行尾的字符(此處光標在行首)

  2. 執行了d^,刪除了光標到行首的字符(非空白)(我在行首加了空白字符)

  3. 執行了d0,刪了了光標到行首的字符(包含空白字符)

  4. 執行了dw,刪除了光標所在處到下一個單詞的詞首的內容

  5. 執行了de,刪除光標到當前或下一個單詞的詞尾的內容

  6. 執行了db,刪除光標到當前或前一個單詞的詞首的內容

  7. 執行了dd,刪了整行

  8. 又執行了2dd,刪除了兩行

  9. 執行了D,刪除光標所在處到行尾的字符

blob.png

這截圖和上面的說明看的我自己都蒙了,


復制命令(y,yank):

y: 復制,和d命令用法類似

y$: 復制光標所在處到行尾

y^:復制光標所在處到非空行首

y0:復制光標所在到行首

yw:復制光標所在處到下一個單詞的詞首的內容

ye:復制光標到當前或下一個單詞的詞尾的內容

yb:復制光標到當前或前一個單詞的詞首的內容

#command:復制#個單詞

yy復制整行

#yy:復制#行

Y:復制整行

粘貼命令(p,paste):

p:緩沖區存的如果為整行,則粘貼當前光標所在行的下方,

   否則,則粘貼至當前光標所在處的后方

P:緩沖區存的如果為整行,則粘貼當前光標所在行的上方,

   否則,則粘貼至當前光標所在處的前方

整行

blob.png

非整行

blob.png


改變命令(c,change)

命令模式—>插入模式,顯示刪除操作

c:刪除命令。可結合光標跳轉字符,實現范圍刪除

c$:刪除光標所在處到行尾的字符

c^:刪除光標所在處到非空行首的字符

c0: 刪除光標所在處到絕對行首的字符

cw:刪除光標所在處到下一個單詞的詞首的內容

ce:刪除光標到當前或下一個單詞的詞尾的內容

cb :刪除光標到當前或前一個單詞的詞首的內容

#command(dw,de,db)     3dw:向后刪了三個單詞

c:刪除當前光標到行尾,并切換成插入模式

#c c  3cc:刪除光標所在處的行起始的3行,然后

以上是刪除光標所在處的一些行或字符,然后轉換為插入模式

c,d,y的一些可以通用的命令

blob.png

命令模式下還有些特殊用法:

100iwang[esc]粘貼“wang”100次
blob.png

<start position> <command> <end position>

command:

 y復制,d刪除,gU變大寫,gu變小寫

例如我使用了0gU$命令,從行首到行尾都變成大寫字母

blob.png

這里我使用了.gu$, .表示當前位置,到行尾變成那個小寫字母

blob.png

擴展模式:地址定界

和sed的地址定界差不多

#:特定的第#行,例如5即第五行

.  :表示當前行

#,#  指定行范圍。左起始行,右結束行

#,+#:指定行范圍,左側為起始行的絕對編號,右側問哦相對左側行號的偏移量

例如:3,+7  為第三行開始,后面的7行,包含第三行

. +6:當前行,到后面的6行,共計7行

.,$-1:當前行到倒數第二行

1,.,$:全文

%:全文

/pattern/:第一次被模式所匹配到的行=======>從光標所在處起始

/first/,$:從光標所在處起始向文件尾部第一次被模式所匹配的行到最后一行

/pattern1/,/pattern/:從光標所在處起始向文件尾部,第一個被pattern1匹配的行到第一個被pattern2所匹配的行結束之前的所有行

使用方式:后跟一個編輯命令

d,y,c

w  /path/to/somefile:將范圍內的文本保存至指定的文,y件中

r  /path/form.somefile :將指定的文件中的文本讀取并插入指定位置

擴展模式:查找

/pattern:從當前光標所在處向文件尾部查找能夠被當前模式匹配到的使用字符串,

?pattern:從當前光標所在處向文件首部查找能夠被當前模式匹配到的使用字符串,

n;下一個。與命令方向相同

N:  上一個,與命令方向相反

擴展模式:查找并替換

s:末行模式的命令;使用格式

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

要查找的內容:可用正則表達式;

替換為的內容:不能使用正則表達式,但可以引用

如果要“查找的內容”部分在模式中使用了分組符號:

在“替換為的內容”中使用 后向引用;    \1,\2,

也可以使用“&”引用前面查找時查找到的整個內容

直接引用查找模式  匹配到的全部文本

修飾符:

i:忽略大小寫

g:全局替換,意味著一行中如果匹配到多次,則均替換,默認替換匹配到的行的第一個出現的

gc:全局替換,每次替換前詢問

可把分隔符替換為非常用字符

s@@@@  ,s###

命令模式:撤銷更改

u撤銷最近的更改

#u撤銷之前的#次修改

U撤銷光標落在這行后所有此行的更改

ctrl+r恢復此前的撤銷操作==>感覺撤銷的錯了,取消撤銷的動作

點號. :重復執行前一個編輯操作

#.:重復前一個操作#次

vim的寄存器

有26個命名寄存器和1個無名寄存器,長存放不同的剪貼板內容,可以不同會話鍵共享

用a,b,c…..z表示,用“表示寄存器,放在數字和命令之間

例如:3”tyy表示復制3行到t寄存器中

      “tp表示將t寄存器內容粘貼

復制第四行到a寄存器,然后將a寄存器內容到粘貼至光標所在行的下一行

blob.png

未指定,將使用無名寄存器

有10個數字寄存器,用數字0-9表示,0存放最近復制的內容,1存放最近刪除內容。

當新的文本變更和刪除時,1轉存到2,2轉存到3,以此類推,數字寄存器不能再

不同會話間共享

編輯二進制文件

以二進制方式打開文件

vim -b binaryfile

blob.png

擴展命令模式下,利用xxd命令轉換為可讀的十六進制

:%!xxd

blob.png

擴展命令模式下,利用xxd命令轉換回二進制

:%!xxd  -r

blob.png

可視化模式

允許選擇的文本塊

v:字符

blob.png

V:行

blob.png

ctrl+v 塊

blob.png

可視化鍵用于移動的鍵

方向鍵,w,),}

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

執行刪除命令

blob.pngblob.png

vim多文件模式

vim file1  file2 ….

next:下一個

prev:前一個

first:第一個

last:最后一個

wall:保存所有

qall:退出所有

wqall:保存退出所有

多窗口顯示

多文件切割

vim -o file file2  水平切割

vim -O file file2 垂直切割

blob.png

單文件窗口切割;

ctrl+w,s:水平分隔

ctrl+w,v:垂直分隔

ctrl+w,q:取消相鄰窗口

ctrl+w,o取消全部窗口

:wqall全部保存退出

blob.png

vim的工作特性

配置文件:永久有效

    全局:/etc/vimrc

    個人:~/.vimrc

如下配置顯示行號和自動縮進

blob.png

blob.png

擴展模式:對當前進程有效

  1. 行號 

    顯示: set number 簡寫為set nu

    取消顯示:set nonumber  簡寫 set nonu

2.括號成對匹配

   匹配:set shuowmatch  簡寫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.文件格式

   啟用:filefoemat=unix  ==>linux

   不忽略:fileformat=dos==>windows

8.設置文本寬度

   :set textwidth=65(vim only)

   :set wrapmargin=15

練習:

? 1 、復制/etc/profile 至/tmp/ 目錄,用查找替換命令刪除

/tmp/profile 文件中的行首的空白字符

指令:

擴展命令模式下

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

blob.png

blob.png

blob.png

? 2 、復制/etc/rc.d/init.d/functions 文件至/tmp 目錄,用查

找替換命令為/tmp/functions 的每行開頭為空白字符的行的

行首添加一個#號

指令:

擴展命令模式下

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

blob.png

blob.png

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

指令:

vim .vimrc 然后設置tabstop=4,這個是針對當前用戶
要設置全局要在/etc/vimrc

blob.png

blob.pngblob.png

4 、復制/etc/rc.d/init.d/functions 文件至/tmp 目錄;替換

/tmp/functions 文件中的/etc/sysconfig/init 為/var/log; ;

在擴展命令模式下:

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

blob.png

blob.png

blob.png

5、刪除/tmp/functions 文件中所有以# 開頭,且# 后面至少

有一個空白字符的行的行首的# 號;

在擴展命令模式下

%s@^#\([[:space:]]\+\)@\1@

blob.png

blob.png

 

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

(0)
qiuweiqiuwei
上一篇 2016-08-11
下一篇 2016-08-11

相關推薦

  • lvs 基本概念

    LVS(linux virtual machine) 的簡寫,是一個虛擬的服務器集群系統,主要用于4層負載均衡。 宗旨: 使用集群技術和Linux操作系統實現一個高性能、高可用的服務器. 很好的可伸縮性(Scalability) 很好的可靠性(Reliability),應該還是高可用吧 很好的可管理性(Manageability…

    Linux干貨 2015-09-14
  • Linux系統管理常用命令

    系統管理工具 進程的分類: CPU-Bound:CPU密集型,非交互。特別消耗CPU的,加密解密,壓縮解壓 IO-Bound:IO密集型,交互。大量的硬盤讀寫,例如復制文件 Linux系統狀態的查看及管理工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pki…

    Linux干貨 2017-12-18
  • 我們都在前行的路上

    我們都在前行的路上         從0到1是一種突破,年少輕狂到心有余而力不足,力挽狂瀾到恬淡人生需伏地腳踏實地地前行,漂泊在一線都市,立足我圖網,途徑百勝,一次機緣巧合轉戰阿里,對于一個工作6年的弄潮兒,他將所有經歷的化作前行的動力和堅韌不拔的耐力,也許不經意,但卻理所當然,…

    Linux干貨 2016-11-03
  • LVM邏輯卷的縮減與刪除,LVM邏輯卷快照,btrfs文件系統,網絡管理

    邏輯卷縮減 縮減的時候要注意縮減的空間不要超過文件系統的空間,不然縮減的時候會損壞文件系統。 第一步要先取消掛載(必須) 第二部檢查文件完整性(必須) e2fsck -f /dev/vg0/lv0 第三部文件系統縮減,先縮減文件系統. resize2fs /dev/vg0/lv0 10G  (縮減到剩下10G) 第四步邏輯卷組的縮減 lvreduc…

    Linux干貨 2016-09-06
  • 安裝centos7

    在vmware安裝centos7

    2018-03-26
  • VSFTP詳細配置說明

    VSFTP詳細配置說明 §·FTP(File Transfer Protocol 文件傳輸協議)介紹 1 §·FTP連接類型主動模式與被動模式 2 §·Linux中FTP軟件 VSFTP介紹 4 §·Linux中 VSFTP基于mariadb用戶名密碼認證 7 §·附錄–課外學習資料參考 9 §·常見問題處理 11  §·FT…

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