Linux命令更新-Vim 編輯器

簡介

Vim 是 Linux 系統中常用的文本編輯器,功能強大、可擴展性強,支持多種編輯模式和操作命令,被廣泛應用于程序開發、系統管理等領域。

1. Vim 命令模式

Vim 啟動后默認進入命令模式,此時鍵盤輸入的命令將用于控制編輯器本身,而不是直接編輯文本。命令模式下常用的命令包括:

  • 光標移動:

  • h: 左移一個字符

  • l: 右移一個字符

  • j: 下移一行

  • k: 上移一行

  • 0: 移至行首

  • $: 移至行尾

  • gg: 移至文件首行

  • G: 移至文件尾行

  • Ctrl+v: 進入可視化模式,可以使用方向鍵移動光標

  • 刪除操作:

  • x: 刪除當前光標所在字符

  • dd: 刪除當前行

  • D: 刪除從當前光標到行尾的所有內容

  • dw: 刪除從當前光標到下一個單詞末尾的所有內容

  • d$: 刪除從當前光標到行尾的所有內容

  • 復制操作:

  • y: 復制當前光標所在字符

  • yy: 復制當前行

  • Y: 復制從當前光標到文件尾部的所有內容

  • yw: 復制從當前光標到下一個單詞末尾的所有內容

  • y$: 復制從當前光標到行尾的所有內容

  • 粘貼操作:

  • p: 粘貼上次復制的內容

  • 撤銷/重做:

  • u: 撤銷上次操作

  • Ctrl+r: 重做上次撤銷的操作

  • 其他命令:

  • :q: 退出 Vim 編輯器

  • :wq: 保存并退出 Vim 編輯器

  • :set nu: 顯示行號

  • :set hlsearch: 高亮顯示搜索結果

  • /pattern: 搜索文本內容

  • n: 向下查找下一個匹配項

  • N: 向上查找上一個匹配項

  • :w filename: 將當前文件內容保存為指定文件名

2. Vim 編輯模式

Vim 提供多種編輯模式,用于輸入文本和進行編輯操作。常見模式包括:

  • 插入模式:

  • 按下 iaOo 等鍵進入插入模式,此時鍵盤輸入的內容將直接插入文本。

  • 按下 Esc 鍵退出插入模式。

  • 替換模式:

  • 按下 rR 鍵進入替換模式,此時鍵盤輸入的內容將替換當前光標所在字符或文本。

  • 按下 Esc 鍵退出替換模式。

  • 底線模式:

  • 按下 : 鍵進入底線模式,此時可以在命令行輸入 Vim 命令。

  • 按下 Enter 鍵執行命令。

3. Vim 命令運維案例

案例一:修改配置文件

假設您需要修改 /etc/nginx/nginx.conf 文件中的配置項。

步驟:

  1. 打開配置文件:
vim /etc/nginx/nginx.conf
  1. 進入插入模式:
i
  1. 將需要修改的配置項修改為所需值。

  2. 保存并退出 Vim 編輯器:

:wq

案例二:搜索并替換文本

假設您需要在所有 PHP 文件中搜索并替換字符串 "old_value""new_value"

步驟:

  1. 打開所有 PHP 文件:
vim *.php
  1. 進入命令模式:
Esc
  1. 輸入搜索命令:
/old_value
  1. 按下 nN 鍵查找下一個或上一個匹配項。

  2. 輸入替換命令:

:s/old_value/new_value/g
  1. 保存并退出 Vim 編輯器:
:wq

案例三:使用宏命令進行重復操作

假設您需要多次刪除當前行并將其內容插入到下一行。

步驟:

  1. 進入命令模式:
Esc
  1. 錄制宏命令:
q
  1. 執行宏命令:
ddp
  1. 重復執行宏命令:
@10

解釋:

  • q:開始錄制宏命令

  • dd: 刪除當前行

  • p: 將刪除的內容粘貼到下一行

  • q: 結束錄制宏命令

  • @10: 重復執行上次錄制的宏命令 10 次

案例四:使用正則表達式進行復雜查找/替換

假設您需要在所有 CSS 文件中查找并替換所有匹配正則表達式 #\{([\w-]+)\} 的文本,將其替換為 \1.important

步驟:

  1. 打開所有 CSS 文件:
vim *.css
  1. 進入命令模式:
Esc
  1. 輸入搜索命令:
/\#\{([\w-]+)\}/
  1. 輸入替換命令:
:s/\#\{([\w-]+)\}/\1.important/g
  1. 保存并退出 Vim 編輯器:
:wq

解釋:

  • #\{([\w-]+)\}:正則表達式,用于匹配以 # 開頭、后面跟一個由字母、數字和下劃線組成的單詞、再跟一個 { 的文本。

  • \1:反向引用,表示匹配的第一個捕獲組,即單詞部分。

  • .important:替換文本,將匹配的單詞后面追加 .important

  • g:全局替換,表示替換所有匹配的文本。

案例五:比較兩個文件

假設您需要比較兩個文件 /file1.txt/file2.txt 的差異。

步驟:

  1. 打開兩個文件:
vim -d /file1.txt /file2.txt
  1. 進入比較模式:
:diffsplit
  1. 左右移動光標可以查看兩個文件的差異。

  2. 按下 q 鍵退出比較模式。

4. Vim 高級特性

Vim 提供了豐富的功能和插件,可以滿足不同用戶的各種需求。以下是一些 Vim 的高級特性:

  • 可視化模式: 進入可視化模式后,可以使用方向鍵選擇要操作的文本塊,然后可以使用 dyp 等命令進行刪除、復制、粘貼等操作。

  • 折疊: 可以將代碼塊折疊起來,隱藏不必要的部分,只顯示重要內容。

  • 語法高亮: Vim 可以根據不同文件類型的語法規則對文本進行高亮顯示,方便閱讀和理解代碼。

  • 代碼補全: Vim 可以根據輸入的文本內容提供建議,幫助用戶快速完成代碼輸入。

  • 自定義配置: Vim 可以通過配置文件進行個性化配置,例如設置按鍵映射、配色方案等。

5. Vim 插件

Vim 擁有豐富的插件生態,可以擴展 Vim 的功能,滿足各種使用需求。常用的插件管理器包括:

  • Pathogen: 傳統插件管理器,使用簡單。

  • Vundle: 功能強大,支持多種插件管理功能。

  • Plug: 輕量級插件管理器,易于使用。

6. Vim 學習資源

  • Vim 中文文檔:https://yianwillis.github.io/vimcdoc/doc/usr_toc.html

  • Vim 在線教程:https://www.vim-adventures.com/

注意

  • 本文檔僅介紹了 Vim 的基本使用方法和常見運維案例,并未涵蓋所有功能和特性。

  • Vim 的學習需要循序漸進,建議從基礎知識開始學習,逐步掌握高級特性。

  • 在使用 Vim 進行實際操作時,請注意備份文件,以免造成數據丟失。

總結

Vim 是一款功能強大、可擴展性強的文本編輯器,在 Linux 系統中得到了廣泛應用。掌握 Vim 的使用技巧,可以提高工作效率和生產力。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45130.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45130.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45130.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android ImageDecoder把瘦高/扁平大圖相當于fitCenter模式decode成目標小尺寸Bitmap,Kotlin

Android ImageDecoder把瘦高/扁平大圖相當于fitCenter模式decode成目標小尺寸Bitmap,Kotlin val sz Size(MainActivity.SIZE, MainActivity.SIZE)val src ImageDecoder.createSource(mContext?.contentResolver!!, uri)val bitmap ImageDecoder.decodeBitmap(sr…

【Playwright+Python】系列 Pytest 插件在Playwright中的使用

一、命令行使用詳解 使用 Pytest 插件在Playwright 中來編寫端到端的測試。 1、命令行執行測試 pytest --browser webkit --headed 2、使用 pytest.ini 文件配置 內容如下: [pytest] # Run firefox with UIaddopts --headed --browser firefox效果&#xff1…

云計算【第一階段(31)】PXE高效批量網絡裝機

一、系統安裝 1.1、系統裝機的三種引導方式 1. 硬盤 2. 光驅( u 盤) 3. 網絡啟動 pxe 1.2、系統安裝過程 加載boot loader Boot Loader 是在操作系統內核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設備、建立內存空間的映…

【CSS in Depth 2 精譯】3.1.2 邏輯屬性 + 3.1.3 用好邏輯屬性的簡寫形式

當前內容所在位置(可進入專欄查看其他譯好的章節內容) 第一章 層疊、優先級與繼承(已完結) 1.1 層疊1.2 繼承1.3 特殊值1.4 簡寫屬性1.5 CSS 漸進式增強技術1.6 本章小結 第二章 相對單位(已完結) 2.1 相對…

深入探討:CPU問題的深度分析與調優

引言 你是否曾經遇到過這樣的情況:系統運行突然變慢,用戶抱怨不斷,檢查后發現CPU使用率居高不下?這時候,你會如何解決?本文將詳細解析CPU問題的分析與調優方法,幫助你在面對類似問題時游刃有余。 案例分析:一次CPU性能瓶頸的解決過程 某知名互聯網公司在一次促銷活動…

《Python數據科學之一:初見數據科學與環境》

《Python數據科學之一:初見數據科學與環境》 歡迎來到“Python數據科學”系列的第一篇文章。在這個系列中,我們將通過Python的鏡頭,深入探索數據科學的豐富世界。首先,讓我們設置和理解數據科學的基本概念以及在開始任何數據科學項…

實變函數精解【4】

文章目錄 說明點集與測度可數集定義性質示例與有限集的關系應用 可列集定義種類不可列集性質應用與意義 有限集性質示例與無限集的區別應用 可數集(Countable set)和可列集(Countably infinite set 或 Enumerable set)可數集可列集…

怎樣把pptx課件轉換成word文檔

如果你還沒有安裝python-pptx和python-docx,請先運行以下命令: pip install python-pptx python-docx from pptx import Presentation from docx import Document import re# 函數:清理文本,移除特殊字符和控制字符 def clean…

每日Attention學習11——Lightweight Dilated Bottleneck

模塊出處 [TITS 23] [link] [code] Lightweight Real-Time Semantic Segmentation Network With Efficient Transformer and CNN 模塊名稱 Lightweight Dilated Bottleneck (LDB) 模塊作用 改進的編碼器塊 模塊結構 模塊代碼 import torch import torch.nn as nn import to…

qt 添加一個圖片控件

在Qt中,要添加一個圖片控件,你通常會使用QLabel或者QGraphicsView來顯示圖片。下面是使用QLabel來顯示圖片的一種方法: 使用 QLabel 顯示圖片 在Qt Designer中添加QLabel 打開你的Qt Designer。從工具箱中找到QLabel控件,并將其拖…

C#如何進行深度學習對行人進行識別?

C#通常不是用于深度學習的主要語言,但是通過一些庫和框架,你可以輕松地在C#中實現深度學習。以下是使用C#進行深度學習的一些更詳細的步驟: 選擇合適的庫: ML.NET:這是微軟推出的一個機器學習庫,它很容易集成到.NET應用程序中。ML.NET支持廣泛的機器學習任務,包括深度學…

使用DeepWalk 和Word2Vec實現單詞Embedding

0、準備“邊”數據集Wiki_edgelist import pandas as pddf pd.read_csv(./data/wiki/Wiki_edgelist.txt, sep , headerNone, names["source", "target"]) df.head() 1、讀入 起點-終點 邊數據,構建圖 # 1、讀入 起點-終點 邊數據&#xff0c…

GIS就業相關問題快問快答

目錄 前言1.現在處于經濟下行期,GIS就業崗位是否減少了?2.我未來的打算是進體制內研發崗,這方面需要掌握哪些技能呢?3.GIS前端需要掌握哪些知識?4.GIS后端需要掌握哪些知識?5.不論是前端還是后端&#xff0…

編程語言都是哪些人開發出來的?為什么都是國外較小國家的人

編程語言都是哪些人開發出來的? 編程語言的開發者通常是來自計算機科學、軟件工程、數學、物理學等領域的專家、學者和工程師。這些開發者具備深厚的編程技能、算法知識、系統設計能力以及創新思維,他們致力于創造出能夠解決特定問題或滿足特定需求的編…

Docker入門(清晰認識)

為什么學習Docker? 再學完linux后,我們需要遠程對Linux虛擬機下載一些軟件,如果在Linux里直接用命令下載軟件會十分麻煩,所以我們需要通過使用Docker將軟件直接下載到Docker中,這樣更方便下載和卸載等操作。 一張圖弄…

javaScript的面試重點--預解析

目錄 一.前言 二.預解析案例 一.前言 關于預解析,我們通過今天學習就能夠知道解析器運行JS分為哪兩步;能夠說出變量提升的步驟和運行過程;能夠說出函數提升的步驟和運行過程。 二.預解析案例 預解析,簡而言之,也就是…

7.13實訓日志

上午 學習網絡安全的過程中,我們深入了解了網絡的不同層面和技術,從表層網絡到深網再到暗網,以及涉及的產業分類和技術工具。這些知識不僅幫助我們理解網絡的復雜性,還揭示了如何應對和防范各種網絡威脅。 首先,我們…

簡易秒表的實現

目錄 描述 輸入描述: 輸出描述: 參考代碼 描述 請編寫一個模塊,實現簡易秒表的功能:具有兩個輸出,當輸出端口second從1-60循環計數,每當second計數到60,輸出端口minute加一,一直…

當在多線程環境中使用 C++進行編程時,怎樣確保線程安全以及如何處理線程之間的同步和通信?

在C中確保線程安全性和處理線程之間的同步和通信有多種方法。下面是一些常用的技術和技巧: 互斥鎖:使用互斥鎖可以確保只有一個線程可以訪問共享資源。在訪問共享資源之前獲取鎖,在完成后釋放鎖。這可以防止多個線程同時訪問同一份數據&#…

007-端口隔離

端口隔離配置 端口隔離簡介 為了實現報文之間的二層隔離,可以將不同的端口加入不同的VLAN,但會浪費有限的VLAN資源。采用端口隔離特性,可以實現同一VLAN內端口之間的隔離。 設備支持以下方式進行端口隔離: 基于隔離組的端口隔…