日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

vim中多標簽和多窗口的使用

 joy_chen 2014-05-13
1、打開多個窗口
打開多個窗口的命令以下幾個:
橫向切割窗口
:new+窗口名(保存后就是文件名) 
:split+窗口名,也可以簡寫為:sp+窗口名
縱向切割窗口名
:vsplit+窗口名,也可以簡寫為:vsp+窗口名
 
    vim -o file1 file2 ...  #水平打開多窗口,
    vim -O file1 file2 ...  #垂直打開多窗口,
    vim -d file1 file2 ...  #垂直打開多窗口,并且進行比較
    vimdiff file1 file2 ..  #等同于上一句
 
2、關閉多窗口
可以用:q!,也可以使用:close,最后一個窗口不能使用close關閉。使用close只是暫時關閉窗口,其內容還在緩存中,只有使用q!、w!或x才能真能退出。
 關閉窗口
     q  或 close   #關閉當前窗口
     only          #保留當前窗口,關閉其它所有窗口
     qall(qa)          #退出所有窗口
     wall          #保存所有窗口
3、窗口切換
:ctrl+w+j/k,通過j/k可以上下切換,或者:ctrl+w加上下左右鍵,還可以通過快速雙擊ctrl+w依次切換窗口。
4、窗口大小調整
縱向調整
:ctrl+w + 縱向擴大(行數增加)
:ctrl+w - 縱向縮小 (行數減少)
:res(ize) num  例如::res 5,顯示行數調整為5行
:res(ize)+num 把當前窗口高度增加num行
:res(ize)-num 把當前窗口高度減少num行
橫向調整
:vertical res(ize) num 指定當前窗口為num列
:vertical res(ize)+num 把當前窗口增加num列
:vertical res(ize)-num 把當前窗口減少num列
5、給窗口重命名
:f file
6、vi打開多文件
vi a b c
:n 跳至下一個文件,也可以直接指定要跳的文件,如:n c,可以直接跳到c文件
:e# 回到剛才編輯的文件
7、文件瀏覽
:Ex 開啟目錄瀏覽器,可以瀏覽當前目錄下的所有文件,并可以選擇
:Sex 水平分割當前窗口,并在一個窗口中開啟目錄瀏覽器
:ls 顯示當前buffer情況
8、vi與shell切換
:shell 可以在不關閉vi的情況下切換到shell命令行
:exit 從shell回到vi
9. 多標簽
直接在編輯的時候輸入:
vim -p 要編輯的文件名
如vim -p * 就是編輯當前目錄的所有文件
多個標簽間進行切換時向右切換gt,向左切換用gT
在編輯的時候想增加一個標簽就可以:tabnew filename
:tabc       關閉當前的tab
:tabo       關閉所有其他的tab
:tabs       查看所有打開的tab
:tabp      前一個
:tabn      后一個

1. vim基本用法:模式,光標移動,查找替換,復制粘貼刪除


1.1 幫助

:help

:help command


1.2 模式切換
    命令模式     Esc, Ctrl-c, 配合光標移動可用Alt-h,Alt-j,Alt-k,Alt-l
    編輯模式     i 在當前位置編輯 , a在當前位置后面插入,I在行首插入,A在行尾插入,o添加新行
    可視化模式   v塊模式,V行塊模式,Ctrl-v列塊模式

下面的操作方式和快捷鍵基本上都是在命令模式下的,編輯模式按鍵一般只能輸入文字。

1.3 輸入方式
    直接按鍵盤編輯     如i
    :command         如:set nu
    執(zhí)行shell命令     :!command  如:!pwd


1.4 撤銷,重做
    撤銷上一次的編輯操作     u, U
    撤銷未保存的全部編輯操作,重新載入文件 :e!

    重做上一次撤銷的編輯操作 Ctrl-r

 

1.5 保存,退出

    保存文件 :w

    關閉文件 :q

    保存并關閉文件 :wq

    不保存強制關閉文件 :q!

    關閉所有文件退出 :qa


1.6 移屏

        下翻頁 Ctrl-f

        上翻頁 Ctrl-b

        下翻行 Ctrl-e

        上翻行 Ctrl-y

 

1.7 光標定位快捷鍵
    到指定行  :行號,行號G
     到文件頭 1G
     到文件尾 G
     左下上右 h,j,k,l
     下一個字 w,上一個字 b   
     到行首   ^
     到行尾   $
     行尾插入 A,添加空行 o

1.8 在函數中定位光標
[[  轉到上一個位于第一列的“{”
]]  轉到下一個位于第一列的“{”
  轉到上一個空行
  轉到下一個空行


1.9 查找當前文件

n,N       查找到key后,n跳到后一個位置,N跳到前一個位置

* , #     當前光標所在的詞key作為關鍵字,精確匹配查找,相當于/\<key\>

g*, g#    當前光標所在的詞key作為關鍵字,忽略大小寫查找,相當于/key

/key      從當前光標位置開始向后查找key

?key      從當前光標位置開始向前查找key

/\<key\>,?\<key\>  精確匹配查找key

 

1.10 批量替換:%s/要被取代的字串/新的字串/g

 

1.11 復制粘貼刪除
      復制行 yy    復制n行 nyy
      粘貼行 p
      刪除行 dd    刪除n行 ndd
      刪除字 dw    復制字  yw

      可視塊選擇復制:
             進入可視化模式 v,V,Ctrl-v
             可視化模式下,方向鍵選擇塊
             按y復制選擇的塊


2. 配置:顯示和編輯樣式,配置文件


2.1 顯示和編輯樣式
     在狀態(tài)行顯示文件名set statusline+=%f,set laststatus=2
     顯示行號 :set nu    隱藏行號 :set nonu
     自動縮進 :set autoindent
     c風格的縮進 :set cindent
     顯示斷行符等特殊符號 :set list

2.2 配置文件
    vim自帶的配置文件  /etc/vimrc
    用戶自定義的配置文件 ~/.vimrc,自己創(chuàng)建。把自己的配置都寫這里。
    語法高亮 syntax on


 

3. vim用法: 多行注釋,多文件,多窗格編輯,保存會話


3.1 多行注釋
多行注釋按鍵操作:
      注釋:Ctrl-v 進入列編輯模式,向下或向上移動光標,把需要注釋的行的開頭標記起來,然后按大寫的I,再插入注釋符比如"#",按Esc,就會全部注釋了。
      刪除:Ctrl-v 進入列編輯模式,向下或向上移動光標,選中注釋部分,按d,就會刪除注釋符號。

多行注釋使用替換命令:
            :%s/^/\/\//g來在全部內容的行首添加//號注釋
             :2,50s/^/\/\//g在2~50行首添加//號注釋
            反過來替換既是刪除操作。

3.2 編輯多個文件
    打開多個文件 $ vim filename1 filename2
    切換文件 :prev,:next,:prev!,:next!,first,last  ,只要切換出來過,就在緩沖區(qū)里了
    顯示打開的文件列表 :args

    打開新的緩沖區(qū)看別的文件 :e filename
    切換最近的兩個文件(緩沖區(qū)) :e# 或 Ctrl-^
    顯示緩沖區(qū)的文件列表 :buffers
    關閉其中一個(當前)文件 :bd,:bd 1,:bd 2,序號按:buffers顯示的
    切換到某個文件 :b 1,:b 2,序號按:buffers顯示的
    切換到上一個文件 :bp,:bprev
    切換到下一個文件 :bn,:bnext   

3.3 多窗口編輯

分割窗口
    水平分割
       :sp //當前編輯的文件分割一個窗口再打開
       :spfilename //分割一個窗口出來,打開文件filename
       :split
       :new

    垂直分割
       :vsplit
       :vnew
切換窗口
    Ctrl-w 上下左右鍵
    Ctrl-w h,j,k,l     //h左,j下,k上,l右  //Ctrl按下,按w松開,Ctrl松開,按h

移動窗口
    Ctrl-W H,J,K,L     //H左,J下,K上,L右  //鎖定CapsLock就可以得到大寫

改變窗口大小
    水平最大化當前窗口    Ctrl-w Ctrl-- //這個是特殊的:Ctrl按下,按w松開,再按-松開,最后松開Ctrl
    等分窗口    Ctrl-w =
    調整窗口大小    Ctrl-w +增加窗口大小一行,Ctrl-w -減少窗口大小一行

顯示命令歷史窗口
    q:或q/,退出:q

讓當前文件占據整個窗口
    Ctrl-w o

關閉其中一個(當前)窗口
    Ctrl-w c  //其實文件還在buffers中

讓用緩沖區(qū)的文件來到分割窗口
    Ctrl-w Ctrl-^  //保持Ctrl按下


3.4 保存所在目錄的環(huán)境和狀態(tài),會話

如果在vim中已經打開了好多窗口,想要保持這個環(huán)境,等下次編輯瀏覽時再載入。

:help mksession         查看mksession的幫助 

:mksession!             保存當前的vim狀態(tài),在當前目錄會產生一個會話文件Session.vim。

$ vim -S                vim會自動載入當前目錄的會話文件Session.vim,之前:mksession! 保持的狀態(tài)又回來啦。

:mksession! work.vim    保存當前的vim狀態(tài)到會話文件work.vim

$ vim -S work.vim       vim載入會話文件work.vim,之前:mksession! work.vim保持的狀態(tài)又回來啦。

 

也可在vim中手動載入會話:

:source Session.vim     載入Session.vim保持的狀態(tài)。

:source work.vim        載入work.vim保持的狀態(tài)。

 

配置自動保存和載入會話

這個配置好后,第一次在要自動保持會話的目錄下進入vim,用命令:mksession! project.vim。以后使用直接在當前目錄$vim即可。

如果想打開和關閉vim時自動保存和載入會話,可以在配置文件~/.vimrc中加入:

" auto save and load session
let g:
let g:OrigPWD=getcwd()
if filereadable(g:AutoSessionFile)
        if argc()==0
                au VimEnter * call EnterHandler()
                au VimLeave * call LeaveHandler()
        endif
endif
function! LeaveHandler()
        exec "mks! ".g:OrigPWD."/".g:AutoSessionFile
endfunction
function! EnterHandler()
        exe "source ".g:AutoSessionFile
endfunction
參考vim中session自動保存及加載


4. 瀏覽代碼:ctags,Taglist,NERD_tree,cscope


4.1 熱門vim腳本
http://vim. 下 scripts->browse all

 

4.2ctags跳轉到定義處

ctags是一個用來產生代碼索引文件的插件,支持很多語言。

可以用Ctrl-]命令跳轉到函數的定義處,也可以用命令來搜索函數的定義,非常好用。

安裝ctags
    如果沒有安裝ctags,fedora的shell下可以用 # yum -y install ctags安裝。

創(chuàng)建tags文件
   shell下,在需要創(chuàng)建tags文件的目錄下用 $ ctags -R,那么整個目錄下的函數,宏,變量,類,結構等都加上了tags。

使用ctags
   按鍵跳轉Ctrl-],Ctrl-t,Ctrl-o
      在創(chuàng)建tags文件的目錄下,用vim打開的文件中,光標移到一個被調用的函數名上,按Ctrl-]就會自動跳轉到該函數的定義處,Ctrl-t返回。

   命令跳轉 :tags  functionname
      在用vim打開的文件中,用命令:tags  functionname。:ta functionname

   打開時搜索并跳轉
      vim -t functionname

   多個匹配tags時跳轉

      :tnext,:tprev,:tn,:tp

 

4.3Taglist函數和變量列表
Taglist是vim的源代碼瀏覽插件,可以以窗口方式查看函數列表,變量列表等。
Taglist的實現(xiàn)依賴ctags。

安裝Taglist
    1. 在 http://www.vim-taglist./screenshots.html 下載最新版的Taglist軟件包。
    2. 在個人用戶目錄下創(chuàng)建  .vim目錄,將taglist_**.zip中的內容解壓到該目錄。
    3. 進入Vim,在命令模式下輸入命令 "  helptags ~/.vim/doc"即可完成Taglist的安裝。
    4. 輸入命令“:Tlist”檢查是否安裝成功。


修改配置文件

    let Tlist_File_Fold_Auto_Close=1 除了當前窗口顯示的文件,其它文件折疊。
    let Tlist_Exit_OnlyWindow=1  如果Tlist是最后一個窗口,自動退出vim。

使用 :Tlist
    打開 Vim 之后,使用命令 :Tlist激活 Taglist窗口; 按Ctrl-w w在兩個窗口來回跳轉。

    :Tlist

    :TlistToggle

Tlist快捷鍵
    在Tlist列表窗口中,以函數為例
    看函數原型        空格 
    看函數定義        p
    跳轉到函數定義     移動到函數名處Enter
    折疊/展開         - ,+
    全部折疊/全部展開  =,*
    更改列表排序方式   s
    更新列表          u
    放大縮小窗口      x
    退出窗口          q
    上/下一個文件     [[,]]

 

配置:Tlist快捷鍵

    .vimrc中寫:
     nnoremap <silent><F2> :TlistToggle<CR>

Tlist幫助

    在Tlist窗口按F1

    :help Tlist             查看Tlist命令幫助

    :help 'Tlist*'          查看Tlist選項幫助

    :e ~/.vim/taglist.txt   直接打開文檔看幫助

 

4.4 NERD_tree 目錄樹列表

安裝NERD_tree

  1.在vim. 下載NERD_tree包。

  2.把NERD_tree包解壓到.vim下,之后會看到.vim下多了文件 doc/NERD_tree.txt,plugin/NERD_tree.vim。

  3.進入vim,輸入:NERDTree檢查是否安裝成功。

使用NERDTree

    打開 vim 之后,使用命令 :NERDTree激活 NERDTree窗口; 按Ctrl-w w在兩個窗口來回跳轉。

    :NERDTree

    :NERDTreeToggle

NERDTree快捷鍵

    o , Enter 展開/折疊目錄

    p 上一層目錄

    / 查找文件

    q 退出

 

幫助

    ?

    :e ~/.vim/doc/NERD_tree.txt

 

忽略特定文件類型

    配置文件中寫:

    let NERDTreeIgnore = ['.*\.o$','.*\.ko$','.*\.gz$']  忽略后綴為.o,.ko,.gz的文件。

 

配置:NERDTree快捷鍵

    .vimrc中寫:

    nnoremap <silent><F3> :NERDTreeToggle<CR>

4.5 bufexplorer 緩沖區(qū)文件列表

安裝bufexplorer類似NERD_tree。

使用BufExplorer

    :BufExplorer

配置:BufExplorer快捷鍵

    .vimrc中寫:

    nnoremap <silent><F4> :BufExplorer<CR>

 

4.6cscope在整個目錄查找函數被調用位置

cscope可以在整個目錄查找函數定義,查找函數被調用位置等,非常好用。

安裝cscope

    fedora下,# yum -y install cscope

生成cscope數據庫

    在所要的目錄下

    $ find . -name '*.c' -or -name '*.h' -or -name '*.S' | cscope -Rbq

    在當前目錄會產生3個文件cscope.out,cscope.in.out,cscope.po.out。

載入cscope數據庫

    在當前目錄進入vim

    :cs add cscope.out

使用cscope查找整個目錄

    :cs help

    :cs find g timer_interrupt  查找timer_interrupt的定義

    :cs find c timer_interrupt  查找調用timer_interrupt的地方

    :cs find e run_timer          查找關鍵字run_timer

    find 可以簡寫為f

多個匹配間跳轉

    :cnext,cn

修改配置文件

    set nocst                    讓跳轉到定義的命令:ta 和 Ctrl-]調用ctags的tag,幫助:help nocst。

    set csto=1                   優(yōu)先使用ctags的tag       

    "set cscopequickfix=s-,c-,d-,i-,t-,e-    使:cs find c 時直接跳轉而不是列表,看個人喜好要不要設這個。
    nnoremap <C-\> :cs find c <C-R>=expand("<cword>")<CR><CR> 光標放在函數上,快捷鍵Ctrl-\跳轉到調用這個函數的地方。    

    nnoremap <C-_> :cs find g <C-R>=expand("<cword>")<CR><CR> 光標放在函數上,快捷鍵Ctrl-_跳轉到函數定義處或列出多個定義


5. 編譯并修改代碼錯誤

quickfix模式內置在vim中,編譯后記錄了出錯的位置信息,用來定位錯誤位置。


編譯

    調用當前目錄下的Makefile文件編譯    :make

        改變編譯調用的命令                                   :set makeprg=gcc\ -g\ test.c\ -o\ test ,沒有寫Makefile時用


快速定位代碼錯誤

    列出錯誤        :cl
   下一個錯誤      :cn
   上一個錯誤      :cp
   從頭開始        :cnew

   打開錯誤列表窗口 :cw

   關閉錯誤列表窗口 :ccl

 

6. 調用gdb來debug:vimgdb

安裝vimgdb
      vimgdb需要以補丁形式打在vim版本上,下載vim的source,對應版本的vimgdb補丁,然后按vimgdb的說明文件安裝即可。
 
配置按鍵映射
    配置文件里加  map <F7> :run macros/gdb_mappings.vim<CR>
    這樣按F7,按鍵映射就可以在調試模式和普通模式切換了。

使用vimgdb
   按鍵映射    <F7> 或 :run macros/gdb_mappings.vim
   打開gdb命令窗格      空格
   打開gdb輸出窗格      在命令窗格鍵入gdb,按Enter
   載入可執(zhí)行文件       空格打開gdb命令窗格,file test,test就是編譯后生成的可執(zhí)行文件
   設置斷點    Ctrl-B
   開始運行    R
   繼續(xù)執(zhí)行    S,Ctrl-N,C
   結束       F
   退出       Q


變量監(jiān)視窗口
    創(chuàng)建變量監(jiān)視窗       :bel 30vsplit gdb-variables 
    選中變量名到監(jiān)視窗    v命令選中變量,Ctrl-P添加到變量監(jiān)視窗格
    輸入變量名到監(jiān)視窗    空格打開gdb命令窗格,輸入createvar 變量名

在gdb輸出窗格顯示,查看
    locals變量  L,info locals
    函數stack   W,where
    斷點位置    B,info breakpoints
    寄存器      info registers

參考:vi/vim使用進階: 在VIM中使用GDB調試 – 使用vimgdb


7. 其它

7.1 中文亂碼問題
先安裝運行zhcon

 

8. 我的vim

 

安裝了插件ctags,cscope,腳本Taglist,NERD_tree,bufexplorer,

按這里配置好之后,F(xiàn)2彈出函數列表,F(xiàn)3彈出目錄列表,Ctrle-],Ctrl--跳轉到函數定義,Ctrl-\跳轉到函數引用,很方便。

我的配置文件~/.vimrc

---------------------------------------------------------------------

  1   syntax on
  2 
  3   set nu
  4   set autoindent
  5   set cindent
  6 
  7   " status line
  8   set statusline+=%f
  9   set laststatus=2
 10 
 11   nnoremap <silent><F2> :TlistToggle<CR>
 12   nnoremap <silent><F3> :NERDTreeToggle<CR>
 13   nnoremap <silent><F4> :BufExplorer<CR>
 14 
 15   " cscope
 16   set nocst
 17   set csto=1
 18   nnoremap <C-\> :cscope find c <C-R>=expand("<cword>")<CR><CR>
 19   nnoremap <C-_> :cscope find g <C-R>=expand("<cword>")<CR><CR>
 20   "set cscopequickfix=s-,c-,d-,i-,t-,e-
 21 
 22   " Tlist
 23   let Tlist_File_Fold_Auto_Close=1
 24   let Tlist_Exit_OnlyWindow=1
 25   let Tlist_WinWidth=30
 26   let Tlist_Inc_Winwidth=1
 27 
 28   " NERDTree
 29   let NERDTreeIgnore = ['.*\.o$','.*\.ko$','.*\.gz$']
 30 
 31   " auto save and load session
 32   let g:
 33   let g:
 34   let g:OrigPWD=getcwd()
 35   if filereadable(g:AutoSessionFile)
 36           if argc()==0
 37                   au VimEnter * call EnterHandler()
 38                   au VimLeave * call LeaveHandler()
 39           endif
 40   endif
 41   function! LeaveHandler()
 42           exec "mks! ".g:OrigPWD."/".g:AutoSessionFile
 43   endfunction
 44   function! EnterHandler()
 45           exe "source ".g:AutoSessionFile
 46   endfunction
 47 
 48   map <F7> :run macros/gdb_mappings.vim<CR>

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多