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如何解決中文亂碼問題?
※一些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操作指引