快速上手Linux核心命令(六):Linux的文本編輯器vi和vim

来源:https://www.cnblogs.com/xiezhr/archive/2023/04/26/17343234.html
-Advertisement-
Play Games

@(Linux的文本編輯器) 前言 上一篇中已經預告,我們這篇主要說Linux中vi/vim 編輯器。它是我們使用Linux系統不可缺少的工具,學會了,你就可以在Linux世界里暢通無阻,學廢了,常用操作你也會了,也是夠用了,O(∩_∩)O 簡介 vi是Linux系統下標準編輯器,就相當於Windo ...


@

目錄

前言

上一篇中已經預告,我們這篇主要說Linux中vi/vim 編輯器。它是我們使用Linux系統不可缺少的工具,學會了,你就可以在Linux世界里暢通無阻,學廢了,常用操作你也會了,也是夠用了,O(∩_∩)O

簡介

vi是Linux系統下標準編輯器,就相當於Windows系統中的記事本一樣。功能不輸給最新的文本編輯器。vim可以看作是vi的升級版本,具有代碼補全、編譯即錯誤跳轉等程式編輯能力,可以用多種顏色的方式來顯示一些特殊信息。

小試牛刀

下麵我們演示一下,這麼建立一個xiezhr.txt文件,並往xiezhr.txt 中添加內容

① 輸入如下命令進入vi/vim(vi/vim 文件名 就能夠進入 vi/vim 的普通模式了。註: vi/vim 後面一定要加文件名,不管該文件存在與否

vim xiezhr.txt

② 按下 【i】 進入輸入模式(也稱為編輯模式),開始編輯文字

③ 文件編輯完後我們怎麼保存退出呢? 這時候我們按下【Esc】鍵,發現界面上--INSERT--不見了,這是我們已經退出了輸入模式,這時我們再按下【:】即可進入底線命令模式。

④ 我們再輸入【wq】即可保存xiezhr.txt文檔並退出

以上就是vi/vim基本操作,是不是很簡單哦(●'◡'●)

當然這隻是vi/vim 最基本的操作。它的強大之處可能是你想都想不到的。如果你想瞭解更多vi/vim操作,可去查查相關資料。

vi/vim 工作原理及三種模式

vi/vim 共分為三種模式,分別是普通模式(Command mode),輸入模式(Insert mode)和底線命令行模式(Last line mode)

根據上面的例子,我們再結合下圖,你應該對vi/vim工作原理及三模式瞭如指掌了吧 O(∩_∩)O

常用快捷鍵

三種模式下操作快捷鍵說明

一、一般模式

1、移動游標

按鈕 操作說明
【h、j、k、l】 分別控制游標左、下、上、右移一格
【ctrl+b】 屏幕往"後"移動一頁
【n 游標向右移動n個字元
【Home】 移動到這一行的最前面字元處:0數字,但不能用數字小鍵盤上的數字
【End】 移動到這一行的最後面字元處:$,我測試好像不行
【w】 游標跳到下個字的開頭
【e】 游標跳到下個字的字尾
【H】 游標移動到這個屏幕的最上方那一行的第一個字元
【M】 游標移動到這個屏幕的中間那一行的第一個字元
【L】 游標移動到這個屏幕的最下方那一行的第一個字元
【G】 移動到這個文件的最後一行
【nG】 移動到這個文件的第n行(可配合:set nu)
【gg】 移動到這個文件的第一行,相當於1G
【n 游標向下移動n行

2、 查找與替換

按鈕 操作手冊
【/word】 向游標向下尋找一個名稱為word的字元串
【?word】 向游標向上尋找一個名稱為word的字元串
【n】 代表重覆前一個查找的動作
【N】 與n剛好相反,為【反向】進行行前一個查找動作
【:n1,n2s/word1/word2/g】 n1與n2為數字,在第n1與n2行之間查找word1 這個字元串,並將該字元串替換為word2
【:1,$s/word1/word2/g】 從第一行到最後一行查找word1字元串,並將該字元串替換為word2
【:1,$s/word1/word2/gc】 從第一行到最後一行查找word1字元串,並將該字元串替換為word2 ,且在替換前提示用戶確認是否進行替換

3、 刪除、複製與粘貼

按鍵 操作說明
【x】 為向後刪除一個字元 (相當於【del】鍵
【X】 為向前刪除一個字元(相當於【backspace】鍵)
【nx】 連續向後刪除n個字元
【dd】 刪除游標所在行
【ndd】 刪除游標所在的向下n行
【d1G】 刪除游標所在行到第一行的所有數據
【dG】 刪除游標所在到最後一行的所有數據
【d$】 刪除游標所在處,到該行的最後一個字元
【d0】 刪除游標所在處,到該行的最前一個字元
【yy】 複製游標所在的那一行
【nyy】 複製游標所在的向下n列
【y1G】 複製游標所在行到第一行的所有數據
【yG】 複製游標所在行到最後一行的所有數據
【y0】 複製游標所在的那個字元到該行行首的所有數據
【y$】 複製游標所在的那個字元到該行行尾的所有數據
【p】 將已複製的數據在游標下一行粘貼上
【P】 則為貼在游標的上一行
【u】 恢復前一個操作
【Ctrl+r】 重做上一個操作
【.】 是重覆前一個操作

二、一般模式、編輯模式(插入模式)切換

按鍵 操作說明
【i】 從目前游標所在處插入
【I】 在目前所在行的第一個非空格符處開始插入
【a】 從目前游標所在的下一個字元處開始插入
【A】 從游標所在行的最後一個字元處開始插入
【o】 在目前游標所在的下一行處插入新的一行
【O】 為在目前游標所在處的上一行插入新的一行
【r】 只會取代游標所在的那一個字元一次
【R】 會一直取代游標所在的文字,直到按下 ESC 為止;
【Esc】 退出編輯模式(插入模式),回到一般模式

三、一般模式、命令行模式切換

按鍵 操作
【:w】 保存編輯的內容
【:w!】 強制寫入該文件,但跟你對該文件的許可權有關
【:q】 離開vi
【:q!】 不想保存修改強制離開
【:wq】 保存後離開
【:x】 保存後離開
【ZZ】 若文件沒有更動,則不保存離開,若文件已經被更改過,則保存後離開
【:w filename】 將編輯的數據保存成另一個文件(類似另存)
【:r filename】 在編輯的數據中,讀入另一個文件的數據。即將【filename】 這個文件的內容加到游標所在行後面。
【:n1,n2 w filename】 將n1到n2的內容保存成filename這個文件。
【:! command】 暫時離開vi 到命令行模式下執行command的顯示結果!例如 【:! ls /home】即可在 vi 當中察看/home底下以ls輸出的文件信息!
【:set nu】 顯示行號
【:set nonu】 與 set nu 相反,為取消行

命令行圖解

上面一下列舉了好多按鍵,你會說我怎麼記得住呢? 其實沒必要把所有的都記住了,常用的就那麼幾個。敲得多了自然就記住了,記不住得再來翻一翻這篇文章就好了

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

-Advertisement-
Play Games
更多相關文章
  • 一、背景 Hi,大家!我是 @馬哥python說 ,一名10年程式猿。 今天我來演示一下:通過百度AI開放平臺,利用python調用百度介面進行中文情感傾向分析,並得出情感極性分為積極、消極還是中性以及置信度結果。 二、操作步驟 首先,打開百度AI首頁:百度AI開放平臺-全球領先的人工智慧服務平臺 ...
  • MySQL 備忘清單 MySQL是一種關係型資料庫管理系統,關係資料庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。 MySQL所使用的 SQL 語言是用於訪問資料庫的最常用標準化語言。MySQL 軟體採用了雙授權政策,分為社區版和商業版,由於其體積小、速 ...
  • Netcat 備忘清單 Netcat 是一款簡單的 Unix 工具,使用 UDP 和 TCP 協議。 它是一個可靠的容易被其他程式所啟用的後臺操作工具,同時它也被用作網路的測試工具或黑客工具。 使用它你可以輕易的建立任何連接。內建有很多實用的工具。 Netcat備忘單提供了在 Linux 和 Uni ...
  • 在一些字典綁定中,往往為了方便展示詳細數據,需要把一些結構樹展現在樹列表TreeList控制項中或者下拉列表的樹形控制項TreeListLookUpEdit控制項中,為了快速的處理數據的綁定操作,比較每次使用涉及太多細節的操作,我們可以把相關的數據綁定操作,放在一些輔助類的擴展函數中進行處理,這樣可以更方... ...
  • C#泛型中new和where是重要的關鍵字,它們都可以用於約束泛型類型參數的限制;它們都用於提高代碼的安全性和可用性,它們的作用在很大程度上提高了代碼的可讀性和可維護性。在這篇文章中,我們將一起瞭解泛型中的new和where,以及它們之間的區別。 1. new關鍵字 在C#泛型中,new關鍵字被用於 ...
  • 本文演示Sitecore XP Single(XP0)在Azure上的一鍵部署,即“30分鐘生成Sitecore演示環境”的一環。 關於XP(即Sitecore Experience Platform) roles的相關介紹移步 XP Single配置主要用來開發和測試: Four Sitecore ...
  • 一、前言 本篇開始對STM32的GPIO在實際開發設計中的使用配置和技巧進行探討,可以先去回顧下之前介紹的GPIO的相關理論基礎知識包括基本結構,工作模式和寄存器原理。 瞭解過STM32的GPIO相關的理論知識,這樣在應用GPIO開發過程中,能更好的理解GPIO的特點,應用起來會更加的得心應手。 後 ...
  • Linux查看各用戶硬碟占用大小 在Linux中,如果要統計各用戶占用硬碟的大小,可以執行如下的命令 du -sh /home/* 這條命令會以K、M、G等單位輸出 /home 下各用戶目錄占用硬碟的總大小,例如下麵這樣: [root@localhost ~]# du -sh /home/* 24K ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...