Linux文本編輯器-vi/vim

来源:https://www.cnblogs.com/flashfish/archive/2019/04/16/10718708.html
-Advertisement-
Play Games

vi是Linux命令行界面下的文字編輯器,vim是vi的增強版(Vi IMproved),完全相容 可以理解成普通的txt文本與word文檔之間的差距。 註:還有一款全屏編輯器是nano,可以瞭解下 【vim的三種模式】 普通模式,編輯模式,命令模式 1.普通模式 使用vim命令打開文件,只能使用上 ...


  vi是Linux命令行界面下的文字編輯器,vim是vi的增強版(Vi IMproved),完全相容

  可以理解成普通的txt文本與word文檔之間的差距。

  註:還有一款全屏編輯器是nano,可以瞭解下

 

【vim的三種模式】

  普通模式,編輯模式,命令模式

  

  1.普通模式

    使用vim命令打開文件,只能使用上下左右鍵移動游標,並且操作複製,粘貼,刪除等之類的工作

 

  2.編輯模式

    普通模式下不能對文件內容進行編輯,只有按下“i,I,o,O,a,A,r,R,s,S”,等字母,進入編輯模式之後才可以執行錄入文字

    編輯模式有一個插入的標記在屏幕的最下方

 

 

 

 

 

 

 

 

 

 

 

  3.命令模式

    在普通模式下,輸入“:/  ?”時,游標會自動定位在那一行,此模式中可以執行保存,退出,搜索,替換,顯示行號等相關操作

    

 

 

 

 

 


  vim [OPTION]...FILE...
  如果文件存在,則打開它,如果不存在,則打開一個新的文件,如果存檔則創建文件,不存檔則不創建文件

【vim打開文件進行快速定位】    

    +#:打開文件後,直接讓游標處魚第#行的行首
    +/PATTERN:打開文件後,直接讓游標處於第一個被PATTERN匹配當的行的行首
   

 vim +11 /etc/passwd

    -b:二進位方式打開文件
    -d:比較多個文件的差異
    -m:只讀打開文件
    ex file 或 vim -e:直接進入ex模式

【模式轉換】

  普通模式 ----> 插入模式
    i:insert,在游標所在處輸入
    I:在游標所在行的行首輸入
    a:在游標所在處的後一個字元輸入
    A:在游標所在行的行尾輸入
    o:在當前游標所在行的下一行新開一行 open
    O:在當前游標所在行的上一行新開一行

  字元間跳轉:
    h:左
    j:下
    k:上
    l:右 #[hljk]:指定一次跳轉多少的字元數

  單詞間跳轉:
    w:跳到下一個單詞的詞首
    e:當前或下一個單詞的詞尾
    b:當前或上一個單詞的詞首
  #[web]:指定一次跳轉多少個單詞數
  

  當前頁跳轉
    H:頁首
    M:頁中
    L:頁底

   翻屏:
    Ctrl+f:向文件尾部翻一屏
    Ctrl+b:向文件首部翻一屏
    Ctrl+d:向文件尾部翻半屏
    Ctrl+u:向文件首部翻半屏

  行首行尾跳轉:
    ^:調到行首非第一個非空白字元處
    0:調到行首
    $:跳轉至行尾

  行間移動:
    #G:跳到第#行
    G:最後一行   例如:1G或gg:第一行
    

  字元編輯:
    x:刪除游標處的字元
    #x:刪除游標處起始的#個字元
    xp:交換游標所在處及其後面字元的位置 原理是:先刪除游標所在位置,然後使用p粘貼
    ~:轉換大小寫

  替換命令:
    r:替換個游標所在處的字元 7rv 游標後7為替換成v
    R:切換成replace模式

  刪除命令:
    d:刪除命令,可結合游標跳轉命令實現範圍刪除
    d$:刪除游標至行尾的字元
    d^:刪除游標至行首非空白字元處
    d0:刪除游標至行首
    dw:刪除游標當標至下一個單詞的詞首
    de:刪除游標至當前或下一個單詞的詞尾
    db:刪除游標至上一個單詞的詞首
    dd:刪除游標所在行
    #dd:刪除#游標後的#行

  複製命令:
    y:複製
    y$:從游標所在處複製到行尾
    y0:從游標所在處複製到行首
    y^:從游標所在處複製到行首的非空白字元處
    ye:從游標所在處複製至當前或下一個單詞的詞尾
    yw:從游標所在處複製至下一個單詞的詞首
    yb:從游標所在處複製至上一個單詞的詞首
    yy:複製游標所在行
    #yy:複製多行
  

  粘貼命令:
    p:粘貼,如果緩衝區為整行,則粘貼在游標所在行的下一行,否則,粘貼在游標所在處的後面
    P:粘貼,如果緩衝區為整行,則粘貼在游標所在行的上一行,否則,粘貼在游標所在處的前面

  可視化模式:
    v 按字元選定
    V 按航選定,經常結合編輯命令,d,c,y
    撤銷此前的編輯
    u(undo)撤銷此前的操作
    #u 撤銷指定次數的操作
    撤銷此前的撤銷

 

vim中的末行模式:

    按“:”進入末行模式

(1)地址定界
  :start_pos,end_pos
  #     具體第#行,例如2表示第2行
  #,#     從左側#表示行起始,到右側#表示行結束
  #,+#     從左側#表示行起始,加上右側#表示的行數
  .       表示當前行
  $       表示最後一行
  %       全文,相當於1,$

  /part1/,/part2/
        從第一次被part1模式匹配到的行開始,一直到第一次被part2匹配到的行結束
    使用方式:
      後跟一個編輯命令
        d
        y
        w /PATH/TO/SOMEWHERE

:1,20w /tmp/.txt

        r filename:讀取文件內容到當前文件中

:r /etc/fstab

        q:退出
        q!:強制退出
        wq:保存並退出
        wall 保存所有
        x:保存並退出
        ZZ:保存退出
        ZQ:不保存退出
(2)查找
    /PATTERN 從當前游標所在處尾部查找
    ?PATTERN 從當前游標所在處首部查找
    n 與命令同方向
    N 與命令反方向
(3)替換
    s 在末行模式下完成查找替換操作
    s/要查找的內容/替換為的內容/修飾符
    替換的內容可以使用反向引用\1,\2,可以使用&引用前面查找時查到的內容
  

  修飾符號:
    i 忽略大小寫
    g 全局替換,預設情況下,每一行只替換第一次出現

 

【定製vim的工作特性】

  配置文件:永久有效
  全局 :/etc/vimrc
  個人:~/.vimrc 需要自己創建
  末行:當前vim進程有效

    (1)顯示行號:
      set nu 顯示;
      set nonu 取消顯示;

    (2)括弧成對匹配:括弧高亮
      set sm:設置;
      set nosm:取消;

    (3)自動縮進:
      set ai
      set noai

    (4)高亮搜索:
      set hlsearch high light search
      set nohlsearch nohls

    (5)語法高亮:
      syntax on
      syntax off

    (6)忽略字元的大小寫:
      set ic
      set noic


    (7)文本格式:
      set fileformat=dos :啟用windows格式;
      set fileformat=unix:啟用unix格式;

    (8)設置文本寬度:
      set textwidth=65 (vim only)
      set wrapmargin=16


    (9)設置tab鍵的縮進長度:
      set tabstop=4
      set softtabstop=4:設置一個退格鍵退回來的長度;
      set shiftwidth=#:設置每一級縮進的長度;
      set authindent:表示自動縮進;

    (10)幫助信息:
      :help option-list
      :set or :set alal

 


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

-Advertisement-
Play Games
更多相關文章
  • 如題,我把.net core mvc項目以應用程式方式掛到IIS預設網站下,結果出現瞭如下錯誤:HTTP Error 500.0 - ANCM In-Process Handler Load Failure 嗯,因為確定頁面測試是成功的,而且也有另一個.net core測試項目也掛成功過,所以不覺得 ...
  • 一直都想弄個博客來秀一下,也是想記錄一些生活的點點滴滴,而博客園是一個特別適合做博客網站的程式,我的想法是多年以後,我心靈的點點滴滴,都可以在這裡找到暈染的痕跡。程式員生活總是和程式有關係的,對我而言,博客園專註於.net,這是一個全新的事物。 ...
  • 前期準備工作 1,一個已經測試通過的winform程式 2,安裝好的installshield2013插件 ps:一般VS都沒有安裝此插件,需要自己去下載 打包步驟 1,新建一個打包程式 ps:如果你的項目列表中只有2沒有1,說明你沒有安裝installshield2013插件 2,打包工具簡介 3 ...
  • 枚舉概念 枚舉類型(也稱為枚舉)提供了一種有效的方式來定義可能分配給變數的一組已命名整數常量。該類型使用enum關鍵字聲明。 示例代碼1 預設情況下枚舉中每個元素的基本類型都是int。可以使用冒號指定另一種整數類型。 示例代碼2 預設情況下,第一個枚舉值具有值0,並且每個連續枚舉數的值將增加1。 枚 ...
  • 一步一步指導您使用 ElasticSearch, Kibana, ASP.NET Core 2.1 和 Docker 來記錄日誌 ...
  • Skip()和Take()方法都是IEnumerable<T> 介面的擴展方法,包括C#中的所有Collections類,如ArrayList,Queue,Stack等等,還有數組和字元串都可以調用這兩個方法。 Skip()和Take()方法都是IEnumerable<T> 介面的擴展方法,包括C# ...
  • 一.概述 OAuth 2.0資源(web api)所有者密碼授權,允許客戶端(Client項目)向令牌服務(IdentityServer項目)發送用戶名和密碼,並獲取代表該用戶的訪問令牌。在官方文檔中講到:規範通常建議不要使用“資源所有者密碼授權”。當用戶進行身份驗證並請求訪問令牌時,使用一個互動式 ...
  • HtmlAgilityPack官網:https://html-agility-pack.net/?z=codeplex .net中使用HtmlAgilityPack做爬蟲步驟: 1、在nuget中安裝HtmlAgilityPack 安裝好之後我們就可以開始我們的爬蟲之旅了 2、抓取網頁源代碼 1 v ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...