Linux中Vim編輯模式中的四種模式及實用技巧(可快速上手)


vim一共有4個模式:

• 正常模式 (Normal-mode)
• 插入模式 (Insert-mode)
• 命令模式 (Command-mode)
• 可視模式 (Visual-mode)

正常模式(從插入模式進入到正常模式實際也為對當前文本的命令模式)
啟動vim后默認處於正常模式。不論位於什么模式,按下<Esc>鍵(有時需要按兩下)都會進入正常模式。
~ 正常模式下,最后一行No file前面為一個小橫杠 -
~
- No file [Modified] 3/5 60%


插入模式(編輯模式)
在正常模式中按下i, I, a, A等鍵,會進入插入模式。現在只用記住按i鍵會進行插入模式。在插入模式中,擊鍵時會寫入相應的字符。
~ 插入模式下,最后一行No file前面為一個大寫字母I,表示insert插入模式,若退出插入模式需要按兩下esc鍵,然后前面大寫I變成小橫杠-
~
I No file [Modified] 1/5 20%


命令模式(末行模式)
在正常模式中,按下:(英文冒號)鍵,會進入命令模式。在命令模式中可以執行一些輸入並執行一些vim或插件提供的指令,就像在shell里一樣。這些指令包括設置環境、文件操作、調用某個功能等等。
命令模式輸入是在最后一行進行輸入,可在插入模式按兩下esc退出變成小橫杠時按下:(即Ctrl+:輸入冒號)進入命令模式

 

常用的命令有:q(退出)、q!(強制退出)、w(保存)、wq(保存並退出)。


可視模式
在正常模式中按下v, V, <Ctrl>+v,可以進入可視模式。可視模式中的操作有點像拿鼠標進行操作,選擇文本的時候有一種鼠標選擇的即視感,有時候會很方便。
vim ctrl+v垂直選取產生 e353錯誤

原因是/etc/vim/vimrc中map ctrl+v為其他作用了

解決方法:

  刪除掉map<C-V>...項即可

客戶端putty, xshell連接linux中vim的小鍵盤問題
在putty上用vi的時候,開NumLock時按小鍵盤上的數字鍵並不能輸入數字,而是出現一個字母然后換行(實際上是命令模式上對應上下左右的鍵)。解決方法

選項Terminal->Features里,找到Disable application keypad mode,選上就可以了

在xmanager 4 中的xshell也有小鍵盤問題 解決方法為

修改session 屬性 -> 終端->VT模式->初始數字鍵盤模式

選擇 設置為普通。

注:命令模式和末行模式有區別:

命令模式只需要按esc即可,最后一行的No file 前面為小橫杠,此時可輸入指定命令對剛剛插入模式的內容進行更改,如dd表示刪除當前行。還有如下操作:
- No file [Modified] 3/5 60%
一:命令模式
1、退出保存:ZZ(及按住shift的同時,按兩次z)
2、代碼格式化:gg=G(即連續按2個g,再按=,再按G)
3、光標移動
3.1、上、下、左、右:方向鍵或者k、j、h、l
3.2、跳到文件頭部:gg
3.3、跳到文件尾部:G
3.4、跳到某行行尾:$
3.5、跳轉到某行開頭:行號+G(比如跳到200行開頭->200G)
3.6、跳轉到某行末尾:行號+$(比如跳到200行末尾->200$)
3.7、向下移動n行:行號+回車
4、撤銷操作
4.1、撤銷:u
4.2、反撤銷:ctrl+r
5、刪除
5.1、刪除光標后面的字符:x
5.2、刪除光標前面的字符:X
5.3、刪除一個單詞:dw(注意保證光標在單詞的最前面,不然只能刪除光標后面的部分)
5.4、刪除當前行光標前面部分:d0
5.5、刪除當前行光標后面部分:D或者d$
5.6、刪除當前行(整行):dd
5.7、刪除多行:ndd(如10dd,即從當前位置起,往下刪除10行(包括當前行))
5.8、刪除當前位置后面的所有內容:dG(包括當前行)
5.9、刪除當前位置前面的所有內容:dgg(包括當前行)
溫馨提示:vim中的刪除其實是剪切操作,刪除的內容可以用p命令粘貼
6、復制操作
6.1、復制當前行:yy
6.2、粘貼復制內容:p(當前行下一行);P(當前行上一行)
6.3、復制多行:nyy(如3yy,即從當前位置起,往下復制3行(包括當前行))
6.4、復制選中:按v進入可視模式,選擇要復制的內容,按一個y即可復制完成
7、替換操作
7.1、替換當前字符(單個):輸入r,然后在輸入要替換的字符
7.2、替換當前字符(多個):輸入R,然后在輸入要替換的字符(往后替換)
8、查找
8.1、輸入/或?,然后輸入要查找的內容,如:/hello
如果搜到多個:n下一個,N上一個
8.2、搜索當前光標所在的單詞:#
9、進入編輯模式
9.1、a:從光標后面開始插入
9.2、A:會跳到行尾並從光標后面開始插入
9.3、i:從光標前面開始插入
9.4、I:會跳到行首並從光標前面開始插入
9.5、o:會在光標下一行新建空白行插入
9.6、O:會在光標上一行新建空白行插入
9.7、s:刪除光標蓋住的字符開始插入
9.8、S:刪除光標所在行后開始插入

回到命令模式:按Esc鍵(一次或多次)。命令模式是對文本內容進行快速操作,相較於編輯模式的增加內容,命令模式強大在於刪改查。

末行模式:要在按esc進入命令模式后,再按:進入末行模式,末行模式主要是用來對文本進行操作,如保存文本,而不是對文本內容進行操作。
二:末行模式(輸入“:”進入該模式)
1、q:退出當前文件
2、q!:強制退出,不保存當前修改
3、wq或x:保存並退出
4、文本替換
4.1、s/old/new:如:s/exit/quit,將exit替換為quit(只替換當前行第一處)
4.2、s/old/new/g:文本替換(替換當前行全局)
4.3、10-20s/old/new/g:范圍行內替換
4.4、%s/old/new/g:當前文件內進行替換
5、分屏命令
5.1、sp:水平分屏
5.2、vsp:垂直分屏
5.3、ctrl+ww:多屏之間切換
5.4、qall:退出所有屏,以此內推有:wall、wqall
5.5、vim -o aa.txt bb.txt:進入的時候就進行分屏(o水平;O垂直)
6、支持shell命令:!,如:!pwd

 

從插入模式(編輯模式)下新建文件並輸入內容,但是沒有保存時,若回到正常模式進行退出(:q或:q!)會進行報錯(如下):(需進行:wq!保存后退出)shift+:

~
~
~
No write since last change (:quit! overrides)
按:wq!保存后退出出現如下錯誤:
No current filename
可以用hjkl快速瀏覽,如果需要編輯,可以輸入i,進入編輯模式,然后輸入。在最后,也許你想保存的輸入為另外一個文件,比如保存為test2.txt,怎么辦呢。進入命令模式(shift+:),然后輸入w test2.txt,回車就可以了。返回如下,然后進行退出
~
~
~
"test2.txt " 20L, 77C
其實就是輸入w加上你要保存的文件名就行了,不管是保存還是重命名,通用。


按【ESC】鍵跳到命令模式,然后再按【:】冒號鍵,最后再按【wq】,即可保存退出vi的編輯狀態;如果是不想保持直接按下【:】冒號鍵加【q!】鍵,就能直接退出;

  此外還有這些命令,:w 保存文件但不退出vi;:w file 將修改另外保存到file中,不退出vi;:w! 強制保存,不推出vi;:wq 保存文件並退出vi;:wq! 強制保存文件,並退出vi;q: 不保存文件,退出vi;:q! 不保存文件,強制退出vi;:e! 放棄所有修改,從上次保存文件開始再編輯;

 

  最后,如果使用Ubuntu的話,輸入LS還會出現小火車呦~


免責聲明!

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



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