vim必掌握用法

vim最入門用法大全

vim編輯器的優點:(可看做vi的擴展版)

  1. 所有的Unix like系統都會內置vi文本編輯器,其它的文本編輯器則不一定會存在
  2. 很多軟件的編輯借口都會主動調用vi
  3. vim具有程序編輯的能力,可以主動以字體顏色辨別語法的正確性,方便程序設計
  4. 程序簡單,編輯速度快

vim打開文件

用法:

?????? vim [OPTION]… [FILE]

+#: 打開文件后,讓光標處于第#行的行首,+默認最后一行尾(注意:”+”不能忘記,也可以直接跟文件名)

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

-b file 二進制方式打開文件(后面有詳解)

-d file1 file2… 比較多個文件(即分屏編輯多個文件,后面有詳解)

-m file 只讀方式打開文件

?????? 注意:使用vim打開文件的時候:如果文件存在,文件被打開并顯示內容;如果文件不存在,當編輯后第一次存盤時創建它

vim三種主要模式

命令(Normal)模式:默認模式(vim打開文件時處于的模式),移動光標,剪切/粘貼文本

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

擴展命令(extended command)模式: 保存退出等

三種模式間的轉換:

  • 命令模式 —> 插入模式

? ? ? ?i:insert,在光標所在處輸入

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

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

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

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

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

  • 插入模式 —> 命令模式:Esc

  • 命令模式 —> 擴展命令模式:”:”

  • 擴展命令模式 —> 命令模式:Esc,Enter

關閉文件

?????? 擴展模式:

q 退出

q! 強制退出,丟棄做出的修改

wq 保存退出

x 保存退出

命令模式

ZZ 保存退出

ZQ 不保存退出

命令模式:

光標跳轉

????????????? 字符間跳轉:

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

#command(h,l,j,k):跳轉由#指定的個數的字符

單詞間的跳轉:

w:下一個單詞的詞首

e:當前或下一個單詞的詞尾(如果光標不在當前單詞的詞尾,跳轉到當前單詞的詞尾,其他情況跳轉到下一個單詞的詞尾)

b:當前或前一個單詞的詞首(與e類似)

當前頁跳轉

???????????????????? H:頁首 M:頁中間行 L:頁低

行首行尾跳轉

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

0:跳轉至行首

$:跳轉至行尾

行間移動

???????????????????? #G:跳轉至由#指定行行首

G:跳轉至最后一行行首

1G,gg:跳轉至第一行行首

句間移動

):下一句? (:上一句

段落間移動

???????????????????? }:下一段? {:上一段

翻屏操作

????????????? Ctrl+f:向文件尾部翻一屏

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

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

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

編輯操作

字符編輯

???????????????????? x:刪除光標處字符

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

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

~:轉換大小寫

J:刪除當前行后的換行符

替換命令(r,replace)

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

R:切換成REPLACE模式

刪除命令(往前刪除不包括光標位置,往后刪除包括光標位置)

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

d$:從光標位置刪除到行首

d^:從光標位置刪除到非空行首

d0:從光標位置刪除到行首(包括空白字符)

dw:從光標位置刪除到下一個單詞詞首

de:從光標位置刪除到當前或下一個單詞詞尾

db:從當前或前一個單詞詞首刪除到光標位置

#command 例3ed 刪除光標處往后三個連續單詞,如果光標在單詞中間,會將處單詞分開,從光標處往后算為一個單詞

dd:刪除光標所在行

#dd 多行刪除 3dd刪除光標所在行以及下面兩行

D:從當前光標位置一直刪除到行尾劉空行,等同于d$

復制命令(y,yank)

???????????????????? y:復制,行為相似與d命令

y$:復制到行尾

y0:復制到行首

y^:復制到非空行首

ye:復制到當前或下一個單詞詞尾

yw:復制到當下一個單詞詞首

yb:復制到當前或前一個單詞詞首

#command y3e 復制光標處往后三個連續單詞,如果光標在單詞中間,會將處單詞分開,從光標處到光標該單詞結束算為一個單詞

yy:復制行

#yy 復制多行

Y:復制整行

粘貼命令(p,paste)

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

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

改變命令(c,change)

???????????????????? c:修改后切換成插入模式

c$:替換從光標處到行尾的字符

c^:替換從非空行首到光標處的字符

c0:替換從行首到光標處的字符

cb:替換從當前或前一個單詞的詞首到光標位置

ce:替換從光標位置當前或下一個單詞的詞尾

cw:替換從光標位置到下一個單詞的詞首

#command

cc:刪除當前行輸入新內容,相當于S

#cc

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

100iwang Esc鍵 粘貼”wang” 100次

<start position><command><end position>

Command:

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

例如:0y$ 命令

0 -> 先到行頭

y -> 從這里開始拷貝

$ -> 拷貝到本行最后一個字符

ye 從當前位置拷貝到本單詞的最后一個字符

撤銷更改

???????????????????? u撤銷最近的更改

#u撤銷之前多次更改

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

按Ctrl – r重做最后的“撤消”更改

.? ?重復前一個操作

n.? ?重復前一個操作n次

擴展命令模式

按”:”進入Ex模式

命令:

????????????? ?????? w 寫(存)磁盤文件

wq 寫入并退出

x 寫入并退出

q 退出

q! 不存盤退出,即使更改都將丟失

r filename 讀文件內容到當前文件中

w filename 將當前文件內容寫入另一個文件

!command 執行命令

r!command 讀入命令的輸出

# 跳轉至由#指定行

地址定界

????????????? ?????? /pat1/,/pat2/

從第一個被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束

#,/pat/

/pat/,$

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

d 刪除 y復制

w fille:將范圍內的行另存指定文件中

r file:在指定位置插入指定文件中的所有內容

查找

???????????????????? /pattern:從當前光標所在處向文件尾部查找

?pattern:從當前光標所在處向文件首部查找

n:與命令同方向

N:與命令反方向

查找并替換

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

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

要查找的內容: 可使用模式(正則表達式)

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

修飾符:

??????????????????????????? ?????? i 忽略大小寫

g 全局替換;默認情況下,每一行只替換第一次出現

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

查找替換中的分隔符/可替換為其他字符,例如

s@/etc@/var@g

s#/boot#/#i

可視化模式

?????? 允許選擇的文本快

v 面向字符

V 面向行

Ctrl+v 面向塊

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

w ) } 箭頭等

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

編輯二進制文件:

以二進制方式打開文件

vim –b binaryfile

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

? ? ? ? ? ? ?:%!xxd

編輯二進制文件

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

? ? ? ? ? ? :%!xxd –r

保存退出

多文件模式

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 ic(ignorecase)

不忽略:set noic

(3) 自動縮進

啟用:set ai(autoindent)

禁用:set noai

(4) 智能縮進

啟用:smartindent 簡寫 set si

禁用:set nosi

(5) 高亮搜索

啟用:set hlsearch (high light search)

禁用:set nohlsearch

(6) 語法高亮

啟動:syntax on

禁用:syntax off

(7) 顯示Tab和換行符^I和$顯示

啟用:set list

禁用:set nolist

(8) 文件格式

啟用windows格式:set fileformat=dos

啟用unix格式:set filename=unix

簡寫:set ff=dos|unix

(9) 設置文本寬度

設置文本寬度:set textwidth=65(vim only)

設置文本靠右側寬度:set wrapmargin=15

(10) 設置光標所在行的標識線

啟用:set cursorline,簡寫cul

禁用:set no cursorline

(11) 復制保留格式

啟用:set paste

禁用:set nopaste

了解更多vim

set 幫助

:help option-list

:set

set all

vi/vim內置幫助

:help

:help topic

Use :q to exit help

vimtutor vim說明書

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/89421

(2)
ChaogGeChaogGe
上一篇 2017-12-03 18:50
下一篇 2017-12-03 19:00

相關推薦

  • Linux任務計劃

    Linux任務計劃主要分為分為兩種分別是一次性任務計劃和周期性任務計劃實現工具主要是at和crontab下面將詳細介紹任務計劃工具的使用。 1、at命令一次性任務計劃 at命令是由atd服務提供的其主程序包是atd在CentOS6上可以使用service atd start命令來啟動在CentOS7上需要使用systemctl start atd.servi…

    Linux干貨 2016-09-11
  • PXE網絡引導系統自動化安裝CentOS7

     一.PXE 注意:安裝前 selinux 禁用,iptables 關閉 dhcp 服務器靜態IP地址  1.PXE的工作原理:      Client向PXE Server上的DHCP發送IP地址請求消息,DHCP檢測Client是否合法(主要是檢測Client的網卡MAC  &nbsp…

    Linux干貨 2017-07-24
  • Linux腳本基礎練習

    馬哥教育網絡班+ 第7周課堂練習 Linux腳本基礎練習 練習: 1、創建一個10G分區,并格式為ext4文件系統; (1)要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl (2)掛載至/data/mydata目錄 要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳 第一步,在虛擬機中掛載一塊20G的新硬盤 &…

    Linux干貨 2016-11-09
  • 文本編輯sed

    *** sed:Stream EDitor  流編輯器 一次處理一行內容 sed [option]…  'script'  inputfile…常用選項:     -n∶使用安靜(silent)模式。在一般 sed 的用法中, &nbs…

    Linux干貨 2016-08-10
  • 推薦-Linux命令幫助的獲取

    幫助命令 1. 使用幫助命令和幫助選項來獲取幫助 2. 使用man來查看命令使用手冊(manual) 3. 使用info來查看命令的信息頁 4. 程序自身的幫助文檔 5. 程序官方文檔 6. 發行版的官方文檔 7. 使用Google搜索關鍵字 1. 使用幫助命令和幫助選項來獲取幫助 Linux系統中命令分為【內部命令】和【外部命令】。 【內部命令】:內部命令…

    Linux干貨 2016-03-25
  • 硬盤及文件系統基礎概念

    機械硬盤HDD(Mechanical hard disk) 機械硬盤中所有的盤片都裝在一個旋轉軸上,每張盤片之間是平行的,在每個盤片的存儲面上有一個磁頭,磁頭與盤片之間的距離比頭發絲的直徑還小,所有的磁頭聯在一個磁頭控制器上,由磁頭控制器負責各個磁頭的運動。 磁頭(Head): 對硬盤上的數據進行讀寫操作. 磁道(Track) 當磁盤旋轉時,磁頭若保持在一個…

    Linux干貨 2017-04-09
欧美性久久久久