vim編輯器

来源:https://www.cnblogs.com/shenxm/archive/2018/01/29/8378083.html
-Advertisement-
Play Games

vim編輯器 vi(visual interface) vim(vi improved) gvim(graph vim) vim vim打開文件 vim 的三種主要模式: vim的模式轉換 擴展模式進行的操作 命令模式進行的命令 編輯二進位文件 定製vim 的工作特性 vim高級 幫助 ...


vim編輯器

vi(visual interface)
vim(vi improved)
gvim(graph vim)

vim

    vim - Vi IMproved, a programmers text editor
    vim [arguments] [file ..]       編輯指定文件(s)
    vim [arguments] -               從標準輸入讀取text內容
    vim [arguments] -t tag          編輯tag已被定義的文件
    vim [arguments] -q [errorfile]  edit file with first error
    Arguments:
        --          僅跟隨此後的文件名
        -v          Vi 模式 (like "vi")
        -e          Ex 模式 (like "ex")
        -E          增強版的 Ex 模式
        -s          沉默模式 (only for "ex")
        -d          微分模式 (like "vimdiff")
        -y          簡單模式 (like "evim", modeless)
        -R          只讀模式 (like "view")
        -Z          受限模式 (like "rvim")
        -m          不被允許修正
        -M          在text中的修正不被允許
        -b          二進位模式
        -l          模糊模式
        -C          相容 Vi: 'compatible'
        -N          不充分相容 Vi : 'nocompatible'
        -V[N][fname]        詳情 [level N] [log messages to fname]
        -D          調試模式
        -n          不使用交換分區文件,僅使用記憶體
        -r          列出交換分區文件並退出
        -r (with file name) 恢復毀壞的會話
        -L          同 -r
        -A          以阿拉伯語模式開始
        -H          以希伯來語模式開始
        -F          以波斯語模式開始
        -T <terminal>              設置終端類型為 <terminal>
        -u <vimrc>      使用<vimrc> 代替任何的 .vimrc
        --noplugin      不載入插件腳本
        -p[N]       打開N個標簽頁(default: one for each file)
        -o[N]       打開N個視窗(default: one for each file)
        -O[N]       和-o 類似,但垂直劃分
        +           以文件最後開始
        +<lnum>     以指定行開始
        --cmd <command> 在載入任何vimrc文件前,執行命令
        -c <command>        在載入第一個文件後執行命令
        -S <session>        載入第一個文件後的源文件會話
        -s <scriptin>             從文件<scriptin>中讀取正常模式命令
        -w <scriptout>  附加所有類型命令到文件 <scriptout>
        -W <scriptout>  寫所有類型命令到文件<scriptout>
        -x          編輯加密的文件
        --startuptime <file>    寫開始時間信息到文件
        -i <viminfo>        使用 <viminfo> 取代.viminfo

vim打開文件

    +#:     打開文件後 ,讓游標處於第# 行的 行首,+ 預設行尾
    +/ PATTERN :    打開文件後,直接讓游標處於第一個被PATTERN 匹配到的行的行首
    –b file     二進位方式打開文件
    –d file1 file2…     比較多個文件
    -m file     只讀打開文件
    ex file 或 vim –e    直接進入ex 模式
    如果該文件存在,文件被打開並顯示內容
    如果該文件不存在,當編輯後第一次存檔時創建它

vim 的三種主要模式:

    命令(Normal) 模式:  預設模式,移動游標,剪切/ 粘貼文本
    插入(Insert): 編輯模式,修改文本
    擴展命令(extended command ) 模式: 保存,退出等
    Esc鍵退出當前模式
    Esc鍵總是返回到命令模式

vim的模式轉換

    圖中:
        INSERT代表進行插入模式
        ALL代表進入命令模式
        VISUAL代表進行可視化模式
        :代表進行擴展命令模式
    進入命令模式(ALL)的方法
        vim(vi)進入文本後就進入了命令模式
        按ESC鍵退出其他模式同樣就進入了命令模式
    進入插入模式的方法
        i:  insert,  在游標所在處輸入
        I:  在當前游標所在行的行首 輸入
        a:  append,  在游標所在處後面輸入
        A : 在當前游標所在行的行尾 輸入
        o:      在當前游標所在行的下方打開一個新行
        O : 在當前游標所在行的上方打開一個新行
    進入可視化模式(VISUAL)的方法
        按v鍵,進入面向字元的模式,提示為VISUAL,可進行字元級別的選擇
        按V鍵,進入面向行的模式,提示為VISUAL LINE,可進行到行級別的選擇
        按Ctrl + v|V,進入面向塊的模式,提示為VISUAL BLOCK,可進行塊級別的選擇
        進入可視化模式後,突出顯示的文字可被刪除d,複製y,過濾,搜索,替換等

擴展模式進行的操作

    按“: ”進入擴展模式
    創建一個命令提示符: ,處於底部的屏幕左側
    命令:
        w   寫(存)磁碟文件
        wq  寫入並退出
        x   寫入並退出
        q   退出
        q!  不存檔退出,即使更改都將丟失
        r filename  讀文件內容到當前文件中
        w filename  將當前文件內容寫入另一個文件
        !command    執行命令
        r!command   讀入 命令的輸出
    地址定界:
        :start_pos,end_pos
        #   具體第#行,例如2表示第2行
        #,#     從左側#表示起始行,到右側#表示結尾行
        #,+#    從左側#表示的起始行,加上右側#表示的行數
        2,+3    表示2到5行行
        .   當前行
        $   最後一行
        .,$-1   當前行到倒數第二行
        %   全文,  相當於1,$
        /pat1/,/pat2/   從第一次被pat1模式匹配到的行開始,一直到第一次被pat2 匹配到的行結束
        #,/pat/ 
        /pat/,$ 
        使用方式:地址定界後再加個編輯命令
            d   刪除
            y   複製
            w file:     將範圍內的行另存至指定文件中
            r file: 在指定位置插入指定文件中的所有內容
    查找字元串:
        /PATTERN :  從當前游標所在處向文件尾部查找
        ?PATTERN :  從當前游標所在處向文件首部查找
        n : 與命令同方向
        N : 與命令反方向
    查找並替換:
        滿足正則表達式
        s:  在擴展模式下完成查找替換操作
            格式:<範圍指定>s/ 要查找的內容/ 替換為的內容/ 修飾符
                <範圍指定>:指定從那個到那個進行查找替換。
                    N1,N2:表示從第N1行到N2行。
                    %:表示全部查找替換
                要查找的內容:可使用模式
                替換為的內容:不能使用模式,但可以使用\1, \2, ...等後向引用符號;還可以使用“&”引用前面查找時查找到的整個內容
                修飾符:
                    i:  忽略大小寫
                    g: 對全局查找,預設情況下,每一行只替換匹配到的第一個
                    c: 每次替換前詢問
            分隔符“/”可以替換為其他字元,如“@”,“#”。
                <範圍指定>s@要查找的內容@替換為的內容@修飾符
                <範圍指定>s#要查找的內容#替換為的內容#修飾符
        示例:
            s@/etc@/var@g
            s#/boot#/#i
            %s#/boot#/#i

命令模式進行的命令

    ZZ:     保存退出
    ZQ: 不保存退出
    字元間跳轉:
        h:  左  
        l:  右 
        j:  下  
        k:  上 
        #COMMAND :  跳轉由#指定的個數的字元
    單詞間跳轉:
        w : 下一個單詞的詞首
        e : 當前或下一單詞的詞尾
        b : 當前或前一個單詞的詞首
        #COMMAND :  由# 指定次跳轉的單詞數
    當前頁跳轉:
        H:  頁首 
        M:  頁中間行
        L:  頁底
    行首行尾跳轉:
        ^:      跳轉至行首的第一個非空白字元
        0:      跳轉至行首
        $:      跳轉至行尾
    行間移動:
        #G: 跳轉至由#指定行
        G : 最後一行
        1G, gg:     第一行
    句間移動:
        ) : 下一句 
        ( : 上一句
    段落間移動:
        }:  下一段 
        { : 上一段
    翻屏操作
        Ctrl+f:     向文件尾部翻一屏
        Ctrl+b:     向文件首部翻一屏
        Ctrl+d:     向文件尾部翻半屏
        Ctrl+u :    向文件首部翻半屏
    字元編輯:
        x:      刪除游標處的字元
        #x:     刪除游標處起始的#個字元
        xp:     交換游標所在處的字元及其後面字元的位置
        ~:  轉換大小寫
        J:  刪除當前行後的換行符
    替換命令(r, replace)
        r:      替換游標所在處的字元
        R:  切換成REPLACE 模式
    刪除命令:
        d:      刪除命令,可結合游標跳轉字元,實現範圍刪除
        d$:     刪除到行尾
        d^:     刪除到非空行首
        d0:     刪除到行首
        dd:     刪除游標所在的行
        #dd:    多行刪除
        D:  從當前游標位置一直刪除到行尾,留空行==d$
        #COMMAND    #次操作上述操作
    複製命令(y, yank): :
        y:  複製
        y$: 複製當前位置到行尾
        y0: 複製當前位置到行頭
        y^: 複製當前位置到行首
        yy :    複製行
        #yy:    複製多行
        Y:      複製整行
        #COMMAND    #次上述操作
    粘貼命令(p, paste): :
        p:  緩衝區存的如果為整行,則粘貼當前游標所在行的下方;否則,則粘貼至當前游標所在處的後面
    改變命令(c, change)
        c:      修改後切換成插入模式,命令模式 -->  插入模式
        c$  
        c^  
        c0  
        cc :    刪除當前行並輸入新內容
        #cc:    
        C : 刪除當前游標到行尾,並切換成插入模式
        #COMMAND    #次上述操作
    技巧操作
        <start position><command><end position>
        Command:
            y  複製、d  刪除、gU  變大寫、gu  變小寫
            ye  從當前位置拷貝到本單詞的最後一個字元
            示例
                0y$  命令意味著:
                0 →  先到行頭
                y →  從這裡開始拷貝
                $ →  拷貝到本行最後一個字元
    撤消之前的更改
        u   撤銷最近的更改
        #u  撤銷之前多次更改
        U   撤消游標落在這行後所有此行的更改
        Ctrl + r    重做最後的“撤消”更改
        .   重覆前一個操作
        n.  重覆前一個操作n次

編輯二進位文件

    以二進位方式打開文件
        vim –b binaryfile
    擴展命令模式下,利用xxd 命令轉換為可讀的十六進位
        :%!xxd
    擴展命令模式下,利用xxd 命令轉換回二進位
        :%!xxd –r
    保存退出:wq

定製vim 的工作特性

    配置文件:
        進行永久有效的修改
        全局:/etc/vimrc
        個人:~/.vimrc
    僅對當前vim 進程有效設置
        “:”,進入擴展模式進行設置
        (1)  行號設置
            顯示:set number,  簡寫為set nu
            取消顯示:set nonumber,  簡寫為set nonu
        (2)  括弧成對匹配設置
            匹配:set showmatch,  簡寫為set sm
            取消:set nosm
        (3)  自動縮進設置
            啟用:set ai
            禁用:set noai
        (4)  高亮搜索設置
            啟用:set hlsearch
            禁用:set nohlsearch
        (5)  語法高亮設置
            啟用:syntax on
            禁用:syntax off
        (6)  忽略字元的大小寫的設置
            啟用:set ic
            不忽略:set noic
        (7)  文件格式設置
            啟用windows 格式:set fileformat=dos
            啟用unix 格式:set fileformat=unix
        (8)  設置文本寬度
            :set textwidth=65 (vim only)
            :set wrapmargin=15
            :set 
            :set all

vim高級

    多文件模式
        vim FILE1 FILE2 FILE3 ...
        文件選擇:
            :next   下一個
            :prev   前一個
            :first      第一個
            :last   最後一個
            :wall   保存所有
            :qall   退出所有
            :wqall  保存退出所有
    多個“視窗”模式
        多文件視窗分割:
            vim -o|-O FILE1 FILE2 ...
            -o  水平分割
            -O  垂直分割
            在視窗間切換  Ctrl+w(且按上下左右鍵)
        單文件視窗分割:
            Ctrl+w,s:   split, 水平分割
            Ctrl+w,v    vertical,  垂直分割
            ctrl+w,q    取消相鄰視窗
            ctrl+w,o    取消全部視窗
            :wqall  退出
    vim寄存器
        vim(vi)有26 個命名寄存器和1個無命名寄存器,常存放不同的剪貼版內容,可以不同會話間共用
        寄存器名稱a ,b,…,z
        格式:"字元
            3"tyy  表示覆制3 行到t 寄存器中
            "tp 表示將t寄存器內容粘貼
            未指定時將使用無命名寄存器
        有10 個數字寄存器,用0 ,1 ,… ,9 表示,0存放最近複製內容
            1 存放最近刪除內容,當新的文本變更和刪除時,1 轉存到2,2 轉存到3,以此類推,數字寄存器不能在不同會話間共用

幫助

    vim(vi)內置幫助
        :help
        :help topic
        按q退出幫助
    vimtutor命令可以進入練習模式

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 先瞭解一個概念,CLR,以前認為CLR就只是一個軟體運行的環境,今天發現其實並不是這樣。每個.net程式都運行在一個完全獨立的CLR實例上,每個CLR都有一個線程池,當然一個進程也可以載入多個CLR。 為什麼要使用線程池,即比起直接新建線程的優勢在哪裡? 線程池其實就是一個存放線程對象的“池子(po ...
  • 一、寫在前面 使用過分散式中間件的人都知道,程式員使用起來並不複雜,常用的客戶端 API 就那麼幾個,比我們日常編寫程式時用到的 API 要少得多。但是分散式中間件在中小研發團隊中使用得並不多,為什麼會這樣呢? 原因是中間件的職責相對單一,客戶端的使用雖然簡單,但整個環境搭起來卻不容易。所以對於系列 ...
  • 嘗試寫博客記錄自己開發過程中遇到的問題。 在開發後臺管理系統中的用戶管理的界面時遇到了兩個問題糾結了很久,浪費了不少時間。現將其記錄下來以做備忘。 1)在用Ligerui Grid控制項做表格數據展示的時候,日期格式化一直無法正確格式化,一直顯示我後臺傳過來的數據。 後來查找原代碼發現問題出在 Lig ...
  • private const string domainName = "本機IP地址或功能變數名稱"; private const string adAdmin = "管理員帳號"; private const string password = "管理員密碼"; private const string o... ...
  • Yum(全稱為 Yellow dog Updater, Modified) yum是一個在Fedora和RedHat以及CentOS中的Shell前端軟體包管理器。基於RPM包管理,能夠從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載 ...
  • 一.創建文件系統的基本目錄: 可運行以下腳本自動創建: ~~~~ !/bin/sh echo " Create rootfs start " mkdir rootfs cd rootfs echo " Create root, dev .... " mkdir root dev etc boot t ...
  • 配額管理 配額綜述 實現配額的前提 設定配額 報告配額狀態 配額相關命令 ...
  • gpio調試的方式有很多,linux3.0以上ARM架構的處理器基本上都採用了DTS的方式,在linux3.0可以通過獲取sysfs的方式來獲取gpio狀態; sysfs文件系統的建立可以參照下麵的博客:http://www.cnblogs.com/linhaostudy/p/8377895.htm ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...