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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...