vim的一個較全的介紹

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 正則表達式 文件。文件支持通配符,例如*.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      //在當前行的開始處添加文本(非空字符的行首)
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 暫時關閉高亮顯示,下次搜索時將自動恢復高亮。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章