亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1296 | 回復: 0
打印 上一主題 下一主題

VIM編程(1)(2)(3) [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2008-12-16 22:12 |只看該作者 |倒序瀏覽
VIM編程(1)
進行基本設置
1)先創(chuàng)立三個個人基本配置路徑
~/.vim/plugin~/.vim/doc~/.vim/syntax$ mkdir ./.vim/{plugin,doc,syntax} –p
$touch ~/.vimrc
2) 中文幫助手冊的安裝
http://vimcdoc.sf.net       (English)http://vcd.gro.clinux.org    (中文)下載的文件包應該是類似這樣的: vimcdoc-1.5.0.tar.gz
$tar xvf vimcdoc-1.6.0.tar.tar
$ cd vimcdoc-1.6.0/
$ ./vimcdoc.sh –i
$ echo "set helplang=cn" >> ./.vimrc
3)修改~/.vimrc
"基本配置
set wildmenu
"增強模式中的命令行自動完成操作
set foldmethod=manual
"設定折疊方式為手動
set helplang=cn
"設置幫助的語言為中文
set cin   
"實現(xiàn)C程序的縮進
set sw=4   
"設計(自動) 縮進使用4個空格
set sta   
"插入時使用'shiftwidth'
set backspace=2
"指明在插入模式下可以使用刪除光標前面的字符
syntax enable
"設置高亮關(guān)鍵字顯示
set nocompatible
"去掉討厭的有關(guān)vi一致性模式,避免以前版本的一些bug和局限
set number
""顯示行號
filetype on
"檢測文件的類型
map  :q
set history=1000
""記錄歷史的行數(shù)
set background=dark
"背景使用黑色
syntax on
""語法高亮度顯示
set autoindent
set smartindent
"上面兩行在進行編寫代碼時,在格式對起上很有用;
""第一行,vim使用自動對起,也就是把當前行的對起格式應用到下一行;
"第二行,依據(jù)上面的對起格式,智能的選擇對起方式,對于類似C語言編寫上很有用
""第一行設置tab鍵為4個空格,第二行設置當行之間交錯時使用4個空格
set tabstop=4
set shiftwidth=4
set showmatch
"設置匹配模式,類似當輸入一個左括號時會匹配相應的那個右括號
set ruler
""在編輯過程中,在右下角顯示光標位置的狀態(tài)行
set incsearch
"查詢時非常方便,如要查找book單詞,當輸入到/b時,會自動找到第一
""個b開頭的單詞,當輸入到/bo時,會自動找到第一個bo開頭的單詞,依
"次類推,進行查找時,使用此設置會快速找到答案,當你找要匹配的單詞
""時,別忘記回車。
"設置全選快捷鍵
map  ggVG
"設置tab的快捷鍵
map  :tabnew .
map  :tabnext
"F11為新建一個標簽,Shirt+F11為跳轉(zhuǎn)標簽
"F12是注釋掉改行,S-F12是去掉改行的注釋
map  :A
map  I//
map!  I//i
map  02x
map!  02x
"設置格式化源代碼快捷鍵
map  :call FormartSrc()
"設置編譯快捷鍵
map  :make
map  :make clean
map  :cw
map  :ccl
map  :cn
map  :cp
map  :call CompileRun()
map  :call Debug()
"F5為make,Crtl+F5為make clean
"F6為quickfix,查看詳細信息, Ctrl+F6關(guān)閉詳細信息
"F7為下一個結(jié)果,Ctrl+F7為上一個結(jié)果
"F8為編譯和運行單個C程序、Shift+F8為調(diào)試
map  o
"設置建立新行但是不插入
""""""""""""""""""""""""""""""
" Tag list (ctags)
""""""""""""""""""""""""""""""
set tags=./tags
let g:winManagerWindowLayout='FileExplorerTagList'
map  :WMToggle:q
map  :WMToggle
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" cscope setting
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
if has("cscope")
    set csprg=/usr/local/bin/cscope
"設置cscope程序的位置
    set csto=1
"選項決定是先查找tag文件還是先查找cscope數(shù)據(jù)庫。設置為0則先查找cscope數(shù)據(jù)庫,設置為1先查找tag文件。我通常設置為1,因為在tag文
"件中查找到的結(jié)果,會把最佳匹配列在第一位。
    set cst
"如果你想VIM同時搜索tag文件以及cscope數(shù)據(jù)庫,設置cscopetag選項
    set nocsverb
    set cscopequickfix=s-,c-,d-,i-,t-,e-
"這個是設定是否使用 quickfix 窗口來顯示 cscope 結(jié)果。
" add any database in current directory
    if filereadable("cscope.out")
        cs add cscope.out
    endif
    set csverb
endif
"設置快捷鍵:
nmap s :cs find s =expand("")
nmap g :cs find g =expand("")
nmap c :cs find c =expand("")
nmap t :cs find t =expand("")
nmap e :cs find e =expand("")
nmap f :cs find f =expand("")
nmap i :cs find i ^=expand("")$
nmap d :cs find d =expand("")
filetype plugin indent on
:inoremap ( ()i
:inoremap ) =ClosePair(')')
:inoremap { {}i
:inoremap } =ClosePair('}')
:inoremap [ []i
:inoremap ] =ClosePair(']')
autocmd BufNewFile * normal G
"新建文件后,自動定位到文件末尾
autocmd BufNewFile *.cpp,*.sh,*.java exec ":call SetTitle()"
"新建.cpp,.java,.sh,
"定義函數(shù)SetTitle,自動插入文件頭
func SetTitle()
"如果文件類型為.sh文件
if &filetype == 'sh'
call setline(1, "\#########################################################################")
call append(line("."), "\# Author: Futuredaemon")
call append(line(".")+1, "\# Created Time: ".strftime("%c"))
call append(line(".")+2, "\# File Name: ".expand("%"))
call append(line(".")+3, "\# Description: ")
call append(line(".")+4, "\#########################################################################")
call append(line(".")+5, "\#!/bin/bash")
call append(line(".")+6, "")
else
call setline(1, "/*************************************************************************")
call append(line("."), " Author: Futuredaemon")
call append(line(".")+1, " Created Time: ".strftime("%c"))
call append(line(".")+2, " File Name: ".expand("%"))
call append(line(".")+3, " Description: ")
call append(line(".")+4, " ************************************************************************/")
call append(line(".")+5, "")
endif
endfunc
"定義CompileRun函數(shù),用來調(diào)用進行編譯和運行
func CompileRun()
exec "w"
"C程序
if &filetype == 'c'
exec "!gcc % -g -o % cscope.files
$cscope –bq
這個命令會生成三個文件:cscope.out, cscope.in.out, cscope.po.out。其中cscope.out是基本
符號索引,后兩個文件是使用"-q"選項生成的,可以加快cscope的索引速度。在缺省情況下
cscope在生成數(shù)據(jù)庫后就會進入它自己的查詢界面,我們一般不用這個界面,所以使用
“-b”選項。
9)c/h文件間相互切換 -- 插件: A
下載:http://www.vim.org/scripts/script.php?script_id=31
將a.vim 放到 ~/.vim/plugin 文件夾中
10)自動補全
~/.vimrc文件中增加下面兩句:
請確定你的Ctags 5.6已經(jīng)安裝好, 并且生成的tags文件已經(jīng)可以用了,用vim打開一個
程主源文件后任意變量、宏、函數(shù)、API等都可以自動補全(用Tab鍵)
11)astyle代碼格式整理軟件
$sudo apt-get install astyle
               
               
               
               
               
               
               
VIM編程(2)
1.移動光標
在當前行里面有效的移動光標,注意這些字母都可以配合刪除、移動等操作。
    fx:移動光標到當前行的下一個 x 處。很明顯,x 可以是任意一個字母,而且你可以使用 ; 來重復你的上一個 f 命令。
    tx:和上面的命令類似,但是是移動到 x 的左邊一個位置。(這真的很有用)
    Fx:和 fx 類似,不過是往回找。
    w:光標往前移動一個詞。
    b:光標往后移動一個詞。
    0:移動光標到當前行首。
    ^:移動光標到當前行的第一個字母位置。
    $:移動光標到行尾。
    ):移動光標到下一個句子。
    ( :移動光標到上一個句子。
在整個文件里面有效移動光標
    :向下移動一屏。
    :向上移動一屏。
    G:到文件尾
    numG:移動光標到指定的行(num)。(比如 10G 就是到第 10 行)
gg:到文件首
    H:移動光標到屏幕上面
    M:移動光標到屏幕中間
    L:移動光標到屏幕下面
    *:讀取光標處的字符串,并且移動光標到它再次出現(xiàn)的地方。
#:和上面的類似,但是是往反方向?qū)ふ摇?br /> j 向下
k 向上        k
l 向右     h      l
h 向左        j
      
      
2.查找
/pattern:從光標開始處向文件尾搜索pattern
?pattern:從光標開始處向文件首搜索pattern
n:在同一方向重復上一次搜索命令
N:在反方向上重復上一次搜索命令
:s/源串/目標串/g                                   替換當前行中所有符合條件的字符串
:行號1,行號2s/源串/目標串/g                  在指定行中進行替換
:%s/源串/目標串/g                                 全文替換
ma:在當前光標的位置標記一個書簽,名字為 a。書簽名只能是小寫字母。你看不見書簽的存在,但它確實已經(jīng)在那里了。
`a:到書簽 a 處。注意這個不是單引號,它一般位于大部分鍵盤的 1 的左邊。
`.:到你上次編輯文件的地方。這個命令很有用,而且你不用自己去標記它。
:marks       查看標記列表
vim中常用的找出行數(shù)的命令:
    Ctrl+g         在最后一行中顯示光標所在位置的行數(shù)及文章的總行數(shù)
    nG         將光標移至n行
    r           修改光標所在字符
    R          修改光標所在位置的字符,可以一直替換字符,知道按下ESC鍵
u            表示復原功能
U                  取消對行所作的所有改變
重復執(zhí)行上一命令
    Z+Z           連續(xù)按下兩次Z,文件將保存并退出vim
        重做
3.復制粘貼剪切
有效的移動大段的文本
v:按字符選擇。
V:按行選擇。這在你想拷貝或者移動很多行的文本的時候特別有用。
:按塊選擇。
在選擇模式的時候使用上面所述的方向鍵和命令(motion)。比如,vwww,會高亮光標前面的三個詞。Vjj 將會高亮當前行以及下面兩行。
一旦你高亮了選區(qū),你或許想進行一些操作:
    d:剪貼選擇的內(nèi)容到剪貼板。
    y:拷貝選擇的內(nèi)容到剪貼板。
    c:剪貼選擇的內(nèi)容到剪貼板并且進入插入模式。
如果你很清楚的知道你想拷貝或者剪切什么,那你根本就不需要進入可視選擇模式。這樣也會節(jié)省時間:
    d{motion}:剪切 motion 命令跨過的字符到剪貼板。比如,dw 會剪切一個詞而 dfS 會將從當前光標到下一個 S 之間的字符剪切至剪貼板。
    y{motion}:和上面類似,不過是拷貝。
    c{motion}:和 d{motion} 類似,不過最后進入插入模式。
    dd:剪切當前行。
    yy:拷貝當前行。
    cc:剪切當前行并且進入插入模式。
    D:剪切從光標位置到行尾到剪貼板。
    C:和 D 類似,最后進入插入模式。
    x:剪切當前字符到剪貼板。
    :和x類似,不過最后進入插入模式。
    y+w    復制光標所在的位置到整個單詞所在的位置
使用多重剪貼板

多編輯器都只提供了一個剪貼板。VIM 有很多。剪貼板在 VIM
里面被稱為寄存器(Registers)。你可以列出當前定義的所有寄存器名和它們的內(nèi)容,命令為":reg"。最好使用小寫字母來作為寄存器的名稱,因
為大寫的有些被 VIM 占用了。使用寄存器的命令為雙引號 "。
比如:我們要拷貝當前行到寄存器 k。你應該按 "kyy。(你也可以使用 V"ky。為什么這樣也可以呢?)現(xiàn)在當前行應該已經(jīng)存在了寄存器 k 里面直到你又拷貝了一些東西進入寄存器 k,F(xiàn)在你可以使用命令 "kp 來粘貼寄存器 k 里面的內(nèi)容到你想要的位置。
"ayy    將當前行復制到寄存器 a 中
"ap     將寄存器 a 中的內(nèi)容粘貼到光標之后
l          :registers 查看所有寄存器的內(nèi)容
l          通常情況下,寄存器 + ( " + Shift+= )對應X下的剪貼板。您在其它程序中復制的內(nèi)容,可以使用 "+p 粘貼到Vim中;您在Vim中,可以使用 "+y 將內(nèi)容復制到剪貼板,再粘貼到其它程序中
l          沒有指定寄存器時,Vim使用“無名寄存器”存儲內(nèi)容
4.刪除
vim中常用的刪除文本命令:
    d+d              連按兩次d,可將光標所在的行刪除,若連續(xù)刪除,可以按住d不放
    d+w            刪除光標所在的單詞,若是光標在兩字之間,則刪光標后的一個詞
    D              將光標所在行后面所有的單詞刪除
    x                將光標所在位置后一個字符刪除
    X              將光標所在位置前一個字符刪除
5.插入
vim中命令行模式切換到輸入模式,進行插入:
    * i:在當前字符的左邊插入
    * I:在當前行首插入
    * a:在當前字符的右邊插入
    * A:在當前行尾插入
    * o:在當前行下面插入一個新行
    * O:在當前行上面插入一個新行
*
c{motion}:刪除 motion
命令跨過的字符,并且進入插入模式。比如:c$,這將會刪除從光標位置到行尾的字符并且進入插入模式。ct!,這會刪除從光標位置到下一個嘆號(但不包
括),然后進入插入模式。被刪除的字符被存在了剪貼板里面,并且可以再粘貼出來。
例如:cw:刪除光標所在處的詞并插入。(c —— change)
    * d{motion}:和上面差不多,但是不進入插入模式。
6.文件操作
vim最后行模式主要的操作命令:
    e       創(chuàng)建新的文件
    n       加載新的文件
    w     寫文件,它是保存到臨時文件中,直接退出,并沒有保存到文件中的
    w!     如果想寫只讀文件,使用它強制寫入文件
    q!     不問你是否保存文件,強制退出
set   可以設置vim的某些特性。取消設置,使用 set none
7.宏
您可以將一系列的操作錄制為一個宏,然后執(zhí)行它
q    開始錄制宏。宏名稱為一個字符
q             錄制中按下“q”鍵,結(jié)束錄制
@   執(zhí)行宏
可以使用 :registers(寄存器列表) 命令查看已記錄的宏
               
               
               
VIM編程(3)
準備標簽
$ctags -R
生成一個cscope的數(shù)據(jù)庫, 在項目的根目錄運行下面的命令:
$ find . –type f > cscope.files
$cscope –bq
Winmanager文件操作技巧:
Winmannager:
      打開關(guān)閉
   顯示幫助
      如果光標下是目錄, 則進入該目錄; 如果光標下文件, 則打開該文件
-          返回上級目錄
c          切換vim 當前工作目錄正在瀏覽的目錄
d         創(chuàng)建目錄
D         刪除目錄或文件
i          切換顯示方式
R         文件或目錄重命名
s          選擇排序方式
x         定制瀏覽方式, 使用你指定的程序打開該文件
Cscope幫助閱讀代碼
進入vim后第一件事是要把剛才生成的cscope文件導入到vim中來, 用下面的命令:
:cs add /XXX/cscope.out /XXX
以調(diào)用“F1+字母”命令進行查找了。VIM支持8種cscope的查詢功能,如下:
s: 查找C語言符號,即查找函數(shù)名、宏、枚舉值等出現(xiàn)的地方
g: 查找函數(shù)、宏、枚舉等定義的位置,類似ctags所提供的功能
d: 查找本函數(shù)調(diào)用的函數(shù)
c: 查找調(diào)用本函數(shù)的函數(shù)
t: 查找指定的字符串
e: 查找egrep模式,相當于egrep功能,但查找速度快多了
f: 查找并打開文件,類似vim的find功能
i: 查找包含本文件的文件
如果自動跳轉(zhuǎn)的位置你不滿意, 想看其他的結(jié)果, 可以用F6打開QuickFix窗口:
Shift+F6關(guān)閉QuickFix窗口,Crtl+o返回上一級。
Taglist的基本操作
按下F3就會打開taglist窗口了,在其中可以使用下面的快捷鍵:
          跳到光標下tag所定義的位置,用鼠標雙擊此tag功能也一樣
o             在一個新打開的窗口中顯示光標下tag
       顯示光標下tag的原型定義
u             更新taglist窗口中的tag
s             更改排序方式,在按名字排序和按出現(xiàn)順序排序間切換
x             taglist窗口放大和縮小,方便查看較長的tag
+             打開一個折疊,同zo
-             將tag折疊起來,同zc
*             打開所有的折疊,同zR
=             將所有tag折疊起來,同zM
[[            跳到前一個文件
]]            跳到后一個文件
q             關(guān)閉taglist窗口
          顯示幫助
編程常用技巧:
Tab                自動補全
Ctrl+A           全選
Shift+o          建立新行但是不插入
%              跳轉(zhuǎn)到配對的括號去
[[                跳轉(zhuǎn)到代碼塊的開頭去(但要求代碼塊中'{'必須單獨占一行)
>>               縮進所有選擇的代碼
            光標會自動跳到XXXX()函數(shù)的定義處。
,           跳回到函數(shù)被調(diào)用的地方了, 變量, 結(jié)構(gòu), 宏, 等等, 都可以的。
Shift+qq         快速不保存退出vi(所有的標簽都會關(guān)閉)
F10                快速打開同文件夾下的源文件,查找文件名可以用/
編譯:
F5                        Make
Shift+F5               Make clean
F6                        列出所有編譯信息
Shift+F6               關(guān)閉調(diào)試信息
F7                        切換到下一個結(jié)果
Shift+F7               切換到上一個結(jié)果
F8                        編譯并運行單個文件
Shift+F8               調(diào)試源代碼
      \rc                    保存并且編譯            
      \rl                    鏈接                       
      \rr                           運行                        
      \ra                   輸入運行時的參數(shù)      
      \rm                  make                    
      \rg                   輸入make時的參數(shù)      
      \rp                   代碼檢查  splint            
      \ri                   輸入代碼檢查splint的參數(shù)
      \rd或者Ctrl+F5         源代碼
      \rs                   查看這個Csupport的設置
自動補全:
Ctrl+X Ctrl+L
整行補全
Ctrl+X Ctrl+N
根據(jù)當前文件里關(guān)鍵字補全
Ctrl+X Ctrl+K
根據(jù)字典補全
Ctrl+X Ctrl+T
根據(jù)同義詞字典補全
Ctrl+X Ctrl+I
根據(jù)頭文件內(nèi)關(guān)鍵字補全
Ctrl+X Ctrl+]
根據(jù)標簽補全
Ctrl+X Ctrl+F
補全文件名
Ctrl+X Ctrl+D
補全宏定義
Ctrl+X Ctrl+V
補全vim命令
Ctrl+X Ctrl+U
用戶自定義補全方式
Ctrl+X Ctrl+S
拼寫建議
Csupport(c.vim)的常用結(jié)構(gòu)補全操作:
  -- 常用結(jié)構(gòu) ---------------------------------------------------------
  \sd       do { } while                       
  \sf       for      
  \sfo      for { }                           
  \sif      if { }     
  \sife     if { } else { }
  \swh      while { }                           (n,v,i)
  \ss       switch                              (n,v,i)
  \sc       case                                (n,i)
  \s{       { }                                 (n,v,i)
  -- 預處理命令 -------------------------------------------------------
  \p                         (n,i)
  \p"       #include ""                         (n,i)
  \pd       #define                             (n,i)
  \pu       #undef                              (n,i)
  \pie      #if  #else #endif                   (n,v,i)
  \pid      #ifdef #else #endif                 (n,v,i)
  \pin      #ifndef #else #endif                (n,v,i)
  \pind     #ifndef #def #endif                 (n,v,i)
  \pi0      #if 0 #endif                        (n,v,i)
  \pr0      remove #if 0 #endif                 (n,i)
  \pe       #error                              (n,i)
  \pl       #line                               (n,i)
  \pp       #pragma                             (n,i)
  -- 常用短語 -------------------------------------------------------------
  \im       main()                              (n,v,i)
  \i0       for( x=0; x
  \in       for( x=n-1; x>=0; x-=1 )            (n,v,i)
  \ie       enum   + typedef                    (n,i)
  \is       struct + typedef                    (n,i)
  \iu       union  + typedef                    (n,i)
  \ip       printf()                            (n,i)
  \isc      scanf()                             (n,i)
  \ica      p=calloc()                          (n,i)
  \ima      p=malloc()                          (n,i)
  \isi      sizeof()                            (n,v,i)
  \ias      assert()                            (n,v)
  -- C++ ----------------------------------------------------------------
  \+c       class                               (n,i)
  \+cn      class (using new)                   (n,i)
  \+ci      class implementation                (n,i)
  \+cni     class (using new) implementation    (n,i)
  \+mi      method implementation               (n,i)
  \+ai      accessor implementation             (n,i)
  \+tc      template class                      (n,i)
  \+tcn     template class (using new)          (n,i)
  \+tci     template class implementation       (n,i)
  \+tcni    template class (using new) impl.    (n,i)
  \+tmi     template method implementation      (n,i)
  \+tai     template accessor implementation    (n,i)
  \+tf      template function                   (n,i)
  \+ec      error class                         (n,i)
  \+tr      try ... catch                       (n,v,i)
  \+ca      catch                               (n,v,i)
  \+c.      catch(...)                          (n,v,i)
               
               
               

本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/19742/showart_1724351.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP