Linux 基礎入門操作 前言 VIM的基本操作 2

1 VIM的背景介紹

Vi 的誕生與1976年,Vim 的前身是 Vi(Visual Editor),由 Bill Joy 在 BSD Unix 系統上開發,作為 ed(行編輯器)的改進版本,提供全屏編輯功能,成為 Unix/Linux 系統的標準文本編輯器。

Vim 的誕生1991年,Vi 雖然強大,但功能有限。1991年,Bram Moolenaar 基于 Vi 開發了 Vim(Vi IMproved),增加了多級撤銷、語法高亮、跨平臺支持等特性,并逐步成為最流行的 Vi 增強版本。

目前開源與社區發展,Vim 是開源軟件(遵循 GPL 協議),擁有活躍的開發者社區,至今仍在持續更新(最新穩定版為 Vim 9.0,2022年發布)。Vim 是終端環境下的高效編輯器,憑借其極簡設計和強大的可擴展性,在開發者中經久不衰。盡管學習成本較高,但熟練使用后編輯速度遠超常規編輯器,尤其適合服務器維護和鍵盤流編程。

它的特點如下:

  1. 模態編輯(Modal Editing):
    Vim 的核心設計是模式分離(普通模式、插入模式、可視模式等),減少手指移動,提升編輯效率。

  2. 鍵盤優先:
    幾乎所有操作均可通過鍵盤完成,避免依賴鼠標,適合快速文本處理。

  3. 可擴展性:
    支持插件(通過 .vimrc 配置)和腳本(Vimscript/Lua),可定制成 IDE(如搭配 LSP)

1.1 VIM的用途

Vim 是一款功能強大的文本編輯器,學習曲線較陡,但掌握基本操作后效率會大幅提升。它用途如下:

  1. 系統管理員與開發者:

默認預裝在大多數 Linux/Unix 和 macOS 系統中(vi 通常是 Vim 的別名)。常用于配置文件編輯(如 /etc/nginx/nginx.conf)、遠程服務器調試(通過 SSH)。

  1. 程序員:

高效編寫代碼(支持語法高亮、自動補全插件如 coc.nvim)。與版本控制工具(Git)結合(如 fugitive.vim)。

  1. 寫作與日志:

純文本編輯(Markdown、LaTeX 支持),適合無干擾寫作。

1.2 VIM的安裝

在ubuntu 環境下面的安裝

sudo apt update
sudo apt install vim          # 安裝基礎版
sudo apt install vim-gtk3    # 安裝圖形化版本(GVim)

1.3 其它常用的編輯器

(1) Nano

特點:簡單易用,適合新手,快捷鍵提示在屏幕底部。

sudo apt install nano    # Debian/Ubuntu
sudo dnf install nano   # RHEL/Fedora
sudo pacman -S nano     # Arch Linux

(2)Micro
特點:現代化終端編輯器,支持鼠標操作、語法高亮、多光標。

curl https://getmic.ro | bash  # 一鍵安裝
sudo mv micro /usr/local/bin  # 添加到 PATH

1.4 總結

  1. 服務器/終端:Vim、Nano、Micro

  2. 桌面環境:VS Code、Kate、Sublime Text

  3. 極客/可定制:Emacs、Neovim、Helix

2 VIM 常見指令

VIM 一共有四種模式。

  1. 普通模式(Normal Mode):默認模式,用于導航和操作文本。從其他模式按 Esc 返回普通模式。

  2. 插入模式(Insert Mode):輸入文本。 從普通模式按 i(光標前插入)、a(光標后插入)、o(下一行插入)等進入。

  3. 可視模式(Visual Mode):選擇文本。 按 v(字符選擇)、V(行選擇)、Ctrl+v(塊選擇)。

  4. 命令模式(Command Mode):執行命令(如保存、退出)。從普通模式按 : 進入。

2.1 普通模式-- 移動光標

  1. 基本移動:也可以使用箭頭來移動

h(左)、j(下)、k(上)、l(右)。

w(下一個單詞開頭)、b(上一個單詞開頭)。

0(行首)、^(行首非空格)、$(行尾)。

  1. 翻頁:

Ctrl+f(下一頁)、Ctrl+b(上一頁)。

  1. 跳轉:

gg(文件開頭)、G(文件結尾)、行號+G(跳轉到指定行)。

2.2 編輯模式

  1. 刪除:

x(刪除當前字符)或者del、dw(刪除單詞)、dd(刪除整行)。

  1. 復制/粘貼:

yy(復制行)、p(粘貼到光標后)、P(粘貼到光標前)。

  1. 撤銷/重做:

u(撤銷)、Ctrl+r(重做)。

  1. 替換:

r(替換單個字符)、cw(替換單詞)、:%s/old/new/g(全局替換)。

2.3 命令模式

  1. 保存、退出
    :w 保存文件。

:q 退出(未修改時)。

:q! 強制退出(不保存修改)。

:wq 或 :x 保存并退出。

:e 文件名 打開其他文件。

  1. 搜索:

/關鍵詞 向下搜索,?關鍵詞 向上搜索。

按 n(下一個匹配)、N(上一個匹配)。

  1. 替換:

😒/old/new 替換當前行第一個匹配。

😒/old/new/g 替換當前行所有匹配。

:%s/old/new/g 全局替換。

2.4 可視模式

選擇文本后進行編輯(刪除、復制、縮進等)。

在這里插入圖片描述

2.5 配置

  1. vim ~/.vimrc 打開文件
  2. 添加以下語句
set number          " 顯示行號
syntax on           " 語法高亮
set tabstop=4       " Tab縮進4空格
set expandtab       " Tab轉空格

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

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

相關文章

Java:Set操作

目錄 Set 轉 List Set 轉 List Set<String>set new HashSet<String>(); set.add("c"); set.add("d"); set.add("a"); set.add("a");//方法一&#xff1a; List<String>list new ArrayList<String>(set);//…

算力驅動未來:從邊緣計算到高階AI的算力革命

算力驅動未來&#xff1a;從邊緣計算到高階AI的算力革命 摘要 本文深入探討了不同算力水平&#xff08;20TOPS至160TOPS&#xff09;在人工智能領域的多樣化應用場景。從邊緣計算的實時目標檢測到自動駕駛的多傳感器融合&#xff0c;從自然語言處理的大模型應用到AI for Scie…

虛擬機上安裝openEuler和openGauss數據庫

1.虛擬機版本選擇VM 16 PRO 2.openEuler版本選擇openEuler-22.03-LTS-SP4-x86_64 下載地址&#xff1a;https://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP4/ISO/x86_64/openEuler-22.03-LTS-SP4-x86_64-dvd.iso 3.虛擬機安裝openEuler過程&#xff1a; 4.安裝ope…

0_Pytorch中的張量操作

[引言]張量的概念 1.基本概念 張量是一個通用的多維數組&#xff0c;可以表示標量&#xff08;0 維&#xff09;、向量&#xff08;1 維&#xff09;、矩陣&#xff08;2 維&#xff09;以及更高維度的數據。張量是 PyTorch 中的核心數據結構&#xff0c;用于表示和操作數據。…

LS-LINUX-002 簡易創建SSH

LS-LINUX-002 簡易創建SSH 1. CentOS 8 創建和配置SSH服務 1.1 安裝SSH服務 CentOS 8 默認已經安裝了OpenSSH服務。如果沒有安裝&#xff0c;可以使用以下命令安裝&#xff1a; sudo dnf install -y openssh-server1.2 啟動SSH服務 安裝完成后&#xff0c;需要啟動SSH服務…

計算機專業求職面試的常見題目分類整理

以下是計算機專業求職面試的常見題目分類整理&#xff0c;每個大類精選20道高頻問題&#xff0c;結合參考內容進行解析與擴展&#xff0c;幫助系統化備考&#xff1a; 一、數據結構與算法 解釋時間復雜度和空間復雜度 時間復雜度衡量算法執行時間隨輸入規模的增長趨勢&#xf…

腳本啟動 Java 程序

如果你想在后臺啟動一個 Java 程序&#xff0c;并在終端窗口中顯示一個自定義的名字&#xff0c;可以通過編寫一個簡單的腳本來實現。以下是一個基于 Linux/macOS 的解決方案&#xff0c;使用 Bash 腳本啟動 Java 程序&#xff0c;并在終端窗口中顯示自定義標題。 示例腳本 創建…

CentOS禁用nouveau驅動

1、驗證 nouveau 是否在運行 lsmod | grep nouveau如果命令返回結果&#xff0c;說明 nouveau 驅動正在運行。 2、編輯黑名單文件 通過編輯黑名單配置文件來禁用 nouveau 驅動&#xff0c;這樣在系統啟動時不會加載它。 vi /etc/modprobe.d/blacklist-nouveau.conf修改以下…

Linux: network: tcpdump: packets dropped by kernel

文章目錄 最近遇到一個問題原因libpcap/tcpdump 接口linux/libpcap 接口內核的處理原因可能有以下幾種:解決方法:man pcap_stats最近遇到一個問題 tcpdump命令顯示有dropped的包,而且是被內核drop的。 [root@-one-01 ~]# tcpdump -i any udp and port 8080 -v -w /root/udp…

WEB安全--提權思路

一、情形 在我們成功上傳webshell到服務器中并拿到權限時&#xff0c;發現我們的權限很低無法執行特定的命令&#xff0c;這時為了能做更多的操作&#xff0c;我們就需要提升權限。 二、方式 2.1、Windows提權 1、普通用戶執行systeminfo命令獲取服務器的基本信息&#xff0…

001 vue

https://cn.vuejs.org/ 文章目錄 v-bindv-modelv-on修飾符條件渲染/控制&#xff1a;v-if v-show列表渲染 M&#xff1a;即Model&#xff0c;模型&#xff0c;包括數據和一些基本操作 V&#xff1a;即View&#xff0c;視圖&#xff0c;頁面渲染結果 VM&#xff1a;即View-Mode…

Tomcat 負載均衡

目錄 二、Tomcat Web Server 2.1 Tomcat 部署 2.1.1 Tomcat 介紹 2.1.2 Tomcat 安裝 2.2 Tomcat 服務管理 2.2.1 Tomcat 啟停 2.2.2 目錄說明 2.2.3編輯主頁 2.3 Tomcat管理控制臺 2.3.1開啟遠程管理 2.3.2 配置遠程管理密碼 三、負載均衡 3.1 重新編譯Nginx 3.1.1 確…

使用SpringSecurity下,發生重定向異常

使用SpringSecurity下&#xff0c;發生空轉異常 環境信息&#xff1a; Spring Boot 3.4.4 &#xff0c; jdk 17 &#xff0c; springSecurity 6.4.4 問題背景&#xff1a; 沒有自定義controller &#xff0c;改寫了login 頁面&#xff0c;并且進行了成功后的跳轉處理&#xf…

S130N-ISI 全棧方案與云平臺深度協同:重構 PLC 開發新范式

一、什么是 PLC&#xff1f; 1.技術定義 PLC&#xff08;Power Line Communication&#xff09;是一種創新的通信技術&#xff0c;它以電力線作為天然的傳輸介質&#xff0c;通過先進的信號調制技術將高頻數據信號疊加于工頻電流之上&#xff0c;實現電力輸送與數據通信的雙頻共…

SU-YOLO:基于脈沖神經網絡的高效水下目標檢測模型解析

論文地址:https://arxiv.org/pdf/2503.24389 目錄 一、論文概述 二、創新點解析 1. 基于脈沖的水下圖像去噪(SpikeDenoiser) 原理與結構 2. 分離批歸一化(SeBN) 原理與結構 3. 優化的殘差塊(SU-Block) 原理與結構 三、代碼復現指南 環境配置 模型訓練 四、…

實現阿里云服務器上的文字聊天程序以及C語言寫的進程間通信(IPC)程序

實現阿里云服務器上的文字聊天程序以及C語言寫的進程間通信&#xff08;IPC&#xff09;程序 1. 基于 Linux 中的管道進行進程間通信 我們首先使用管道進行進程間通信&#xff0c;這對于簡單的聊天程序來說是一個比較簡單且實用的方法。 步驟&#xff1a; 創建管道&#xf…

COMSOL 與人工智能融合的多物理場應用:28個案例的思路、方法與工具概述

應用案例概述 基于 COMSOL 與人工智能&#xff08;AI&#xff09;結合的應用案例涵蓋了 28 個多領域場景&#xff0c;包括工程&#xff08;如熱傳導優化、結構力學預測&#xff09;、能源&#xff08;如電池熱管理、燃料電池性能&#xff09;、生物醫學&#xff08;如藥物傳遞…

SAN及其ZONE

目錄 一、什么是SAN? 二、什么是ZONE? 三、配置ZONE 2.1 核心概念 2.2 劃分原則 2.3 Zone劃分最佳實踐 2.4 配置語法 1). 基于端口&#xff08;Domain,Port&#xff09;的zone語法 2). 基于WWN&#xff08;World Wide Name&#xff09;的Zone語法 3). 使用Alias簡化配置 4).…

Springboot框架—單元測試操作

Springboot單元測試的操作步驟&#xff1a; 1.添加依賴spring-boot-starter-test 在pom.xml中添加依賴spring-boot-starter-test 2.在src/test/java下新建java class 3.單元測試入口代碼結構 import org.junit.Test; import org.junit.runner.RunWith; import org.springfra…

用AbortController取消事件綁定

視頻教程 React - &#x1f914; Abort Controller 到底是什么神仙玩意&#xff1f;看完這個視頻你就明白了&#xff01;&#x1f4a1;_嗶哩嗶哩_bilibili AbortController的好處之一是事件綁定的函數已無需具名函數,匿名函數也可以被取消事件綁定了 //該代碼2秒后點擊失效…