[點滴積累]vim使用(1)(FromQQ)

來源:互聯網
上載者:User
source:http://easwy.com/blog/archives/advanced-vim-skills-catalog/gain:#########20090309########在vim中儲存與回複上次的編輯狀態這裡,

1)會話資訊中儲存了所有視窗的視圖,外加全域設定。
2)viminfo資訊中儲存了命令列曆史(history)、搜尋字串曆史(search)、輸入行曆史、非空的寄存器內容(register)、檔案的位置標記(mark)、最近搜尋/替換的模式、緩衝區列表、全域變數等資訊。假設vim開啟了三個視窗,vsplit,split,split。然後n f1,n f2, n f3
開啟這些檔案之後,想要下次啟動vim的時候保持現在這個狀態,不用一個一個重新載入了,一個比較笨的方法,例如如下步驟:一、儲存會話與狀態
:cd src                            "切換到/home/easwy/src/vim70/src目錄
:set sessionoptions-=curdir        "在session option中去掉curdir
:set sessionoptions+=sesdir        "在session option中加入sesdir
:mksession vim70.vim               "建立一個會話檔案
:wviminfo vim70.viminfo            "建立一個viminfo檔案
:qa                                "退出vim二、恢複會話與狀態
下次啟動的時候,任意vi f1,然後
:source ~/src/vim70/src/vim70.vim  '載入會話檔案
:rviminfo vim70.viminfo            '讀入viminfo檔案#########20090310#############small skills:1.檔案的定位:游標定位到src/main.c檔案第22行的”fcntl.h”單詞上,然後在Normal模式下按” gf“。咦,vim開啟了/usr/include/fcntl.h檔案! 現在我們按” CTRL-^“回到剛才的位置,游標仍舊定位在第22行的”fcntl.h”單詞上,然後按” CTRL-W f“。啊哈,這次vim開啟了一個水平分隔視窗,在此視窗中開啟了/usr/include/fcntl.h。2.更新.vimrc 顯示:更改完了.vimrc之後執行:":source ~/.vimrc"就會更新成為.vimrc的顯示了,不用重啟。3.昨天(20090309)的會話檔案,如果":source 
vim70.vim"之後,系統會自動尋找並執行檔案名稱為會話檔案名稱去掉尾碼(不一定非得是.vim)再加'x.vim'的檔案中的內容。例如:這裡將再
執行vim70x.vim(有的話)的內容(如"set nu"等)。3.使用tag標籤定位某個函數等1)進入項目目錄,輸入:$ctags –R ./這樣可以產生目前的目錄檔案的tag檔案。(再進入相應目錄,vim中":set tags=tags" "設定tags選項為目前的目錄下的tags檔案 )2)使用tags:開啟目前的目錄的某個檔案,例如hello.h中有一個printHello()函數,那麼:游標定位到printHello位置,輸入:CTRL-]                  "跳轉到當前游標下的標籤,這樣將跳到hello.c檔案並定位到printHello函數的定義處
CTRL-T                  "跳到標籤棧中較早的標籤,相當於“後退”的功能,退回到hello.h檔案處另外::tag {ident}            "跳轉到指定的標籤,例如":tag main"將跳到main函數的定義之處。
:tags                   "顯示標籤棧###########20090311#######1,vim檔案瀏覽在vim 7.0以前,檔案瀏覽功能由explorer.vim外掛程式提供,在vim 7.0中,這個外掛程式被netrw.vim外掛程式所代替。

netrw.vim是vim的標準外掛程式,它已經伴隨vim而發行,不需要安裝。

我們現在試一下vim檔案功能,當你使用vim嘗試開啟目錄時,vim會自動調用netrw.vim外掛程式開啟該目錄(從作業系統的視角來看,目錄其實是一種特殊的檔案)。例如,我們在vim中執行命令”:e ~/src

這個視窗類別似於檔案管理工具,你可以建立、刪除、改名檔案或目錄;在目錄上按斷行符號時,會進入該目錄;在檔案上按斷行符號時,會使用vim開啟該檔案;可以更改排序方式、排序風格;隱藏目錄或檔案(使之不在上述視窗中顯示)等等。

<F1>        顯示協助
<cr> 如果游標下為目錄,則進入該目錄;如果游標下是檔案,則用vim開啟該檔案
- 返回上級目錄
c 切換vim的當前工作目錄為正在瀏覽的目錄
d 建立目錄
D 刪除檔案或目錄
i 切換顯示方式
R 改名檔案或目錄
s 選擇排序方式
x 定製瀏覽方式,使用你指定的程式開啟該檔案
2、輸入“:Sexplore!”會令垂直開啟一個視窗顯示當前檔案所在目錄(沒有驚嘆號則水平)類似:
:vnew(在新視窗建立檔案),:vsplit xxx(要開啟的檔案名稱),:split xxx(要開啟的檔案名稱)這裡檔案都可以是目錄。
3、輸入“:ls”顯示當前緩衝區中得檔案,按N ctrl^或者“:buffer N”可以切換成第N個緩衝
##########20090312############
1,quickfixQuickfix模式的主要思想是儲存一個位置列表,然後提供一系列命令,實現在這個位置列表中跳轉。
對大多數使用Makefile的項目來說,vim的預設設定”make“已經可以滿足要求了。如果你的項目需要用一個特殊的程式進行編譯,就需要修改’makeprg‘選項的值。
例如對於hello.c,設定執行make時的命令,注意需要空格轉義,
":set makeprg=gcc/ -Wall/ -ohello/ hello.c ",設定之後執行":make",就可以編譯了。vim會自
動調用’makeprg‘選項定義的命令進行編譯,並把編譯輸出重新導向到一個臨時檔案中,當編譯出現錯誤時,
vim會從上述臨時檔案中讀出錯誤資訊,根據這些資訊形成quickfix列表,並跳轉到第一個錯誤出現的地方。
可以輸入”:cc“命令,vim會更次顯示此資訊,或者乾脆使用”:cw“命令,開啟一個quickfix視窗,
把所有的出錯資訊顯示出來。

在quickfix模式裡經常用到的命令有:
:cc                顯示詳細錯誤資訊 ( :help :cc )
:cp                跳到上一個錯誤 ( :help :cp )
:cn                跳到下一個錯誤 ( :help :cn )或者在Quickfix List對應行上輸入斷行符號
:cl                列出所有錯誤 ( :help :cl )
:cw                如果有錯誤清單,則開啟quickfix視窗 ( :help :cw )
:col               到前一箇舊的錯誤清單 ( :help :col )
:cnew              到後一個較新的錯誤清單 ( :help :cnew )
更多的命令,以及這些命令更詳細的解釋,請參見手冊。 
如果你希望跳轉到出錯的檔案時,使用一個分隔的視窗開啟,請參閱’switchbuf‘選項的值
2、關於自動補全:
除智能補全外,最常用的補全方式應該是CTRL-N和CTRL-P補全了。它們會在當前緩衝區、其它緩衝區,以及
當前檔案所包含的標頭檔中尋找以游標前關鍵字開始的單詞。智能補全不能對局部變數進行補全,而CTRL-N和
CTRL-P補全則可以很好的勝任。 例子,輸出字元”pa”,然後按CTRL-P,vim會在下拉式功能表中列出所有的匹
配功能供選擇,此時再按一下CTRL-P,就選中了第一個項目,也就是我想輸入的”parmp”。我們第一次輸入
CTRL-P的是進行補全,第二次輸入的CTRL-P是在下拉式功能表中向上選擇,二者的含義是不同的。 我們知道,
CTRL-P一般的含義是向上,因此CTRL-P補全是向上尋找以進行補全,而CTRL-N是向下尋找以進行補全,在不
同場合使用不同的快速鍵可以加速補全的速度。使用CTRL-N和CTRL-P補全時,由’complete‘選項控制vim
從哪些地方尋找補全的內容。例如,對於比較大的軟體項目,檔案內含項目關聯性複雜,如果CTRL-N和CTRL-P補全
時尋找所包含的標頭檔,耗時會比較久。此時,可以在’complete‘選項中去掉’i‘標記,這樣CTRL-N和
CTRL-P補全就不在標頭檔中尋找了,速度會快很多;當然,弊端就是你無法對標頭檔中出現的某些內容進行補
全了。vim中其它的補全方式包括: 
 
整行補全                        CTRL-X CTRL-L
根據當前檔案裡關鍵字補全        CTRL-X CTRL-N
根據字典補全                    CTRL-X CTRL-K
根據同義字字典補全              CTRL-X CTRL-T
根據標頭檔內關鍵字補全          CTRL-X CTRL-I
根據標籤補全                    CTRL-X CTRL-]
補全檔案名稱                      CTRL-X CTRL-F
補全宏定義                      CTRL-X CTRL-D
補全vim命令                     CTRL-X CTRL-V
使用者自訂補全方式              CTRL-X CTRL-U
拼字建議                        CTRL-X CTRL-S
例如,當我們按下”CTRL-X CTRL-F“時,vim就會彈出下拉式功能表,顯示出目前的目錄下的可選目錄和檔案。
############20090314###############
移動:
1,上下左右移動視窗位置的命令,是CTRL-W H/J/K/L (:help CTRL-W_H, …)。注意,這裡的H, J, K, L是大寫的
2,在vim中翻頁,同樣可以使用PageUp和PageDown,我們通常使用CTRL-BCTRL-F來進行翻頁,CTRL-B
CTRL-F前也可以加上數字,來表示向上或向下翻多少頁
3,跳轉:命令“gg”移動到檔案的第一行,而命令“G”則移動到檔案的最後一行。 跳轉到檔案的第1234行,只需輸入
1234G”或者“:1234”
還可以按百分比來跳轉,例如,想跳到檔案的正中間,輸入“50%”;如果想跳到75%處,輸入“75%”
迷失自己的位置,這時使用“CTRL-G”命令,查看一下自己位置以及檔案等。
4,行內快速移動,可以使用f, t, F, T命令.例如,"fx",會把移動到游標右邊的第一個'x'字元上。"F"
令則反方向尋找,也就是移動到游標左邊的指定字元上,"tx"會移動到游標右邊第一個'x'字元的前面。"T"
令是"t"命令的反向版本,它移動到游標右邊的指定字元之後,可以在命令前面使用數字,"3fx"表示移動到光
標右邊的第3個'x'字元上.";"命令重複前一次輸入的f, t, F, T命令,而","命令會反方向重複前一次輸入
的f, t, F, T命令。這兩個命令前也可以使用數字來表示倍數。

在vim中,移動到行首的命令非常簡單,就是"0",這個是數字0,而不是大寫字母O。移動到行尾的命令是"$"

 

另外還有一個命令"^",用它可以移動到行首的第一個非空白字元。

 

使用H/M/L這三個鍵,可以讓游標跳到當前視窗的頂部、中間、和底部,停留在第一個非Null 字元上。加一個數

 

字,是指距視窗頂部、底部的行數

 

相對於游標的翻頁:游標所在行移動視窗的頂端、中間或底部:"zt"、"zz"和"zb"

 

5,尋找:直接在Normal模式下輸入"/",然後輸入你想查詢的字串,斷行符號,就跳轉到第一個匹配的地方了。

 

"?"進行反方向尋找。命令"n"重複上一次的尋找命令,而命令"N"也重複上一次的尋找命令,只不過它按

 

相反方向尋找。使用"q/"和"q?"命令,在vim視窗最下面開啟一個新的視窗,這個視窗會列出你的尋找曆

 

史記錄

####################20090316#################

關於替換

1.輸入 :s/thee/the <斷行符號> 。請注意該命令只改變游標所在行的第一個匹配
串。

2. 輸入 :s/thee/the/g 則是替換全行的匹配串

3.輸入 :#,#s/old/new/g 替換兩行之間出現的每個匹配串(#,#代表的是兩行的行號)。

4.輸入 :%s/old/new/g 則是替換整個檔案中的每個匹配串。

5.進行全文替換時詢問使用者確認每個替換需添加 c 選項,請輸入 :%s/old/new/gc其餘的不重複說了。

6.尋找時,設定 ic 選項(ic就是英文忽略大小寫Ignore Case的首字母縮寫詞),即輸入:set ic

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.