VsVim使用教程(以及簡要vim介紹)

來源:互聯網
上載者:User
1. 配置快速鍵
1.四種模式:normal,insert,visual,command2.映射   map:imap,nmap,vmap,cmap   noremap:inoremap,nnoremap,vnoremap,cnoremap3.Visual Studio 快速鍵    0.VsVim配置        Optins->VsVim->        Defaults:Use Editor Command Margin->False (否則,有命令框)        Keyboard:set your Keyboard ->include All Scopes    1.VsVimrc路徑        home下,_vsvimrc    2.Vs命令查看方式:        英語環境        Tools->Options->Environment->Keyboard        View->OtherWindow->Command Window    3.在vim中調用快捷命令        :vsc VAssistX.OpenFileInSolutionDialog<cr>
2.vim的常用命令
1.normal模式下    1.移動        .基本移動            hjkl            j:下            k:上            h:左            l:右        .單詞移動            w:word  "跳轉到單詞的頭"            W:WORD            e:word's end   "跳轉到單詞的結尾"            E:WORD's end            ge:word's end "跳轉到上一個單詞的結尾"            gE:WORD's end            b:back "跳轉到單詞的頭"            B:back "跳轉到WORD的頭"        .行移動            _: 跳轉到行的第一個字元            0:  跳轉到行首            $:  跳轉到行的最後一個字元        .縮排行            >> :向右縮排            << :負值縮排        .段落移動:            {: 向上移動一個段落            }: 向下移動一個段落            [[:            ]]:            {[:            }]:        .螢幕移動            gg: 跳轉到檔案首部            G:  跳轉到檔案結尾            12gg:   跳轉到第12行            zz: 當前游標移動到螢幕最中央            zt: 當前游標移動到螢幕最上方(top)            zb: 當前游標移動到螢幕最下方(bottom)            c-f:    下翻半頁            c-u:    上翻半頁    2.進入插入模式        i:  插入到游標前        I:  插入到行的最前面        a:  插入到游標後        A:  插入到行的最後面        s:刪除游標下的字元,並進入插入模式        S:刪除當前行所有字元,並進入插入模式        ce/cw: 刪除當前游標到word末尾處的字元,進入插入模式        C:刪除當前游標後的所有字元,並進入插入模式        o:插入到下一行        O:插入到上一行    3.撤銷和reDo        u:  撤銷        c-r: redo    4.替換        r:  用輸入替換游標下的字元        R:進入替換模式    5.尋找:        .單行        f{char}:    從當前游標向後尋找char。        F{char}:    從當前游標向前尋找char        t{char}:    從當前游標向後尋找char,游標落到char之前        T{char}:    從當前游標向前尋找char,游標落到char之後            ; :下一個char            , :上一個char        .整個檔案中尋找        / : 從當前行向下尋找        ? : 從當前行向上尋找        * : 從當前向下,尋找當前游標下的word         # : 從當前向上,尋找當前游標下的word         n : 下一個尋找結果        N : 上一個尋找結果    6.刪除        x:剪下當前游標下的字元        X:剪下當前游標前的一個字元        d{motion}:刪除        dl: 刪除當前游標下的一個字元        de/dw: 刪除當前游標下到word end的字元        db: 刪除當前游標下,到word head的字元        D:  刪除當前游標下到行尾的字元    7.複製        y{motion}:複製        yl: 複製當前游標下的一個字元        yy/Y:複製當前行        ye/yw: 複製當前游標到word end的字元        yb:複製當前游標前一字元到word head的字元    8.粘貼        p:粘貼到當前游標後        P:粘貼到當前游標前    9.點範式(.)        . :重複上次的修改(移動,刪除,增加)    10.組合命令        yyp:複製當前行到下一行        ddp:和下一行交換(刪除當前行,複製到下一行)        xp:交換兩個chr的位置        yi(:複製括弧()中的內容 yi{ yi[ yi" yi'        di(:刪除括弧()中的內容 di{ di[ di" di'        %:跳轉匹配的{}、()、[]    11.修改文本       J:將游標所在的下一行和本行串連,並且中間隔一個空格       gJ:將游標所在的下一行和本行串連(下一行的空格也串連)2.insert模式下    c-o:暫時進入normal模式。一次命令後,回到插入模式。3.visual模式(visual(可視行,可視塊))),select(選擇))    normal模式進入可視模式:        v:字元可視模式        V:行visual        c-v:塊visual    退出可視模式:        行/塊visual  v-> visual v-> normal        字元可視模式  v ->normal        <esc> or <c-[>    塊模式下插入:        c-V:進入塊模式,並選擇好地區        I    在所選地區前,進入塊插入模式(插入的內容會在所有列都插入)        A    在所選地區後,進入塊插入模式(插入的內容會在所有列都插入)        c    刪除所選地區內容,並進入塊插入模式(插入的內容會在所有列都插入)        C    刪除所選地區以及所選地區後的所有內容,並且進入塊插入模式(插入的內容會在所有列都插入)        <esc> 退出到normal模式    c-g:切換可視模式和選擇模式    可用命令:        移動:hjkl        尋找:f{char} ; , n/N        刪除:c C d x s    其他命令:        o: 切換選中地區的首和尾        U: 選中的字元全部大寫         u: 選中的字元全部小寫        ~:選中的字元切換大小寫    組合命令:    ve/vw/viw:選中一個單詞    vu:游標下的字元小寫    vU:游標下的字元大寫    veu/U:選中一個單詞小寫/大寫4.command模式    在normal模式或者visual模式下輸入冒號:,進入命令模式    normal模式下的命令,可以在命令模式下運行    command下也可以運行ex命令    :com[mand]  列出所有使用者自訂的命令    基本命令:    :w[a]  [全部]寫入(儲存)     :q[a]  [全部]退出            :c[a]  [全部]關閉buffer    :x[a]  [全部]和:wq類型,當檔案有修改時候,會寫入    :[range]copy/co/t {address}  將範圍內的行複製到目標地址處  {address}使用符號    :[range]move {address}    將範圍內的行移動到目標地址處    :normal 命令,在命令列中執行normal模式下的命令    如果是visual模式,會呈現    :'<,'>normal    會在每一行都執行命令5.命令範圍    .command模式下        vim中,在單個檔案中,        1.以行號為地址        2.此外,還有一些特殊符號表示地址,例如:            %   整個檔案(:1,$的簡寫形式)            .   游標所在位置。當前位置            1   檔案第一行            $   檔案最後一行            0   虛設項目列,位於檔案第一行上方            'm  包含標記m的行            '<  高亮選區的起始行            '>  高亮選區的結束行        範圍的表示用逗號隔開,例如 add1,add2        :12,15d 表示刪除12行到15行內容        :[range]d[elete] [x] {count}    "x到代表寄存器x裡"    .normal模式下        normal中的一些命令,可以指定運行次數,例如:            2dd 運行兩次dd->刪除兩行            2yy 運行兩個yy->複製兩行
3.mark和跳轉
mx:添加本檔案"書籤"xmX:添加全域"書籤"X`x:跳轉到書籤x所在的行和列'x:跳轉到書籤x所在行``:跳轉到本檔案上次離開的位置gi:跳轉到上一次插入的位置gv:跳轉到上一次進入visual的位置
4.VsVim的配置
1.重要配置    set backspace=indent,eol,start "退格鍵設定"    set clipboard=unnamed   "預設的剪下寄存器"    set ignorecase  "忽略大小寫"2.推薦配置    1.注釋        :vnoremap ci :s/^/\/\/<cr>        :vnoremap cu :s/\/\//<cr>        :nnoremap ci :s/^/\/\/<cr>        :nnoremap cu :s/\/\//<cr>    2.相關配置        .單個檔案中:        :inoremap jj <esc>  "退出插入模式"        :noremap gd <c-]>zz "跳轉到定義"        :nnoremap gq ==     "代碼格式format"        :vnoremap gq ==        :nnoremap <space> za "摺疊"        :nnoremap zm :vsc VAssistX.ListMethodsInCurrentFile<cr> "函數列表"        :nnoremap cj :vsc VAssistX.FindReferencesinFile<CR> "當前檔案中的引用"        :nnoremap ca :vsc VAssistX.FindReferences<CR> "查看所有引用"        :nnoremap cm :vsc File.OpenContainingFolder<CR> "開啟所在檔案夾"        :nnoremap zj :vsc Edit.QuickInfo<CR> "查看函數定義文檔"        :nnoremap zp :vsc VAssistX.RefactorImplementInterface<CR> "實現介面"        "visual模式中的尋找"        :vnoremap * "/y/<C-r>/<CR>        :vnoremap # "/y?<C-r>/<CR>        .多檔案        :nnoremap <c-o> :vsc View.NavigateBackward<CR>          :nnoremap <c-i> :vsc View.NavigateForward<CR>        "開啟查看類的對話方塊        :nnoremap cs :vsc VAssistX.FindSymbolDialog<CR>        "開啟查看檔案的對話方塊        :nnoremap cf :vsc VAssistX.OpenFileInSolutionDialog<CR>        "open VAOutline        :nnoremap co :vsc VAssistX.VAOutline<CR>        "開啟方案總管        :nnoremap cv :vsc View.SolutionExplorer<CR>        "在檔案中尋找        :nnoremap ck :vsc Edit.FindinFiles<CR>        "end3.設定檔    source filefullPath     "讀取filefullPath的配置內容,並運行"
5.寄存器介紹和使用
vim提供了幾十組寄存器,用於儲存文本為命令添加 "{register}  表示指定要使用的寄存器。若不指定,將預設用unnamed無名寄存器     "x      表示引用了寄存器x""      unnamed 無名寄存器,如果沒有指定要使用的寄存器,vim會預設使用此寄存器"_      黑洞寄存器(實際上並沒有儲存,如果"_d{motion}會執行真正的刪除)"0      複製專用寄存器  (複製的時候,不僅會把內容拷貝到無名寄存器中,還會拷貝到此寄存器)"a-"z   a-z寄存器(26個英文字母都是寄存器的名字)"+      系統剪貼簿寄存器 (使用"+p來粘貼系統剪貼簿的內容)(X11剪下板,用剪下、複製與粘貼命令操作)"*      選擇專用寄存器 (X11主剪下板,用滑鼠中斷操作)"=      運算式寄存器.在插入模式下c-r= ,會進入命令列模式,輸入運算式斷行符號之後的結果將插入文本中"%      儲存了當前檔案名稱"#      儲存了輪換檔案名稱".      儲存了上次插入的文本":      儲存了上次執行的Ex命令"/      儲存了上次尋找的模式使用樣本:"fyy    將複製的內容儲存到f寄存器"fp     將f寄存器中的內容粘貼出來:reg[ister] "{register}     查看{register}中的內容
6.宏
把命令序列錄製成宏在normal,q鍵開始/停止錄製宏。開始錄製:    q{register} 表示指定將宏錄製到哪個寄存器中停止錄製:    再次按q,停止錄製@{register} 表示執行寄存器中的命令@@  重複最近調用過的宏[count]@{register}  執行count次宏       串列方式:reg {register} 查看寄存器中的內容追加:    qa  錄製按鍵動作,並覆蓋a寄存器中原有內容    qA  錄製按鍵動作,並追加到a寄存器中在插入模式中,插入寄存器中的內容:c-r{register}   將寄存器中的內容插入到文本中.多次執行宏:    串列和並行。在處理錯誤的方式中,串列遇到錯誤,就返回。    1.串列        [count]@{register}    2.並行        :'<,'>normal @{register}.迭代求值的方式給列編號    使用了運算式寄存器(=),以便插入的時候,可以進行運算    (不要試圖控制每次執行多少遍宏(vim 函數))    let i=0    qa 0f[ls<c-r>=i<esc>j    :let i+=1    q.編輯宏    宏中使用的是鍵盤編碼,    如果使用<c-r>{register}的方式擷取的寄存器內容不一樣。    不過,可以使用將寄存器中的內容粘貼出來的方式。    1.輸出到文本中編輯        "{register}p        會粘貼到游標後,所以,用:put 輸出到下一行        :put {register}        將寄存器內容輸入到文本中        編輯完成之後,        "{register}dd       注意,Windows下,可能會將末尾的^M也粘貼進去。可以使用選中->刪除到寄存器中        將常值內容刪除並讀取到寄存器中    2.使用函數        :let @{register}=......
7.替換
:[range]s/{original}/{new}/[g]  g表示全部替換,否則只替換第一個遇到的
8.小技巧
1.ctrl+h 刪除前一個字元,相當於退格鍵ctrl+w 刪除前一個單詞ctrl+u 刪除至行首2.num<C-a> :第一個遇到的數字加num num<C-x> :第一個遇到的數字減num 
tips:
:help [   index協助文檔中,所有命令
相關文章

聯繫我們

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