[轉載]Vim 詳解vim的一個較全的介紹

來源:互聯網
上載者:User
vim的一個較全的介紹(轉)

 

http://www.cnblogs.com/dubing/archive/2011/12/16/2290421.html

http://blog.csdn.net/sabalol/article/details/3426635

http://hi.baidu.com/howard1980/blog/item/3399e42668751b0a908f9d5f.html

前篇回顧

  上篇介紹了linux下C編程基本環境配置以及相關工具使用選擇。

  不過10個大牛9個用vim,那麼咱們就來玩vim。linux下玩c就別依靠圖形介面。好吧告別Ide,命令列才是c的王道。

  本篇文章感謝名為孫鶴同學的支援人員 感謝有愛的c大牛們

  本文中多處使用vim外掛程式(孫鶴提供),這些外掛程式大多是在http://www.vim.org/處下載。

 指標客串

  因為畢業後就沒玩過c了,都說指標是c的重點。但是指標作為一種地址變數,為什麼不直接操作變數本身呢。文章末尾為大家揭曉

vim的設定檔

  ~/.vimrc        使用者的預設設定檔
  ~/.vim/plugin/   使用者的預設指令檔的存放目錄
  ~/.vim/ftplugin/ 使用者的預設檔案類型相關指令檔的存放目錄

 vim提供的編程支援

  文本資訊(行號、檔案名稱等)
  代碼縮排
  文法高亮
  快速定位
  標記位置
  全文檢索搜尋
  補全
  多檔案編輯
  多視窗編輯
  函數列表
  檔案清單
  函數跳轉
  語法錯誤
  字元集的編碼
  二進位查看

  等等...

初試vim

  在終端以root啟動 輸入vim命令 顯示vim首頁

:r filename 讀入一個檔案內容,並寫入到當前編輯器中

按i進入插入模式

編輯完後:w儲存

編輯完後按esc退出插入模式 進入正常模式

然後輸入:sh進入shell

編譯運行

文本資訊配置

set nu(寫入設定檔.vimrc中) 顯示行號。
ctrl-g(正常模式下使用命令) 顯示檔案資訊和當前行。
statusline.vim(外掛程式) 增加底部狀態列。

代碼縮排配置

filetype on(寫入設定檔.vimrc中) 使vim對檔案類型敏感。
autocmd FileType c,cpp,h :setlocal cindent cinoptions=:0,g0,t0(寫入設定檔.vimrc中) 設定c縮排風格,具體詳情參見:h cinoptions-values。
autocmd FileType c,cpp,h :setlocal et sta sw=4 sts=4 tabstop=4(寫入設定檔.vimrc中) 設定一次縮排的距離是4個空格。
=(正常模式或者可視模式下使用命令) 按照縮排風格排版代碼。
<(可視模式下使用命令) 負值縮排一級。
>(可視模式下使用命令) 向右縮排一級。

文法高亮

filetype plugin on(寫入設定檔.vimrc中) 通常安裝的vim中已經加入了各種語言的文法高亮外掛程式,我們只需要開啟檔案類型相關的外掛程式就可以了。

快速定位

gd(正常模式下使用命令) 跳轉到局部變數定義處。
gD(正常模式下使用命令) 跳轉到全域標量定義處。
*(正常模式下使用命令) 搜尋並跳到下一個游標所在的單詞。
g*(正常模式下使用命令) 功能接近*,但是尋找的目標不帶\<和\>單詞分界符號。
#(正常模式下使用命令) 搜尋並跳到上一個游標所在的單詞。
g#(正常模式下使用命令) 功能接近#,但是尋找的目標不帶\<和\>單詞分界符號。

標記位置

m{a-zA-Z0-9} (正常模式下使用命令) 在當前位置製作一個標記,標記名字可以使用a-z或者A-Z之間的任一字元,例如輸入ma,就是將當前位置標記為a標記。注意a-z為單檔案標記,不可跨檔案使用,而A-Z0-9為全域標記,可以跨檔案使用。
‘{a-zA-Z0-9} (正常模式下使用命令) 跳轉到本檔案的標記上。
:marks [{a-zA-z0-9}] (正常模式下使用命令) 查看指定標記的內容,不寫標記號則查看所有。
:delm {a-zA-z0-9} (正常模式下使用命令) 刪除一個標記。

全文檢索搜尋

:vimgrep(正常模式下使用命令) 全文檢索搜尋,功能同grep命令,但是支援在vim進行多檔案跳轉定位。
使用方法:vimgrep Regex 檔案。檔案支援萬用字元,例如*.c代表所有的.c檔案。如果希望遞迴搜尋,可以使用**/*,表示搜尋所有的檔案。
:cl 列舉結果
:cc(正常模式下使用命令) 當前結果
:cn(正常模式下使用命令) 下一個結果
:cp(正常模式下使用命令) 上一個結果
:cw(正常模式下使用命令) 重新開啟搜尋結果視窗

多檔案編輯

vim f1 f2 …… fn(在shell下使用命令) 開啟多個檔案。
:e 檔案名稱(正常模式下使用命令) 在vim中開啟新檔案。
:ls(正常模式下使用命令) 所有開啟檔案清單。
:bn(正常模式下使用命令) 到下一個檔案。
:bp(正常模式下使用命令) 到上一個檔案。
:b# 或 ctrl-6(正常模式下使用命令) 到最近的前一個檔案。
set  autowriteall(寫入設定檔.vimrc中) 如果討厭每次開啟新檔案,vim喋喋不休的要求你儲存,那麼可以設定自動儲存。

多視窗編輯
:sp  檔案名稱(正常模式下使用命令) 橫向拆分視窗(多行視窗)。
:vsp 檔案名稱(正常模式下使用命令) 縱向拆分視窗(多列視窗)。
ctrl-w h(正常模式下使用命令) 將游標移動到左一個視窗。
ctrl-w j(正常模式下使用命令) 將游標移動到下一個視窗。
ctrl-w k(正常模式下使用命令) 將游標移動到上一個視窗。
ctrl-w l(正常模式下使用命令) 將游標移動到右一個視窗。
ctrl-w +(正常模式下使用命令) 當前視窗尺寸變大。
ctrl-w -(正常模式下使用命令) 當前視窗尺寸變小。
ctrl-w o(正常模式下使用命令) 只顯示當前視窗。

函數列表
taglist.vim(外掛程式) 列表外掛程式。
let Tlist_Use_Right_Window = 1(寫入設定檔.vimrc中) 如果希望列表在右側顯示,則加入這個配置,預設是左側。
:Tlist(正常模式下使用命令) 顯示函數列表。
d(在taglist視窗下使用) 從列表中刪除檔案。
+(在taglist視窗下使用) 展開檔案。
-(在taglist視窗下使用) 摺疊檔案。
=(在taglist視窗下使用) 摺疊所有檔案。
x(在taglist視窗下使用) 顯示或隱藏正常視窗。

檔案清單
NERD_tree.vim(外掛程式) 橫向拆分視窗(多行視窗)。
let NERDTreeWinPos = 'right'(寫入設定檔.vimrc中) 如果希望檔案樹在右側顯示,則加入這個配置,預設是左側。
:NERDTree(正常模式下使用命令) 顯示檔案清單。

函數跳轉
ctags(軟體,需要另外安裝) 產生多種語言tag檔案的軟體。
Ctags –R *.c(在shell下使用命令) 產生當前路徑所有.c檔案的tag,-R代表遞迴。
:ta 標記 或 [g] ctrl-] 列舉標籤(多個標籤)或者跳轉到標籤(單個標籤)。
ctrl-t 返回上一級。
:tags 列出標籤棧。

語法錯誤
:make(正常模式下使用命令) 執行外部make命令,並且顯示所有的編譯警告和錯誤,並且可以在vim中定位。
:cl 列舉結果
:cc(正常模式下使用命令) 當前結果
:cn(正常模式下使用命令) 下一個結果
:cp(正常模式下使用命令) 上一個結果
:cw(正常模式下使用命令) 重新開啟搜尋結果視窗

二進位檔案查看 (鑒於有同學理解出現分歧 將二進位查看更新為二進位檔案查看)

:範圍!xxd(正常模式下使用命令) 把指定範圍的部分轉化為二進位檔案閱讀方式。
:範圍!xxd -r(正常模式下使用命令) 把指定範圍的部分轉回字元閱讀方式。

字元集的編碼
let &termencoding=&encoding
set fileencodings=utf-8,gbk,cp936(寫入設定檔.vimrc中)
 加入多種字元編碼支援。
:set fileencoding(正常模式下使用命令) 設定檔案字元編碼。

補充

ctrl-p(插入模式下使用命令) 跳出補全菜單。
ctrl-n(在跳出補全菜單後) 下一個結果。
ctrl-p(在跳出補全菜單後) 上一個結果。
ctrl-y(在跳出補全菜單後) 選擇當前結果。
ctrl-x ctrl-f(插入模式下使用命令) 檔案名稱補全。
ctrl-x ctrl-i(插入模式下使用命令) 包含的標頭檔。
ctrl-x ctrl-](插入模式下使用命令) ctags(將在下文中介紹)符號補全。
ctrl-x ctrl-o(插入模式下使用命令) omni補全,需要設定omnifunc變數。

vim其他命令 (參考vi(vim)教程)

開啟檔案、儲存、關閉檔案:

vi filename       //開啟filename檔案
:w              //儲存檔案
:w vpser.net  //儲存至vpser.net檔案
:q             //退出編輯器,如果檔案已修改請使用下面的命令
:q!           //退出編輯器,且不儲存
:wq              //退出編輯器,且儲存檔案

插入文本或行:

a      //在當前游標位置的右邊添加文本
i       //在當前游標位置的左邊添加文本
A     //在當前行的末尾位置添加文本
I      //在當前行的開始處添加文本(非Null 字元的行首)
O     //在當前行的上面建立一行
o     //在當前行的下面建立一行
R    //替換(覆蓋)當前游標位置及後面的若干文本
J    //合并游標所在行及下一行為一行(依然在命令模式)

移動游標:

使用上下左右方向鍵

命令模式下:h   向左、j   向下 、k   向上、l  向右。
空格鍵 向右、Backspace  向左、Enter  移動到下一行首、-  移動到上一行首。

刪除:

x         //刪除當前字元
nx        //刪除從游標開始的n個字元
dd      //刪除當前行
ndd   //向下刪除當前行在內的n行
u       //撤銷上一步操作
U      //撤銷對當前行的所有操作

搜尋:

/vpser     //向游標下搜尋vpser字串
?vpser    //向游標上搜尋vpser字串
n           //向下搜尋前一個搜素動作
N           //向上搜尋前一個搜尋動作

跳轉:

n+        //向下跳n行
n-         //向上跳n行
nG        //跳到行號為n的行
G           //跳至檔案的底部

設定行號:

:set  nu     //顯示行號
:set nonu    //取消顯示行號

複製:

yy    //將當前行複製到緩衝區,也可以用 "ayy 複製,"a 為緩衝區,a也可以替換為a到z的任意字母,可以完成多個複製任務。
nyy   //將當前行向下n行複製到緩衝區,也可以用 "anyy 複製,"a 為緩衝區,a也可以替換為a到z的任意字母,可以完成多個複製任務。
yw    //複製從游標開始到詞尾的字元。
nyw   //複製從游標開始的n個單詞。
y^      //複製從游標到行首的內容。 

y$      //複製從游標到行尾的內容。
p        //粘貼剪下板裡的內容在游標後,如果使用了前面的自訂緩衝區,建議使用"ap 進行粘貼。
P        //粘貼剪下板裡的內容在游標前,如果使用了前面的自訂緩衝區,建議使用"aP 進行粘貼。

替換:

:s/old/new      //用new替換行中首次出現的old
:s/old/new/g         //用new替換行中所有的old
:n,m s/old/new/g     //用new替換從n到m行裡所有的old
:%s/old/new/g      //用new替換當前檔案裡所有的old

編輯其他資源:

:e otherfilename    //編輯檔案名稱為otherfilename的檔案。

修改檔案格式:

:set fileformat=unix   //將檔案修改為unix格式,如win下面的文字檔在linux下會出現^M。

客串答案

  c傳遞參數都是值傳遞的,指標的一個作用是為瞭解決實作類別似引用的效果,另外,使用指標可以直接操作記憶體!

  孫鶴同學的解釋:

  每個線程有固定大小的棧,通常主線程的棧預設一般是8M,用指標去引用記憶體,往往是在使用堆記憶體,棧是有限的,並且受生存期影響,所以用堆的情況要比用棧更多,有些東西生存期很長,超過一個函數的調用,那麼就需要用堆記憶體。

 本篇到此 希望對大家有協助

 

 

 

 

:http://www.vim.org/scripts/script.php?script_id=273

“Tag List" 外掛程式是一個為VIM編寫的原始碼瀏覽外掛程式,需要ctags的支撐 ,直接可以在左邊列出函數列表,全域參數列表,宏。(可以排序)

1、下載taglist.zip檔案,解壓到$HOME/.vim目錄下,或者$HOME/vimfiles或$VIM/vimfiles目錄下,在這一步後,你應該有這兩個檔案(目錄結構應該被保留)

         plugin/taglist.vim - taglist 外掛程式檔案
         doc/taglist.txt    -  文檔(協助)檔案

2. 進入 $HOME/.vim/doc 或者 $HOME/vimfiles/doc 或者 $VIM/vimfiles/doc 
    目錄, 運行Vim,在命令列模式下運行 ":helptags ." 命令處理taglist協助檔案,如果沒有這上步,你將不能得到taglist協助提示

3、如果ctags工具不在你的PATH搜尋路徑中,你需要在$HOME/.vimrc中設定Tlist_Ctags_Cmd 變數指出ctags的路徑。

4、如果你啟動並執行是terminal/console版本的VIM,以及terminal 不支援改變視窗的寬度,你需要在$/HOME/.vimrc設定    'Tlist_Inc_Winwidth'  變數為0,

5、重啟vim

6、你可以在vim的命令列模式中使用 ":TlistToggle" 命令開啟/關閉taglist視窗,你可以使用 ":help taglist" 命令得到更多的關於使用taglist外掛程式的資訊

 

 

NERDTree的安裝和使用2009-09-03 12:47
NERDTree來自:
http://www.vim.org/scripts/script.php?script_id=1658

A,安裝。
1,解壓後,拷貝plugin/NERD_tree.vim檔案到~/.vim/plugin下。拷貝doc/NERD_tree.txt檔案到~/.vim/doc下

2,開啟vim,載入文檔。
:helptags ~/.vim/doc/NERD_tree.txt

以後查看協助只要 :h NERD_tree.txt 即可。

B,常用使用。
1,標籤。
1 - 1,開啟一個目錄。 :NERDTree ~/share/abc
1 - 2,標記它。 :Bookmark your_mark_name_of_abc
1 - 3,開啟這個標籤。 :NERDTree your_mark_name_of_abc  效果同 1 - 1。
2,快速協助
游標在NERDTree的目錄工作區時候,按?鍵。 

 

去除高亮

方法一::nohlsearch
方法二:/awertgvcxz (尋找一個肯定不存在的字串)
設定了高亮搜尋(:set hlsearch)以後,可以通過 :set nohlsearch 永久地關閉高亮
顯示,也可以通過 :nohlsearch 暫時關閉高亮顯示,下次搜尋時將自動回復高亮。轉自:http://9esuluciano.javaeye.com/blog/137333
相關文章

聯繫我們

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