vi編輯器操作

来源:https://www.cnblogs.com/godven/archive/2020/04/01/12614312.html
-Advertisement-
Play Games

vi的基本操作 如果只鍵入vi,沒有文件名,也能進入vi,退出命令時輸入文件名才能 被存入磁碟。 進入vi後,游標處於特定某行上,如果去掉“+”號後面數字,游標處於文件最末行 模式識別匹配,在命令中指定一個字元串,進入vi後,游標處於文件中第一個與指定模式串相匹配那行,所有匹配的字元串被高亮。 末行 ...


vi的基本操作

  • 如果只鍵入vi,沒有文件名,也能進入vi,退出命令時輸入文件名才能 被存入磁碟。

  • vi +行號 文件名 進入vi後,游標處於特定某行上,如果去掉“+”號後面數字,游標處於文件最末行

  • vi +/模式字元串 文件名 模式識別匹配,在命令中指定一個字元串,進入vi後,游標處於文件中第一個與指定模式串相匹配那行,所有匹配的字元串被高亮。

  • :set nohlsearch 末行模式下,取消高亮顯示

  • vi 需要打開文件的通配符 可以編輯多個文件,在vi命令中寫入要操作的文件即可。例如:vi *.c打開當前目錄下所有C文件。

    • 文件之間切換
      • Ctrl + 6 下一個文件
      • :bn下一個文件
      • :bp上一個文件
  • vi +/main *.h *.c 打開程式的所有源文件,並且將顯示位置定位在main函數

  • 文本插入操作:

    • 插入文本命令

      • i 將文本插入游標前
      • I 將文本插入當前行的行首
    • 追加文本命令

      • a 將新文本追加到游標當前所在位置之後
      • A 將新文本追加到所在行行尾
    • 空行插入命令

      • o 在游標所在行下一行插入一個空行,游標置於該行行首

      • O 在游標所在行上一行插入一個空行,游標置於該行行首

  • 文本刪除操作(命令模式下):

    • x 刪除游標處的字元。在x之前加上一個數字n,則刪除從游標所在位置開始向右的n 個字元
    • X 刪除游標前面的字元。在x之前加上一個數字n,則刪除從游標前面那個字元開始向 左的n個字元
    • dd 刪除游標所在整行。在dd前加入一個數字n,刪除當前行及其後n-1行的內容
    • D或d$ 刪除從游標所在處開始到行尾的內容
    • d0 刪除從游標前一個字元開始到行首的內容
    • dw 刪除一個單詞。若游標在某詞中間,從游標所在位置開始刪至詞尾。dw之前加上n,表示刪除n個指定的單詞
    • d( 刪除到上一句開始的所有字元
    • d) 刪除到下一句開始的所有字元
    • d{ 刪除到上一段開始的所有字元
    • d} 刪除到下一段開始的所有字元
    • d<CR> 刪除包括當前行在內的兩行字元
  • 文本複製操作:

    • yy 複製游標所在的整行。在yy前加一個數字n,可複製當前行及其後n-1行內容。
    • Y或y$ 複製從游標所在處到行尾的內容
    • yw 複製一個單詞。若游標在某單詞中間,則從游標所在位置開始複製到詞尾。在yw前加一個數字n,表示覆制n個指定的單詞。
    • y) 複製到下一句開始的所有字元
    • y} 複製到下一段開始的所有字元
    • y<CR> 複製包括當前行在內的兩行內容
  • 文本粘貼命令:

    • p 粘貼當前緩衝區的內容
  • 文本選擇命令:

    • v 命令行下進行文本選擇。起始處按v進入塊選擇模式,然後移動到塊尾,之間部分被高亮顯示
    • V 文本第一行按V,然後移動游標到塊的最後一行。之間所有行被高亮顯示
  • 撤銷命令:

    • u 撤銷上一次所做的操作。多次使用u命令會一步一步依次撤銷先前做過的操作
    • U 一次性撤銷自上次移動到當前行所做過的所有操作,再使用一次U則撤銷先前U命令所做的操作,恢復被撤銷的內容
  • 重覆命令:

    • . 文本編輯時碰到機械地重覆一些操作,可以讓用戶方便地再執行一次前面剛完成的某個複雜命令
  • 推出vi操作:

    • :q
  • :q! 無論文件是否改變都會強行推出vi編輯器

    • :w 新文件名 vi保存當前編輯文件,但並不退出,而是繼續等待用戶輸入命令。使用命令時,可以再給當前編輯文件起一個新的文件名,相當於該文件另存為一個新的文件
  • :w!新文件名 命令與上面相同,不同的是,即使指定的新文件存在,編輯器也會用當前文件對其進行替換

    • :wq vi將先保存文件,然後退出vi返回shell
  • :x 若當前文件曾被修改過,則vi會保存該文件。否則vi直接退出,不保存該文件


    vi增強操作

  • 替換命令:

    • r 將當前游標所指的字元替換為提供的字元,可以在該命令前加上數字n,表示從當前字元開始的n個字元替換為提供的字元
    • R 讓vim進入replace模式,此模式下,每個鍵入的字元都會替換當前游標字元,鍵入結束該模式
  • 游標移動:

    • 基本游標移動命令
      • h 向左移動一個字元
      • l 向右移動一個字元
      • j 向下移一行
      • k 向上移一行
    • 按行移動游標
      • H 將游標移至當前屏幕的第一行,而不是整個文件的第一行。H命令之前加上數字n,則將游標移至第n行行首
      • M 該命令將游標移至屏幕顯示文件的中間的行首。若屏幕已經充滿,則移動到屏幕的中間行
      • L 游標移至屏幕顯示文件的最底行的行首。L命令之前加上數字n,游標移至從屏幕底部算起第n行的行首
      • G 全文範圍內移動游標,此時游標移動範圍不再受屏幕的限制
    • 按字移動游標
      • w和W w將游標右移至下一個字的字首。W指兩個空格之間的任何內容
      • e和E e如果游標起始位置處於字內,則游標移至本字字尾,如果游標在字尾,則移動到下一個字的字尾。E 所指的字是指兩個空格之間的內容
      • b和B b 如果游標處於字內,則將游標移至本字字首,如果處於字首,則將游標移至上一個字字首。
    • 按句移動游標
      • ( 將游標移至上一個句子的開頭
      • ) 將游標移至下一個句子的開頭
    • 按段移動游標(段是被定義以一個空白行開始和結束的片段)
      • { 將游標向前移至上一個段的開頭
      • } 將游標向後移至下一個段的開頭
    • 文本行的移動
      • > 將指定的正文行向右移動,通常是右移8個空格。指定的數字是需要移動的行數目,並不是要右移的空格數。通常將代碼整體右移,例>3 回車
      • < 效果與上述相同,方向相反
      • >> 將游標所在行右移8個空格。如果在>>命令之前給出數字n,則表示游標當前行及其下麵的n-1行都右移8個空格
      • << 效果與上述相同,方向相反
    • 文本的異行行動(末行模式
      • m 允許用戶將某一行的文本內容移動到指定位置,使用方法imj ,把第i行移至第j行下方
    • 屏幕滾動
      • Ctrl+u 將屏幕向前(文件頭方向)翻滾半屏
      • Ctal+d 將屏幕向後(文件尾方向)翻滾半屏
      • Ctrl+f 將屏幕向文件尾方向翻滾一整屏
      • Ctrl+b 將屏幕向文件首方向翻滾一整屏
        • 可以在命令之前加上一個數字n,表示屏幕向前或者向後翻滾n行,或者屏幕向前或者向後翻滾n頁。
    • 查找命令(末行模式)
      • /string /命令從游標處開始向後尋找字元串string
      • ?string ?命令從游標處開始向後尋找字元串string
      • n 重覆上一條命令,繼續向下檢索
      • N 重覆上一條檢索命令,但檢索方向和上一次相反
      • g/string 使游標停止在第一個檢索到string串的首行
    • 替換命令
      • :[range]/s/s1/s2/[option]
        • [range]表示檢索範圍,省略時表示當前行
          • “1,10” 表示第1行到第10行
          • “%” 表示整個文件
          • “.,$” 從當前行到文件尾
        • s為替換命令。s1是要被替換的串,s2為替換的串
        • [option] /g表示在全局文件中進行替換,/c表示在每次替換之前需要用戶進行確認,省略時僅對每行第一個匹配串進行替換
        • \<word 替換以word開始的單詞的word部分
          • 例如,%s/\<int/char 表示以int開始的單詞的int部分換成char
    • 視窗的切分
      • :split 文件名 split也可以簡寫為sp。這時視窗切分為上下兩半,下部分對應原來文件,上半部分對應新打開文件。
      • Ctal+w,然後j 移動游標到下一個視窗
      • Ctral+w,然後k 移動游標到上一個視窗
      • Ctral+w,然後q 關閉當前視窗
      • Ctral+w,然後w 移動游標到另一個視窗
    • 設置環境
      • :set nu (nonu) 顯示行號(或者不顯示行號)
      • :set hlsearch (nohlsearch) 設定搜尋字元串反白顯示(或者不反白顯示)
      • :set autoindent 顯示程式語法自動縮進
      • :set backup (nobackup) 自動存儲備份文件(或者不自動備份文件)
      • :set all 顯示所有的選項
      • :syntax on (off) 實現程式語法高亮顯示(或者不高亮顯示)
      • :set ignorecase (noignorecase) 忽略大小寫(或者區分大小寫)

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

-Advertisement-
Play Games
更多相關文章
  • 前幾天發佈了 "抄抄《CSS 故障藝術》的動畫" 這篇文章,在這篇文章里介紹瞭如何使用Win2D繪製文字然後配合BlendEffect製作故障藝術的動畫。本來打算就這樣收手不玩這個動畫了,但後來又發現性能不符合理想。明明只是做做Resize動畫和用BlendEffect混合,為什麼性能會這麼差呢? ...
  • 上一篇發出之後,大家在我的微信公號文章下麵留言很熱烈,大部分朋友都把懷疑點放在了HyperRAM時序配置上,覺得很大概率是HyperRAM的數據訪問出了問題導致了LCD顯示異常,這個懷疑是非常合情合理的,那麼從高效定位問題的角度,我們接下來應該怎麼做? ...
  • 摘要 Linux現在已經是大部分草根站長不可缺少的一部分,想要維護好你的網站就必須懂得常用的linux命令,這個可以加快你對伺服器的維護,運營;同時Linux在嵌入式系統開發中有不可替代的優勢,越來越多的年輕人已經青睞Linux環境下嵌入式功能的開發。 常用指令 ls 顯示文件或目錄-l 列出文件詳 ...
  • 操作系統為了讓用戶使用,進行分段,但是效率不行,所以引出了分頁,後來應該分段也應該分頁,所以使用了虛擬記憶體,分段分頁的核心就是虛擬記憶體,而要實現虛擬記憶體,就需要進行記憶體的換入和換出 1. 段頁同時存在 2. 用戶眼中的記憶體 3. 用換入、換出實現‘大記憶體’ 在用戶眼中0 4G就是特別大的記憶體,相當於 ...
  • 有時你使用的是別人搭建好的環境,不知道php.ini在哪裡,或者好久沒有修改配置了,已經忘記了路徑在哪,所以在操作文件之前,得先要找到.ini路徑。 找php.ini 方式一 方式二 方式三 方式四 在本地的網站目錄里,新建一個php文件,寫入如下代碼 重啟PHP 修改php.ini後,必須重啟PH ...
  • 命令創建賬號和密碼 授予可以切換root的許可權 修改/etc/sudoers文件。 修改完後,就可以用Mysticbinary帳號登錄,然後用命令 或者 ,切換到root許可權。 ...
  • 作為本入門系列最後一篇文章,將演示如何在CentOS7環境下搭建LNMP環境來構建個人博客網站。 ...
  • CentOS 鏡像 簡介 CentOS,是基於 Red Hat Linux 提供的可自由使用源代碼的企業級 Linux 發行版本;是一個穩定,可預測,可管理和可複製的免費企業級計算平臺。 配置方法 1. 備份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...