linux基礎之文本編輯器vim大全

来源:https://www.cnblogs.com/lanxiansen/archive/2019/03/08/10495140.html
-Advertisement-
Play Games

linux基礎之vim編輯器 1、vim編輯器 基本介紹 vim編輯器的前身叫做vi。vi的英文名:Visual Interface。中文解釋文本編輯器,你不應該用他去打開二進位可執行文件 文本編輯器種類 行編輯器 sed 全屏編輯器 nano vi vim:Vi IMproved 基本使用 vim ...


linux基礎之vim編輯器

1、vim編輯器

基本介紹

  vim編輯器的前身叫做vivi的英文名:Visual  Interface。中文解釋文本編輯器,你不應該用他去打開二進位可執行文件

文本編輯器種類

  行編輯器

    sed

  全屏編輯器

    nano

    vi

    vimVi  IMproved

      基本使用

        vim是一個模式化編輯器

        vim編輯器預設打開文件後是編輯模式或者命令模式

      vim的基本模式

        編輯模式、命令模式

        輸入模式

        末行模式

        可視化模式

      基本介紹

        vim內建了很多子命令,即內置了命令行介面,可以通過打開末行模式來執行vim內置的命令

        vim打開文件的語法

            vim  [options]  [file ..]

            vim  [options] -

            vim  [options]  -t  tag

            vim  [options]  -q  [errorfile]

        常用選項

          +num:打開文件後,直接讓游標處於第num行。如果只有加號,沒有num表示打開文件處於文件的最後一行

            使用案例

              vim  +  /tmp/fstab

              vim  +10  /tmp/fstab

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

    vim模式轉換

      編輯模式轉換到輸入模式,需要鍵入的符號

        i:英文名insert,在游標所在處前面輸入

        a:英文名,append,在游標所在處後面輸入

        o:在當前游標所在行的下麵打開一個新行,並轉換為輸入模式

        I:在游標所在行的行首輸入.如果游標處於不在行首,那麼他會移動到行首並轉換為輸入模式

        A:在游標所在行的行尾輸入.如果游標處於不在尾首,那麼他會移動到行尾並轉換為輸入模式

        O:在當前游標所在行的上面打開一個新行,並轉換為輸入模式

        c

        C

      輸入模式轉換到編輯模式,需要鍵入的符號

        ESC

      編輯模式轉換到末行模式

        :

      末行模式轉換到編輯模式

        一次ESC,這個如果在末行模式輸入有命令,那麼鍵入一次ESC不能快速回到編輯模式

        兩次ESC可以快速回到編輯模式

    關閉文件方式

      在末行模式下,鍵入命令

        不保存退出

          q:直接退出,不保存

          q!:強行退出

        保存退出

          wq:保存退出

          x:保存退出

          w  PATH:將當前文本內容另存到PATh這個路徑下

      在編輯模式下,鍵入命令

        保存退出

          ZZ:保存退出

  vim中快速實現游標跳轉

    字元間跳轉

      h:向左跳一個字元

      j:向下跳一個字元

      k:向上跳一個字元

      l:向右跳一個字元

    一次跳過指定的字元

      num  h:向左跳num個字元

      num  k:向上跳num個字元

      num  j:向下num個字元

      num  l:向右跳num個字元

    單詞間跳轉

      w:跳轉到後一個單詞的詞首

      e:跳轉到當前或者後一個單詞的詞尾。如果當前游標不在當前游標所在單詞的詞尾時,跳轉到當前游標所在單詞的詞尾;如果當前游標在當前游標所在單詞的詞尾,那麼跳轉到後一個單詞的詞尾

      b:跳轉到前一個單詞的詞首,如果游標不在一個單詞的詞首時,跳轉到當前游標所在單詞的詞首

    行首行尾跳轉(編輯模式下)

      ^:跳轉至行首的第一個非空白字元

      0:跳轉到行首

      $:跳轉至行尾

    行間移動(編輯模式下)

      num  G:跳轉到第num

      G:跳轉最後一行

      1G或者gg:跳轉到第一行

    句間移動

      ):跳轉到下一個句子

      (:跳轉到前一個句子

    段落間移動

      }:跳轉到後一個段落

      {:跳轉到一個段落

  vim編輯命令

    字元編輯(末行模式下)

      字元的刪除

        x:刪除游標所在處的字元

        num  x:刪除游標所在處向後num個字元

        d + 行間移動|句間移動|段落間移動|行首行尾移動|單詞間移動:d鍵加上行間移動|句間移動|段落間移動|行首行尾移動|單詞間移動的字元可以實現範圍刪除

          案例演示

            刪除游標所在位置到下一個單詞之間的字元

              鍵入d+w

            刪除游標所在位置到行尾之間的字元

              鍵入d+$

            刪除游標所在位置到行之間的字元

              鍵入d+0

            刪除游標所在位置到下一段之間的字元

              鍵入d+}

      交換字元位置

        x + p:交換游標所在的字元和後邊字元的位置

     行的刪除(編輯模式下)

      dd:刪除游標所在行

      num + dd:刪除num

      DD:刪除游標所在行,並且新建空白行到游標所在位置

        註意:刪除的內容都保留到了一個緩衝區,如果要撤回,鍵入u

      粘貼命令(編輯模式下)

        p:(小寫)英文名paste,緩存區如果為整行內容,則如果粘貼,那麼粘貼到當前游標所在行的下麵。如果不是整行,則粘貼到當前游標所在處的後邊

        P:(大寫P)。如果緩存區為整行,那麼粘貼時粘貼到當前游標所在行的上面行。如果不為整行,那麼粘貼到游標所在處的前面

        num + p 或者num + P:一次性粘貼多次

      複製命令(編輯模式下)

        y + 行間移動|句間移動|段落間移動|行首行尾移動|單詞間移動:y鍵加上行間移動|句間移動|段落間移動|行首行尾移動|單詞間移動的字元可以實現範圍複製

          使用案例

            複製游標所在處到游標所在行的行尾之間的字元

              y+$

            複製游標所在處到游標所在行的行之間的字元

              y+0

            複製游標所在處到游標所在單詞的後一個單詞之間的字元

              y+e

            yy:複製整行(複製的是單行)

              num + yy:複製num

      改變命令(編輯模式)

        c + 行間移動|句間移動|段落間移動|行首行尾移動|單詞間移動:c鍵加上行間移動|句間移動|段落間移動|行首行尾移動|單詞間移動的字元可以實現範圍刪除,並且從編輯模式進入輸入模式

          使用案例

            刪除游標所在處到游標所在行的行尾之間的字元

              c+$

            刪除游標所在處到游標所在行的行之間的字元

              c+0

            刪除游標所在處到游標所在單詞的後一個單詞之間的字元

              c+e

          cc刪除整行(複製的是單行)並且從編輯模式進入輸入模式

          num + cc:刪除num,並且從編輯模式進入輸入模式

      替換命令(編輯模式下)

        r char:替換游標所在處的字元

        num + r+ char:將游標所在位置向後指定num個字元全部替換成char字元

          使用案例

            將游標所在位置向後10個字元全部替換成a字元

              10  + r + a

      撤銷命令

        u:英文名Undo,撤銷此前的操作

        num + u:撤銷num次操作

        ctrl+r:撤銷以後後悔了,這個命令是為了執行撤銷的撤銷操作

        重覆前一個編輯操作

          .(點號)

  可視化模式

    在編輯模式下按小寫或者大寫v鍵可以進入可視化模式

      v:(小寫),可以使用方向鍵選中我們要的內容

      V:(大寫)。可以使用方向鍵選中我們要的內容

        小寫和大寫v的區別

          小寫v當我們使用方位鍵時不會整行整行的選中,而大寫v則會整行整行的選中

    通過可視化模式選中的內容可以結合編輯模式下的任何命令,比如:替換命令、複製命令、刪除命令等進行一些操作

      使用案例

        進入可視化模式,選中一部分內容進行複製

          v+方位鍵+y

    vim實現翻屏操作

      ctrl+f:項文件的尾部翻一屏

      ctrl+b:項文件的首部翻一屏

      ctrl+d:向文件的尾部翻半屏

      ctrl+u:項文件的首部翻半屏

    vim自帶的練習教程

      vimtutor命令

 

  vim末行模式

    vim內建了命令行模式,它具有的功能如下

    地址定界

      start_posend_pos:表示第start_pos行到end_pos行的內容

      start_pos:表示第start_pos

      start_pos+num:表示從第start_pos行開始向後多加num行之間內容

        使用案例

          表示是刪除第一行向後再輸20行的內容

            :1,+20d

      .(點號):表示當前行

      $:表示最後一行

      %:表示全文,相當於1,$

      start_posend_pos - num:表示從第start_pos行開始到end_pos行的前num行,也就是到了end_pos行後向前走num行,即end_pos行減num

      /PATTERN1/,/PATTERN2/:從第一次被PATTERN1模式匹配到的行開始,一直到第一次被PATTERN2匹配到的行結束之間的行

        使用案例

          第一次匹配name所在的行開始,到最後一行結束,之間的行的內容

            /name/,$

          第一匹配Go.*g$所在行開始,到第一次匹配na.*一行作為結束。之間的行的內容

            /Go.*g$/,/na.*/

      vim的地址定界後邊可以接任何編輯模式下的命令。

        使用案例

          第一匹配Go.*g$所在行開始,到第一次匹配na.*一行作為結束。刪除之間的行的內容

            /Go.*g$/,/na.*/d

          第一次匹配name所在的行開始,到最後一行結束,拷貝之間的行的內容

            /name/,$y

          第一次匹配name所在的行開始,到最後一行結束,另存之間的行的內容/tmp/name.txt這個文件中

            使用案例

              /name/,$w  /tmp/name.txt

    將滑鼠放入一個位置,然後在末行模式下輸入:

      r  path:表示在游標所在位置插入指定路徑下的文件內容

      num +r  path:表示在100行插入指定路徑下的文件內容

        使用案例

          :100r  /etc/fstab

          :r  /etc/issue

    vim的查找命令(末行模式下)

      /PATTERN:從當前游標所在處向文件尾部進行查找

      ?PATTERN:從當前游標所在處向文件首部查找

        使用註意

          當匹配到多個時,要想後跳一個匹配的使用下麵的按鍵

            n:小寫,同方向跳

            N:大寫,反方向跳

    vim的替換操作(末行模式下)

      s:在末行模式先完成的替換操作

      替換操作的語法

        s/要查找內容/替換為的內容/修飾符

          要查找的內容

            可以使用模式匹配(預設使用的是基本模式)

          要替換的內容

            不可以使用模式,但是可以使用\1\2\3..等返向引用符號。還可以使用&符號引用前面查找時查找到的整個內容

          修飾符

            i:表示忽略大小寫

            g:表示全局替換。預設情況下,每行只替換第一次出現被匹配到的內容

            使用註意:

              替換操作需要結合vim的地址定界符使用,表示在那個範圍內容完成搜索替換操作。替換時,如果有些具有特定意義的字元需要轉義

              查找替換的分割符可以使用其他字元,比如@#

    使用案例

        將游標所在位置開始到最後一行之間的內容,把匹配模式為r..t的單詞替換成ROOT,並且是全局匹配

            .,$s/\<r..t\>/ROOT/g

 

        全文匹配,把匹配模式為r..t的單詞替換成ROOT,並且是全局匹配

          %s/\<r..t\>/ROOT/g

    vim的末行模式也有命令歷史的功能

    問題

      1、複製/etc/grub2.cfg/tmp下,用查詢替換操作刪除/tmp/grub.cfg文件中的行首為空白的字元

          :.,$s/^[[:space:]]\+//

      2、複製/etc/rc.d/init.d/functions文件至/tmp下。用查詢替換操作為/tmp/functions文件的每行開頭為空白字元的行的行首添加一個#

          :%s/^[[:space:]]\+/#&/

 

   vim的多文件模式

    基本介紹

      vim可以同時打開多個文件

    基本語法

      vim  [file1[file2[file3.......]]

    使用註意

      vim可以同時打開多個文件,但是預設顯示的是第一個文件,如果想切換到另一個文件顯示的換,可以進入末行模式,輸入next命令。如果到了最後一個文件,可以使用first命令,回到第一個文件顯示。同時也可以使用prev命令看前一個文件;last命令看最後一個文件

當我們同時修改了兩個文件時,需要一起保存,那麼可以在末行模式下輸入wall命令,退出所有文件使用qall命令。當然你也可以在末行模式下一個一個的保存然後在退出

 

   vim中的視窗分割模式

    基本介紹

      我們可以將多個文件在同一個屏幕顯示,那麼需要使用到vim提供的視窗分割模式的功能

    基本語法

      vim  [options...]  file1[ file2[ .....]]

      常用選項

        -o:將多個文件水平分割顯示在屏幕上

        -O:將多個文件垂直分割顯示在屏幕上

      使用註意

          雖然我們視窗被分割成多個,但是滑鼠只有一個,那麼就需要在多個分割視窗進行切換

    在視窗間進行切換的命令

      ctrl + w + 上下左右箭頭

        如果是水平分割,那麼就可以使用   ctrl+w+左右箭頭

        如果是垂直分割,那麼就可以使用   ctrl+w+上下箭頭

 

    vim單文件視窗分割

      基本介紹

         我們可以將一個大文件分割成多個視窗顯示,這時候就會利用到vim提供的vim單文件視窗分割

      基本使用

        打開文件後使用命令將文件分隔成多個視窗顯示,多個視窗間可以相互做一些編輯操作(拷貝、刪除、替換、修改等操作)

          ctrl+w+s:將單個文件水平分割

          ctrl+w+v:將單個文件垂直分割

          使用註意

            ctrl+w一起按,然後鬆開按s或者v鍵,否則屏幕會被鎖住,如果被鎖住,使用ctrl+q命令解鎖。因為ctrl+s是鎖住終端命令

2、定製vim的工作特性

基本介紹

  vim也有自己的配置文件。配置文件定義的vim特性是永久有效,但是如果在末行模式下定製的vim特性,只有在當前vim進程有效,vim進程關閉就無效了,還原為原來的狀態

  全局配置文件

    /etc/vimrc

  個人配置文件

    ~/.vimrc   

  vim常定製特性(在末行模式下)

    set  number   簡寫set  nu   顯示行號

    set  nonumber   簡寫 set  nonu   關閉行號顯示

    set   showmatch   簡寫set  sm    開啟括弧匹配高亮,當滑鼠在左括弧,那麼右括弧被高亮

    set   autoindent     簡寫  set   ai    開啟自動縮進

    set   noai   關閉自動縮進

    set   hlsearch    開啟搜索高亮顯示

    set   nohlsearch    關閉搜索高亮顯示

    syntax  on   開啟語法高亮

    syntax   off   關閉語法高亮

    set   ic   忽略字元大小寫

    set   noic   不忽略字元大小寫

使用註意

  如果你想在個人下配置vim特性,並且是讓他永久有效,那麼實在家目錄向創建一個~/.vimrc配置文件。這個文件預設是不存在的,需要用戶自己創建。然後把vim的特性寫入這個文件中

 


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

-Advertisement-
Play Games
更多相關文章
  • 上學那會兒逃課去玩,上班了卻要逃班上課,挺有意思,逃班上課第一天,打卡! ...
  • 物聯網平臺架構Application Layer 應用層App development tools : IDEs, SDKs, and GUIs development software to shorten the lead time for creating the service interf... ...
  • keepalived簡介 keepalived介紹 Keepalived 軟體起初是專為LVS負載均衡軟體設計的,用來管理並監控LVS集群系統中各個服務節點的狀態,後來又加入了可以實現高可用的VRRP功能。因此,Keepalived除了能夠管理LVS軟體外,還可以作為其他服務(例如:Nginx、Ha ...
  • 本文收錄在Linux運維企業架構實戰系列 前言:本篇博客是博主踩過無數坑,反覆查閱資料,一步步搭建,操作完成後整理的個人心得,分享給大家~~~ 1、認識Hadoop和Hbase 1.1 hadoop簡單介紹 Hadoop是一個使用java編寫的Apache開放源代碼框架,它允許使用簡單的編程模型跨大 ...
  • 一.Redis介紹 1.redis是什麼? remote dIctionary server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存儲系統。Redis提供了一些豐富的數據結構,包括 lists, sets, ordered sets 以及 hashes ...
  • 一、搭建一個K8S環境,需要3台虛擬機,下麵演示在一臺工作機上搭建環境 基礎準備: 下載地址: http://mirrors.163.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso 下載地址: http://mirro ...
  • 1.免密登陸 1.1 原理 ssh協議中用到了對稱加密和非對稱加密,如果不瞭解可以百度一下,原理引用一下這篇 "博客" 在ssh中,非對稱加密被用來在會話初始化階段為通信雙方進行會話密鑰的協商。由於非對稱加密的計算量開銷比較大,因此一旦雙方的會話密鑰協商完成,後續的加密都將採用對稱加密來進行。 1. ...
  • 1.軟體安裝1)編譯安裝root 賬號登陸後,依次執行以下命令:cd /tmpwget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gztar zxvf lrzsz-0.12.20.tar.gz && cd lrzsz-0.12.20./con ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...