Linux工具 VIM的使用

進入插入模式shell

    i/a 在光標字符處/後 I/A 在光標行首/尾 O/o 在光標上/下行新建一行vim

    s 刪除當前字符後插入 與xi功能相同 cw 刪除當前單詞後插入 與dwi功能相同code

文件退出與保存ip

    :wq, ZZ, :x[若是內容和源文件一致 則不保存] 保存退出 :q! 不保存退出ci

    :w 保存 :w! 保存只讀文件(root) :saveas FILE 另存爲rem

    將當前文件中部份內容另存爲另一個文件 :ADDR1,ADDR2w PATH字符串

    將另一個文件填充到當前文件中 :r PATHast

光標移動sed

    逐字符移動配置

        h, l ,j ,k --- left, right, up, down <iMode>

    逐單詞移動

        w移至下一個單詞詞首 e移至當前單詞/下一個單詞詞尾

        b移至當前單詞/前一個單詞詞首 B與b相似

        shift+left/right 單詞詞首移動 <iMode>

    翻屏操做

        ctrl+b/f 上/下翻一屏 ctrl+u/d 上/下翻半屏

        shift+up/down 上/下翻一屏 <iMode>

    行內跳轉

        0, ^[非空白字符]行首 $, g_[非空白字符]行尾

        #G 第#行 G 最後一行 gg 第一行

        #f& 第#個&字符 #t& 第#個&字符前 F/T 功能相同 方向相反

        % 匹配括號移動 m& 標記  '& 標記跳轉 ''回到上一次位置

         {/} 上/下一段開頭 (/)光標處/下一個句子開頭

編輯命令

    x 刪除單個字符 dd 刪除整行 yy 複製整行

    P/p 粘貼至所在行上方/下方|字符前/後

    d, x, yy與組合 #[d/x/yy] #表明數字 de dw ye 等等也能夠組合

替換模式

    r 替換單個字符 用法同x R 替換多個字符 需ESC

    u 撤銷前一次編輯操做 #u 撤銷#次編輯操做

    撤銷最近一次撤銷操做 Ctrl+r 重複最近一次操做 .

選取模式

    v 按字符選取 V 按行選取 Ctrl+V 按塊選取

查找和替換

    /PATTERN 從前日後查找 ?PATTERN 從後往前查找 n 查找下一個 N 查找上一個

    用法同sed :{sed_script} 例子-> :.,$s/hello/HELLO/g

打開文件時操做

    光標自動處於 vim +N FILE N行 vim + FILE 最後一行 vim +/PATTERN FILE 符合PATTERN的行

    vim FILE... :next :prev 來切換上/下一個文件 :first :last 切換到最前/後一個文件

    vim -o/O FILE...水平/垂直分窗口編輯多個文件 :qa 退出全部文件/窗口

打開多個文件和分屏

    :e FILE :bn :bp來切換上/下一個文件 若是使用:wq則所有保存 [臨時打開多個文件]

    Ctrl+w, s 水平拆分窗口 Ctrl+w, v 垂直拆分窗口 Ctrl+w, ARROW 窗口間切換光標

    :sp 水平拆分窗口 :vsp 垂直拆分窗口 :qa 退出全部文件/窗口

其餘

    配置文件 全局 /etc/vimrc 我的 ~/.vimrc 行爲 ~/.viminfo

    和shell交互 不用退出vim也能執行命令 :! CMD

    vim出錯的應對狀況 刪除對應文件.swp後綴名的文件

    一個vim高級操做例子

        0<Ctrl-v>[選取行數]I[輸入字符串]<ESC> 批量在行首添加字符串

        <Ctrl-v>[選取行數]$A[輸入字符串]<ESC> 批量在行尾添加字符串

一些vim設置

    顯示/隱藏行號 :set nu/nonu

    忽略/區分大小寫 :set ic/noic

    設定自動縮進/不縮進 :set ai/noai

    查找單詞時高亮 :set hlsearch/nohlsearch

    語法高亮 :syntax on/off

    C/C++縮進方式:set cindent

    用其餘命令以及map鍵位映射等高級設置配置VIM

本身的vim簡易設置[shell腳本]

set nu
set tabstop=4
set ai

inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap { {}<ESC>i<cr><cr><UP><TAB>
inoremap < <><ESC>i
inoremap " ""<ESC>i
inoremap ' ''<ESC>i

imap if<TAB> if [  <RIGHT>; then<cr>fi<ESC>O<TAB><UP><RIGHT>
imap for<TAB> for  in ; do<cr>done<ESC>O<TAB><UP>
imap case<TAB> case  in<cr>*)<cr><TAB><cr>;;<cr><bs>esac<ESC>4k2li
imap func<TAB> (<RIGHT> {
相關文章
相關標籤/搜索