VIM 三種模式和常用命令


引言

大數據開發工作中,周圍的同事不是用 VIM 就是 Emacs,你要是用 UltraEdit 或 notepad++ 都不好意思跟人家打招呼...什么插件呀、語法高亮呀、拼寫檢查呀,能給它開的都給它開着,就是一個字:VIM 酷!你說這么牛X的一東西,怎么着學會也得小半年吧。告訴你,半年!?入門都遠着呢!能學會移動光標就不錯了,你還別說耗不起,就這還是左右移動!!!

VIM 介紹

vim/vi 是 Unix / Linux 上最常用的文本編輯器而且功能非常強大。

特點:只有命令,沒有菜單

VIM 的三種模式

基本上 vi/vim 共分為三種模式,分別是命令模式(Command mode),插入模式(Insert mode)和編輯模式(Last line mode)。

命令模式:

用戶剛剛啟動 vi/vim,便進入了命令模式。

此狀態下敲擊鍵盤動作會被 Vim 識別為命令,而非輸入字符。

以下是常用的幾個命令:

  • i 切換到輸入模式,以輸入字符

  • x 刪除當前光標所在處的字符

  • : 切換到編輯模式,以在最底一行輸入命令

若想要編輯文本:啟動 Vim,進入了命令模式后,按下i(或a/o)鍵,切換到插入模式

命令模式只有一些最基本的命令,因此仍要編輯模式輸入更多命令。

插入模式

在命令模式下按下 i (或a/o)就進入了插入模式

在插入模式中,可以使用以下按鍵:

  • 字符按鍵以及Shift組合,輸入字符

  • ENTER,回車鍵,換行

  • BACK SPACE,退格鍵,刪除光標前一個字符

  • DEL,刪除鍵,刪除光標后一個字符

  • 方向鍵,在文本中移動光標

  • HOME/END,移動光標到行首/行尾

  • Page Up/Page Down,上/下翻頁
    I

  • insert,切換光標為輸入/替換模式,光標將變成豎線/下划線

  • ESC,退出輸入模式,切換到命令模式

編輯模式

在命令模式下按下:(英文冒號:)就進入了編輯模式。

編輯模式可以輸入單個或多個字符的命令(可用的命令非常多)

在編輯模式中,基本的命令有(已經省略了冒號):

  • q 退出程序

  • w 保存文件

按 ESC 鍵可隨時退出編輯模式

VIM 常用命令

插入命令

命令 作用
a 在光標后附加文本
A(shift + a) 在本行行末附加文本 行尾
i 在光標前插入文本
I(shift+i) 在本行開始插入文本 行首
o 在光標下插入新行
O(shift+o) 在光標上插入新行

定位命令

命令 作用
:set nu 設置行號
:set nonu 取消行號
gg G 到第一行 到最后一行
nG 到第n行
:n 到第n行

保存和退出命令

命令 作用
:w 保存修改
:w new_filename 另存為指定文件
:w >> a.txt 內容追加到a.txt文件中 文件需存在
:wq 保存修改並退出
shift+zz(ZZ) 快捷鍵,保存修改並退出
:q! 不保存修改退出
:wq! 保存修改並退出(文件所有者可忽略文件的只讀屬性)

注意事項:

不保存並退出:

  1. 有修改,但是修改后的內容是不保存的

  2. 有突發情況,導致窗口退出。修改文件之后,直接刪除同名的.swp文件

刪除命令

命令 作用
x 刪除光標所在處字符 nx 刪除光標所在處后n個字符
dd 刪除光標所在行,ndd刪除n行
:n1,n2d 刪除指定范圍的行(eg :1,3d 刪除了123這三行)
dG 刪除光標所在行到末尾的內容
D 刪除從光標所在處到行尾

復制和剪切命令

命令 作用
yy、Y 復制當前行
nyy、nY 復制當前行以下n行
dd 剪切當前行
ndd 剪切當前行以下n行
p、P 粘貼在當前光標所在行下 或行上

替換和取消命令

命令 作用
r 取代光標所在處字符
R(shift + r) 從光標所在處開始替換字符,按Esc結束
u undo,取消上一步操作
ctrl+r redo,返回到undo之前

搜索和替換命令

命令 作用
/string 向后搜索指定字符串 搜索時忽略大小寫 :set ic
?string 向前搜索指定字符串
n 搜索字符串的下一個出現位置,與搜索順序相同
N(Shift + n) 搜索字符串的上一個出現位置,與搜索順序相反
:%s/old/new/g 全文替換指定字符串 (% 指全文,s 指開始,g 指全局替換)
:n1,n2s/old/new/g 在一定范圍內替換指定字符串

起始行,終止行 s/ 要替換的字符串/替換的新的字符串 /g c 詢問確認

eg: :%s/ftp/yang/g 全局替換,把ftp替換為yang

eg: :41,44/yang/lee/c 從41行到44行,把yang替換為lee,詢問是否替換

eg: :41,44/yang/lee/g 同上,不詢問,直接替換

eg: :%s//root//ROOT/g 把/root替換為/ROOT

eg: :%s#/bin/bash#/bin/ksh/g 把/bin/bash全部替換為/bin/ksh

使用替換命令來添加刪除注釋

:% s/^/#/g 來在全部內容的行首添加 # 號注釋

:1,10 s/^/#/g 在1~10 行首添加 # 號注釋

vi里面怎么查命令??

:!which cp

vi里面怎么導入命令的結果?

:r !which cp

可視化模式

  • v (可視字符模式)
  • V(shift+v) (可視行模式,選擇多行操作)
  • ctrl+v (可視塊模式或列模式,用於操作列)
  • I 或者 O (進入插入模式)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM