歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Red hat Linux

RedHat 紅帽子 Linux下vi vim 的使用快捷鍵

讀RedHat 紅帽子 Linux下vi vim 的使用快捷鍵之前請注意:
1. 本文的目標是提供一些vim的使用技巧,利用這些技巧可以提高vim的操作效率。部分技巧在vi上也可以使用,但是現在基本上都是用vim了。
2. 本文是整理和總結使用技巧,而非講解vim入門,因此不會涉及最基本的使用,例如如何上移或下移光標,對此類操作請參閱任何一本vim或者vi教程。
3. 本文閱讀對象是了解了vim的基本操作,而希望高效地利用vim進行工作的人。熟練使用vim的人自然不必細讀,如果能留下您的寶貴意見,本人將感激不盡。
4. 本文由本人搜集整理,轉載請注明出處

本文一般情況下用(裡邊的字母一般大小寫無所謂,除非特別注明)表示按住ctrl同時按下相關字母,命令前加一個i表示在插入模式下用這個命令

1. 選定文字 / 拷貝粘貼

v為可視模式,可以選定多行。選定多行之後,可以用yy或者dd等等進行拷貝和剪切。
p 是粘貼
y 和d 可以直接拷貝或者剪切選定的內容
yw是拷貝一個單詞
如果要復制整行的最簡單辦法就是V,y,p 就行了
v是可以選定一行任意個字符的,V是行選定的,一次一整行,然後通過向下或向上移動光標而選定多行。
對於v選定的,拷貝後就是這麼多,選多少就拷貝多少,而V選定的,粘貼的話會自動換到下一行
命令模式下,也是塊選定,不過是列塊選定

2. 折疊代碼

可以zf進行折疊, 用zo打開折疊,也可以方向鍵向右打開折疊,zc 關閉折疊(只要在被折疊的塊中的任一個語句就行)
3. 縮進代碼
是右縮進
按v選定後按=就是自動格式化代碼,自動縮進,內部的遞歸的縮進都做到了
行左移>,該命令用於調整源碼縮進格式簡便快速。
4. 移動光標

%是從大括號的開始移動到大括號的結束位置
:後邊加行號就是跳到這一行
光標返回到以前的位置。相當於光標移動的“撤銷”
光標返回到後來的位置。相當於光標移動的“恢復”
5. 多文件編輯 / 緩沖區命令
vim下每一個打開的文件對應一個緩沖區(buffer)。
多文件編輯會有兩種情形,一種是在進入 vim 前所用的參數就是多個文件(這種情形稱為 argument list)。另一種情形是進入 vim 後另外再開其它的文件(稱為 buffer list)。不過都可以統稱為buffer。

5.1 打開文件
vi flname1 flname2… flnameN
將多個文件調入緩沖,是 argument list。
:e filename
這是在進入 vim 後,在不離開 vim 的情形下再開其它文件,只要您要編輯的檔案是在目前目錄,Tab 補全鍵還是可以使用。是buffer list。
注意::e 或者:new 或者:split 後邊可以跟目錄,這樣就可以在目錄下慢慢找要打開的文件了
5.2 緩沖區跳轉
:n 編輯下一個文件。
:2n 編輯下二個文件。
:N 編輯前一個文件。注意,這種用法只能用於 argument list 的情形。
:rew 回到首文件
:args 查看當前編輯緩沖文件狀態
:e# 或 Ctrl-^ 編輯前一個檔案,用於兩文件互相編輯時相當好用。這種用法不管是 argument list 或buffer list 檔案間皆可使用。 使用Ctrl-^ 命令更便捷,但如終端類型不正確該功能將無效。
用:ls來顯示緩沖區中的文件,編號後邊有#的代表是前一個文件,可以通過:e#來進入,有%a的代表是當前文件,什麼也沒有的可以通過:bn來進入,這裡的n代表文件編號。
:b文件名或編號 移至該文件。
在 :ls 中就會出示各文件的編號,這個編號在未離開 vim 前是不會變的。這個指令 elvis 也是可以使用。當然 :e#編號 也是可以的,這樣的用法則是所有 vi clone 都通用了。
在 buffers 中,減號 - 表示這個 buffer 並未載入,不過,不必擔心,載入相當快速的。加號 + 表示這個 buffer 已經修改過了。
:bn buffer next。這裡的n代表字母n
:bl buffer last。
以上兩個指令 elvis 不適用。
如果您是使用 vim 的 GUI,那就在菜單上就會有 Buffers 這個選項,可以很容易的知道及移動各buffer 間。

5.3 移除緩沖區
:bd(elete) buffer 在未離開 vim 前是不會移除的,可使用這個指令移除。其實移除它干什麼呢?vim是您在叫用時才會載入的,因此這些 buffers 並不是像 cache 一般要占內存的。
5.4 重新編輯
放棄一修改過的文件,重新編輯。
(1)使用命令 :q!強行退出後再vi flname重新進入。
(2)使用命令 :e!強行重編輯更便捷。這樣也是會打開文件,但會放棄目前編輯文件的改變,否則如果文件已有變動,vim 預設是不讓您隨便離開的。:e! 後不接什麼的話,代表捨棄一切修改,重新載入編輯中文件。

5.5 其他命令
:files 或 :buffers 或 :ls 會列出目前 buffer 中的所有文件。
在 elvis 中可使用 :b 來叫出 buffers。 
:f 或 Ctrl-g 顯示目前編輯的文件名、是否經過修改及目前光標所在之位置。
:f 文件名 改變編輯中的文件名。(file)
:r 文件名 在光標所在處插入一個文件的內容。(read)
:35 r 文件名 將文件插入至 35 行之後。
gf 這是 vim 的特殊打開文件的方法,會打開光標所在處的 word 為名的文件,當然,這個文件要在當前目錄內,否則會創建新文件。

6. 查找命令

用/查找單詞後,n可以跳到下一個,N則是上一個,:nohls可以取消高亮
查找時,:set ignorecase”項讓VIM忽略大小寫,“:set noignorecase” 來關閉這項功能。

7. 修改文字

cw:刪除一個單詞並進入插入模式,cc:刪除一行並進入插入模式。
r:然後輸入的字母將替換當前字母並保持命令模式,R則是不停的替換(一個挨著一個)。
0到行首,$到行尾。

8. 函數間跳轉
ctrl+]和ctrl+T分別是查找函數的定義和返回,好像需要ctag的支持
i 跳轉到光標所指標識符的定義行,是打開一個新的小窗口顯示,記住要加個i,最好是找自己項目下的文件,否則找庫函數的話還不如man.
大寫 K        看光標所指標識符的 man 幫助頁
9. 窗口命令
= ctrl+w
:split 文件名 同時在一個頁面顯示多個文件的內容,類似多窗口,用切換當前窗口
f 切分顯示光標在處的文件名,VIM 會在 path 中搜索該文件名,比如常用它打開 #include 語句中的文件
_ 當同時打開幾個文件時,按 _ 使當前窗口最大化
用Ctrl-W命令指定光標移動: 
   Ctrl-W +    擴大窗口
   Ctrl-W -    縮小窗口
   Ctrl-W h    移動到窗口左邊
   Ctrl-W j    移動到窗口下邊
   Ctrl-W k    移動到窗口上邊
   Ctrl-W l    移動到窗口右邊
等於是按下後,松開鍵盤,再按下一個命令就可以了.
如果要關閉分割窗口可以用:close,剩下只有一個窗口的話就不能關了。
多窗口是split,像用e打開多個文件是將文件放在緩沖區中。
10. 自動完成

i 向上搜索,補全一個詞
i 向下搜索,補全一個詞
i 補全一行。
比如你寫過一行 for (int i = 0; i 即可。如果補全出來的不是你想要的那一行,你可以按   或   選擇上一個或下一個匹配行i 在文件系統中搜索,補全一個文件名
如果按   或   補全一個詞,在當前文件中沒有找到匹配,VIM 將搜索 #include 語句中的文件,而文件的位置將在 path 中搜索。
i 把上一行對應列的字符抄下來
i 把下一行對應列的字符抄上來,這兩個都可以一直按下去,到了行尾自己會停的.
11. 注釋整塊內容

注釋塊的方法:
選定要注釋掉的行 I // Esc 
I之後輸入的東西就是插入到選定的行前邊的,直至Esc.
要去掉注釋的辦法:選定注釋符//,然後d 
列塊選定後I是在前邊都插入,A是在後邊都插入
是按列塊模式的選定,是行選定,v是普通選定

12. 其他命令

u可以撤銷上一步操作, ctrl+r可以恢復
i命令執行一個普通模式的命令,執行完畢後回到插入模式,不用多次Esc
i後續字符 輸入特殊的 ASCII 字符或鍵。
.        在光標當前位置處重復上一次操作
:!命令行       執行一條外部命令
Copyright © Linux教程網 All Rights Reserved