vim的使用方法

來源:互聯網
上載者:User
不要試圖一次記下很多 
每次掌握最需要的兩三個技巧 
然後多多熟悉 嗯 這樣總有一天 突然發現你是vim達人了 
----------------------------------------------- 
寫在前面: 
vim是一款相當出色的編輯器(或者已經超越了編輯器的範疇),現在覺得使用滑鼠是件很麻煩的事。不由自主的會在word中按Esc,也會在UE中按:q,好奇怪 
下面主要介紹了vi最常用,也最有用的tips,比如”fx”命令找到當前行中下一個字母x,比如”`.”返回上次編輯的地方,比如”ma”插入一個標籤a,並使用”`a”來返回到該標籤,還有”shift+c”刪除到行末並直接進入插入模式…. 
——————————我是分割線———————- 
vim模式與命令 
通常模式(n) 在其它任何一個模式下,用ESC或者 ctrl+c 鍵可以退到通常模式 
插入模式(i) 在這個模式下,vim像一個常見的編輯器.在通常模式下,用i或者a可以進行本模式,當然,還有一些其它命令也可以 
可視模式(v) 在這個模式下,可以使用hjkl進行選擇.然後進行copy,paste或者其它操作. 在通常模式下,用v命令進入可視模式 
塊操作模式(V) 這是塊操作模式. 在通常模式下,用ctrl+v進入本模式 
修改模式(R) 這是改寫的模式.很多軟體法用insert鍵來完成這個切換.在vim中,從通常模式用R即可進入取代模式 
擴充命令模式(ex) 這是命令執行模式 在通常模式下用:切換到此模式 

Hint: 使用時一般處於通常模式或者插入模式,需要Copy/Paste時會用到可視模式。一般來說,vim新人偏愛插入模式,並通過鍵盤右下角的方向鍵移動游標,但是,插入模式的vim功能與windows記事本相當,通常模式下才可以發揮vim的高效編輯等功能。 

vim基本編輯技巧 
消除行尾空白字元 :%s/s+$//g 
Tab鍵轉為4個空格 :%s/t/ /g (/g前有4個空格) 
h、j、k、l vim用來代替方向鍵,習慣以後編輯更加高效 

在當前行高效移動游標 
fx:移動游標到當前行的下一個 x 處。很明顯,x 可以是任意一個字母,而且你可以使用 ; 來重複你的上一個 f 命令。 
tx:和上面的命令類似,但是是移動到 x 的左邊一個位置。(這真的很有用) 
Fx:和 fx 類似,不過是往回找。 
w:游標往前移動一個詞。 
b:游標往後移動一個詞。 
0:移動游標到當前行首。 
^:移動游標到當前行的第一個字母位置。 
$:移動游標到行尾。 

在整個檔案裡面高效移動游標 
:向下移動一屏。 
:向上移動一屏。 
%:跳到匹配的左/右括弧上 
gg:到檔案頭 
G:到檔案尾 
zz:移動當前行到螢幕中央 
zt:移動當前行到螢幕頂部 
zb:移動當前行到螢幕底部 
*:讀取游標處的字串,並且移動游標到它再次出現的地方。 
#:和上面的類似,但是是往反方向尋找。 
/text:從當前游標處開始搜尋字串 text,並且到達 text 出現的地方。必須使用斷行符號來開始這個搜尋命令。如果想重複上次的搜尋的話,按 n。 
?text:和上面類似,但是是反方向。 
ma:在當前游標的位置標記一個書籤,名字為 a。書籤名只能是小寫字母。你看不見書籤的存在,但它確實已經在那裡了。 
`a:到書籤 a 處。注意這個不是單引號,它位於鍵盤的 1 的左邊。 
`.:到你上次編輯檔案的地方。這個命令很有用,而且你不用自己去標記它 

高效輸入/刪除 
i:在當前字元的左邊插入 
I:在當前行首插入 
a:在當前字元的右邊插入 
A:在當前行尾插入 
o:在當前行下面插入一個新行 
O:在當前行上面插入一個新行 
dd:刪除當前行 
d$/d^:刪除到行末/行首 
c{motion}:刪除 motion 命令跨過的字元,並且進入插入模式。比如:c$,這將會刪除從游標位置到行尾的字元並且進入插入模式。ct!,這會刪除從游標位置到下一個歎號(但不包括),然後進入插入模式。被刪除的字元被存在了剪貼簿裡面,並且可以再粘貼出來。 
按v進入可視模式,選中多行後按=自動格式化 

尋找技巧 
/xxx(?xxx) 表示在整篇文檔中搜尋匹配xxx的字串, / 表示向下尋找, ? 表示向上尋找. 尋找到以後, 再輸入 n 尋找下一個匹配處, 輸入 N 反方向尋找. 
*(#) 當游標停留在某個單詞上時, 輸入這條命令表示尋找與該單詞匹配的下(上)一個單詞. 同樣, 再輸入 n 尋找下一個匹配處, 輸入 N 反方向尋找. 
g*(g#) 此命令與上條命令相似, 只不過它不完全符合游標所在處的單詞, 而是匹配包含該單詞的所有字串. 
gd 尋找與游標所在單詞相匹配的單詞, 並將游標停留在文檔的非注釋段中第一次出現這個單詞的地方. 
% 尋找與游標所在處相匹配的反括弧, 包括 () [] {} 
f(F)x 在游標所在行進行尋找, 尋找游標右(左)方第一個x字元.找到後:輸入 ; 表示繼續往下找;輸入 , 表示反方向尋找 

插入if條件陳述式後,有以下三種代碼塊縮排的方法: 
用shift-v選中這幾行,然後用>向右縮排 
>nj ,n 為行數 (>表示縮排,nj表示向下移動n行) 
把游標放在第一個大括弧{上, 然後按%=使vim自動縮排 

vim進階技巧 
多視窗編輯器 
建立視窗:new(當前視窗上方建立新視窗)和vnew(當前視窗左側建立新視窗) 
分裂視窗:split(水平)和vsplit(垂直) 
改變當前視窗的大小: 
+ (增大) 
- (減小) 
_ (視窗高度最大化) 
| (視窗寬度最大化) 
= (恢複所有視窗同樣大小) 

切換視窗 方向鍵 
j 切換到當前視窗下方的視窗 
k 切換到當前視窗上方的視窗 
h 切換到當前視窗左側的視窗 
l 切換到當前視窗右側的視窗 
重複某個動作若個次:數字 + 動作,例如: 
2dd 刪除兩行 
10 + 將當前視窗增加10行 
注釋多行代碼:按ctrl+v後選中多行,然後按shift+i進入插入模式,插入若干字元後按ESC後會在選中的所有行前面都插入相同的字元 

vim程式碼摺疊功能 
摺疊方式 可用選項 ‘foldmethod’ 來設定摺疊方式:set fdm=*****。 
有 6 種方法來選定摺疊: 
manual 手工定義摺疊 
indent 更多的縮排表示更進階別的摺疊 
expr 用運算式來定義摺疊 
syntax 用文法高亮來定義摺疊 
diff 對沒有更改的文本進行摺疊 
marker 對文中的標誌摺疊 
注意,每一種摺疊方式不相容,如不能即用expr又用marker方式,我主要輪流使用indent和marker方法 

摺疊命令 
選取了摺疊方式後,我們就可以對某些代碼實施我們需要的摺疊了,由於我使用indent和marker稍微多一些,故以它們的使用為例:如果使用了indent方式,vim會自動的對大括弧的中間部分進行摺疊,我們可以直接使用這些現成的摺疊成果。 
在可摺疊處(大括弧中間): 
zc 摺疊 
zC 對所在範圍內所有嵌套的摺疊點進行摺疊 
zo 展開摺疊 
zO 對所在範圍內所有嵌套的摺疊點展開 
[z 到當前開啟的摺疊的開始處。 
]z 到當前開啟的摺疊的末尾處。 
zj 向下移動。到達下一個摺疊的開始處。關閉的摺疊也被計入。 
zk 向上移動到前一摺疊的結束處。關閉的摺疊也被計入 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.