當前位置:
首頁 > 知識 > VIM使用技巧及快捷操作

VIM使用技巧及快捷操作

vi鍵盤圖

先貼一圖:

這裡也是一小部分,還有外語的:

詳細使用技巧及快捷操作

先說明一下:

以下的例子中xxx表示在命令模式下輸入xxx並回車

以下的例子中:xxx表示在擴展模式下輸入xxx並回車

小括弧中的命令表示相關命令.

在編輯模式或可視模式下輸入的命令會另外註明.

1、查找

/xxx(?xxx)表示在整篇文檔中搜索匹配xxx的字元串, /表示向下查找, ?表示

向上查找.其中xxx可以是正規表達式,關於正規式就不多說了.

一般來說是區分大小寫的,要想不區分大小寫,那得先輸入

:set ignorecase

查找到以後,再輸入n查找下一個匹配處,輸入N反方向查找.

*(#)當游標停留在某個單詞上時,輸入這條命令表示查找與該單詞匹配的

下(上)一個單詞.同樣,再輸入n查找下一個匹配處,輸入N反方

向查找.

g*(g#)此命令與上條命令相似,只不過它不完全匹配游標所在處的單詞,而

是匹配包含該單詞的所有字元串.

gd本命令查找與游標所在單詞相匹配的單詞,並將游標停留在文檔的非

注釋段中第一次出現這個單詞的地方.

%本命令查找與游標所在處相匹配的反括弧,包括() [] {}

f(F)x本命令表示在游標所在行進行查找,查找游標右(左)方第一個x字元.

找到後:

輸入;表示繼續往下找

輸入,表示反方向查找

2.快速移動游標

在vi中,移動游標和編輯是兩件事,正因為區分開來,所以可以很方便的進行游標定

位和編輯.因此能更快一點移動游標是很有用的.

w(e)移動游標到下一個單詞.

b移動游標到上一個單詞.

移動游標到本行最開頭.

^移動游標到本行最開頭的字元處.

$移動游標到本行結尾處.

H移動游標到屏幕的首行.

M移動游標到屏幕的中間一行.

L移動游標到屏幕的尾行.

gg移動游標到文檔首行.

G移動游標到文檔尾行.

c-f (即ctrl鍵與f鍵一同按下)本命令即page down.

c-b (即ctrl鍵與b鍵一同按下,後同)本命令即page up.

c-u:屏幕往「後」移動半頁。

c-d:屏幕往「前」移動半頁。

c+e 編輯窗口中的文件內容整體上移一行。

c+y 編輯窗口中的文件內容整體下移一行。

此命令相當有用,它移動游標到上一個標記處,比如用gd, *等查

找到某個單詞後,再輸入此命令則回到上次停留的位置.

.此命令相當好使,它移動游標到上一次的修改行.

`.此命令相當強大,它移動游標到上一次的修改點.

3.拷貝,刪除與粘貼

在vi中y表示拷貝, d表示刪除, p表示粘貼.其中拷貝與刪除是與游標移動命令

結合的,看幾個例子就能夠明白了.

yw表示拷貝從當前游標到游標所在單詞結尾的內容.

dw表示刪除從當前游標到游標所在單詞結尾的內容.

y0表示拷貝從當前游標到游標所在行首的內容.

d0表示刪除從當前游標到游標所在行首的內容.

y$表示拷貝從當前游標到游標所在行尾的內容.

d$表示刪除從當前游標到游標所在行尾的內容.

yfa表示拷貝從當前游標到游標後面的第一個a字元之間的內容.

dfa表示刪除從當前游標到游標後面的第一個a字元之間的內容.

特殊地:

yy表示拷貝游標所在行.

dd表示刪除游標所在行.

D表示刪除從當前游標到游標所在行尾的內容.

關於拷貝,刪除和粘貼的複雜用法與寄存器有關,可以自行查詢.

4. 數字與命令

在vi中數字與命令結合往往表示重複進行此命令,若在擴展模式的開頭出現則表示行

號定位.如:

5fx表示查找游標後第5個x字元.

5w(e)移動游標到下五個單詞.

5yy表示拷貝游標以下5行.

5dd表示刪除游標以下5行.

y2fa表示拷貝從當前游標到游標後面的第二個a字元之間的內容.

:12,24y表示拷貝第12行到第24行之間的內容.

:12,y表示拷貝第12行到游標所在行之間的內容.

:,24y表示拷貝游標所在行到第24行之間的內容.刪除類似.

5.快速輸入字元

在vi中,不要求你輸入每一個字元,可以有很多種方法快速輸入一些字元.

使用linux/unix的同學一定有一個經驗,在命令行下輸入命令時敲入頭幾個字元再按

TAB系統就會自動將剩下的字元補齊,假如有多個匹配則會列印出來.這就是著名的命令

補齊(其實windows中也有文件名補齊功能). vi中有許多的字元串補齊命令,非常方便.

c-p(c-n)在編輯模式中,輸入幾個字元後再輸入此命令則vi開始向上(下)搜

索開頭與其匹配的單詞並補齊,不斷輸入此命令則循環查找.此命令

會在所有在這個vim程序中打開的文件中進行匹配.

c-x-l在編輯模式中,此命令快速補齊整行內容,但是僅在本窗口中出現的

文檔中進行匹配.

c-x-f在編輯模式中,這個命令表示補齊文件名.如輸入:

/usr/local/tom後再輸入此命令則它會自動匹配出:

/usr/local/tomcat/

abbr即縮寫.這是一個宏操作,可以在編輯模式中用一個縮寫代替另一個

字元串.比如編寫java文件的常常輸入System.out.println,這很

是麻煩,所以應該用縮寫來減少敲字.可以這麼做:

:abbr sprt System.out.println

以後在輸入sprt後再輸入其他非字母符號,它就會自動擴展為System.

out.println

6.替換

替換是vi的強項,因為可以用正規表達式來匹配字元串.以下提供幾個例子.

:s/aa/bb/g將游標所在行出現的所有包含aa的字元串中的aa替換為bb

:s//bb/g將游標所在行出現的所有aa替換為bb,僅替換aa這個單詞

:%s/aa/bb/g將文檔中出現的所有包含aa的字元串中的aa替換為bb

:12,23s/aa/bb/g將從12行到23行中出現的所有包含aa的字元串中的aa替換為bb

:12,23s/^/#/將從12行到23行的行首加入#字元

:%s= *$==將所有行尾多餘的空格刪除

:g/^s*$/d將所有不包含字元(空格也不包含)的空行刪除.

:%s/

/

/g

而必須寫成:

:%s/

/

/g

反斜杠要轉義

s/\/\\/g

8.宏替換

vi不僅可以用abbr來替換文字,也可以進行命令的宏定義.有些命令輸起來很費勁,

因此我把它們定義到-上,這樣就很方便了.這些配置可以預先寫到~/.vimrc

(windows下為$VIM/_vimrc)中,寫進去的時候不用寫前面的冒號.

:nmap :nohls取消被搜索字串的高亮

:nmap w命令模式下轉移游標到不同窗口

:imap輸入模式下運行

:nmap :%s= *$==刪除所有行尾多餘的空格.

:imap同上

:java中: (注,這裡為什麼說java中,因為以下定義對其他文件格式不起作用,下文

會說到如何實現這一點)

:nmap :comp javac:mak -d . %

此命令用javac編譯java文件,它會自動將游標定位到出錯點.不過這需要定

義一個javac.vim文件在$VIM/compiler下,在javac.vim裡面只有兩行字:

setlocal makeprg=javac

setlocal errorformat=%A%f:%l: %m,%-Z%p^,%-C%.%#

:nmap :comp ant:mak

此命令用ant編譯java文件,它會自動將游標定位到出錯點.一般來說,安裝

vim後已經有了compiler/ant.vim文件,因此這個命令可以直接使用.但是需要

在當前目錄下有build.xml文件,當然還必須安裝ant才行.

:nmap :cl此命令用於查看所有的編譯錯誤.

:imap

:nmap :cc此命令用於查看當前的編譯錯誤.

:imap

:nmap :cn此命令用於跳到下一個出錯位置.

:imap

:nmap :cp此命令用於跳到上一個出錯位置.

:imap

:nmap :JavaBrowser

此命令用於在窗口左部分割出一個新窗口,裡面的內容是java的資源樹,包括

本文件中出現的類,類的成員變數及成員方法,就好像JCreator表現的那樣.

在這個窗口中輸入?會看到幫助.嘿嘿,很好用,不過需要ctags支持.

:imap

9. TAB

TAB就是製表符,單獨拿出來做一節是因為這個東西確實很有用.

>輸入此命令則游標所在行向右移動一個tab.

5>>輸入此命令則游標後5行向右移動一個tab.

:12,24>此命令將12行到14行的數據都向右移動一個tab.

:12,24>>此命令將12行到14行的數據都向右移動兩個tab.

那麼如何定義tab的大小呢?有人願意使用8個空格位,有人用4個,有的用2個.

有的人希望tab完全用空格代替,也有的人希望tab就是tab.沒關係, vim能

幫助你.以下的設置一般也都先寫入配置文件中,免得老敲.

:set shiftwidth=4設置自動縮進4個空格,當然要設自動縮進先.

:set sts=4即設置softtabstop為4.輸入tab後就跳了4格.

:set tabstop=4實際的tab即為4個空格,而不是預設的8個.

:set expandtab在輸入tab後, vim用恰當的空格來填充這個tab.

10. autocmd

這個命令十分的強大,可以用這個命令實現對不同的文件格式應用不同的配置;可以

在新建文件時自動添加上版權聲明等等.這些命令一般定義在~/.vimrc這樣的配置文件

裡面.由於他很強大,所以我不能給出很具體的說明,只能舉幾個例子,詳細的請看幫助.

:autocmd!刪除所有之前的自動命令.

autocmd FileType java source ~/.vim/files/java.vim

autocmd FileType java source ~/.vim/files/jcommenter.vim

以上兩條命令讓我在打開java文件時才應用後面提到的兩個配置文件.

autocmd BufNewFile *.java 0r ~/.vim/files/skeletons/java.skel

以上這條命令讓我在新建java文件時自動加入java.skel文件的內容.

autocmd BufNewFile *.java normal gnp

以上這條命令讓我在新建java文件時自動運行gnp命令,這個命令進行一些特殊化

處理,比如將新java文件中的__date__替換成今天的日期什麼的.

11.常用腳本

12.可視

v 普通選擇

shift-v 行選擇

ctrl-v 方塊區域選擇

一些補充:

Gvim:tabnewxxx標籤打開xxx文件

永別ESC,改改使用vim的習慣吧

別用ESC了,用ctrl-[更快捷。

這下終於可以所有的操作,手都不離開主鍵盤區了。

gg=G 自動縮進

A:在本行行尾插入

J:可以去除本行和下一行之間的換行符,也就是將下一行續接到本行尾部

~:游標所在處的字元進行大小寫互換

zz: 將當前行放置於頁面中間,利於閱讀

zt:將當前行放置於頁面的最頂端,一般閱讀函數定義時,非常非常有用

ctrl-a:可以將游標所在處的數字加1,負數和多位數都在支持範圍內哦。可以用這個快捷鍵配合宏來干很多事情嘍。

ctrl-x:有加1就會有減1,聰明!

速查表地址:http://www.catonmat.net/download/bash-vi-editing-mode-cheat-sheet.txt

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 PHP技術大全 的精彩文章:

php如何解決中文亂碼問題?
一些MongoDB的坑
PHP網路通信引擎的選擇
PHP 7.2 Beta的Benchmarks 測試:PHP 仍然越來越快

TAG:PHP技術大全 |

您可能感興趣

各種品牌機PC電腦進入BIOS的操作及方法
Android P深度整合AI技術:更省電高效 操作更便捷
HTC VR手柄操作詳解
VIM 編輯器操作指南
交換機的密碼恢復命令操作與TFTP文件管理
VR餐飲培訓、VR虛擬料理,原來VR還可以這樣操作
動態IP瀏覽器以及動態IP雲伺服器操作步驟
安卓手機巨方便的實用技巧,簡單操作開啟大功能
乾貨系列——ITC操作手冊
哇券APP操作流程及推廣方法
MySQL 操作入門
Gmail將支持AMP功能 郵件可操作性大提升
IDC:iOS重新成為智能手機操作系統頭牌 蘋果iPhone X功不可沒
蘋果邊框操作技術獲得專利,下一代iPhone9音量鍵會取消機械按鍵
必須知道的快捷鍵:電腦的基本操作及常用辦公軟體的使用
在Mybatis中使用手動加鎖的方式操作資料庫
MySQL操作之DCL
CAET:如何正確的運用區塊鏈操作系統?
挽回中「推拉」技巧的運用以及操作?
手機下載安裝車智匯APP操作指引