【Linux】vim工具篇

目錄

  • 一、vim的多模式
    • 1.1 命令模式
      • 1.1.1 光標移動
      • 1.1.2 復制及撤銷
      • 1.1.3 剪切及刪除
      • 1.1.4 替換
      • 1.1.5 批量化注釋/去注釋
    • 1.2 底行模式
  • 二、vim的配置

在這里插入圖片描述
個人主頁<—請點擊
Linux專欄<—請點擊

一、vim的多模式

vim是一款功能強大的文本編輯器,它編輯代碼主要圍繞命令展開,vim下常見的模式有命令模式、插入模式和底行模式

在這里插入圖片描述
如上圖,vim就是所安裝的一款軟件,沒有什么神秘的地方。

現在我想寫一段代碼,我們就可以使用vim了。
在這里插入圖片描述
使用vim打開之后,默認是在命令模式下,你會發現你按電腦的按鍵屏幕沒有反應,有時候你觸碰到某個按鍵會有反應。如果你要寫代碼就要切換到插入模式,按i鍵就可以切換,插入模式按Esc鍵就能切換到命令模式

此時關注左下角的圖標,會發現命令模式切換到插入模式是這樣的:
在這里插入圖片描述

切換到插入模式就可以寫代碼了,你會發現vim使用起來像記事本一樣,沒有自動空行以及代碼提醒功能,這些功能是可以配置的,稍后會講解。

我現在寫了一份代碼,可我該怎么退出呀?
在這里插入圖片描述
想要退出就需要切換到底行模式,此時插入模式是無法直接切換成底行模式的,需要回退到命令模式,再Shift + ;鍵也就是:切換到底行模式,底行模式按Esc切換到命令模式。

在底行模式下輸入wq保存并退出按回車就退出了。
在這里插入圖片描述

1.1 命令模式

為了詳細講解,我們需要給代碼加上行號,即切換到底行模式輸入set nu,去除行號輸入set nonu

1.1.1 光標移動

在命令模式下對光標做快速移動:Shift+g:移動到最后一行,gg:移動到第一行,n+Shift+g:快速移動到第n行

現在我要快速移動到文本的第666行,即666+Shift+g
在這里插入圖片描述

Shift+6=^:快速移動到當前行開始,Shift+4=$:快速移動到當前行結尾
在這里插入圖片描述

光標的控制h:左、j:下、k:上、l:右,當然使用鍵盤上的方向鍵也是可以的,但為什么會有這四個鍵呢?因為早些時候鍵盤上沒有方向鍵。
在這里插入圖片描述
n+h/j/k/l:進行光標的快速移動

w:按照單詞為單位向右移動,b:按照單詞為單位向左移動。n+w/b:按照n個單詞為單位快速右/左移動

1.1.2 復制及撤銷

yy:復制光標所在的行,p:將復制內容粘貼到當前行的下一行
在這里插入圖片描述
n+yy:拷貝從當前光標所在行往下的n行文字,n+p:將復制的內容重復粘貼n

u:撤銷操作Ctrl+r:對u的撤銷進行撤銷。假設你對上次的撤銷操作后悔了,你可以撤銷上次的撤銷操作。
在這里插入圖片描述
注意:只要沒有退出vim,隨時可以進行撤銷操作,一旦退出,u/Ctrl+r就不起作用了

1.1.3 剪切及刪除

dd:刪除當前行,n+dd:刪除從當前行開始向下的n如果后續沒有進行p操作,那就是刪除,如果后面進行p操作,那就叫剪切。

對文件進行100+ddp
在這里插入圖片描述

x:刪除光標所在字符,連續x會向右刪除。Shift+x=X:向左刪除。n+x/n+Shift+x:連續刪n
在這里插入圖片描述

1.1.4 替換

~:快速進行大小寫轉換
在這里插入圖片描述

r:替換光標所在位置的一個字符。例如對光標所在位置進行r+2
在這里插入圖片描述
n+r:替換光標所在位置及之后的n-1個位置的字符。例如6+r+1
在這里插入圖片描述

Shift + r進入替換模式,批量化的內容替換Esc再切換成命令模式
在這里插入圖片描述
會直接對之前的內容進行替換

1.1.5 批量化注釋/去注釋

想要選擇區域,我們需要進入到視圖模式,即Ctrl+v進入視圖模式,Esc切換成命令模式。

  • 批量化注釋

Ctrl+v進入視圖模式,hjkl進行區域選擇,Shift+i=I進入插入模式輸入//,按Esc切換成命令模式完成注釋
在這里插入圖片描述

  • 批量化去注釋

Ctrl+v進入視圖模式,hjkl進行區域選擇,按d刪除注釋
在這里插入圖片描述

1.2 底行模式

w!:強制保存,q!:強制退出,wq!:強制保存并退出

底行模式輸入set nu增添行號,去除行號輸入set nonu

/XXX:匹配搜索,按n匹配到下一個最近的XXX
在這里插入圖片描述

!cmd:不退出vim,可以直接執行cmd命令。例如在vim中對正在寫的文件進行編譯運行。
在這里插入圖片描述

%s/src/dst/g:將文本中的src替換成dst。例如將打印信息換掉。
在這里插入圖片描述

vim本身就有創建新文件的作用,了解這個之后,我們繼續了解。我們平常寫代碼有時候會分成多文件管理,如頭文件的聲明,頭文件的定義及源文件,在vim下我們也可以這樣管理。

在底行模式下,輸入vs即可進行分屏操作,Ctrl+ww即可實現光標在多個分屏之間的移動
在這里插入圖片描述
在這里插入圖片描述

在編譯時總會有錯誤的時候,這時系統會直接報出錯誤的地方,此時我們使用vim打開源文件時光標可能并不在錯誤附近,一下一下挪太麻煩了,我們可以在打開時光標直接定位到錯誤的位置:vim 文件名 +行號
在這里插入圖片描述

擴充:從命令模式進入插入模式,按a或按i或按o。從命令模式退出vim,按Shift+zz,等同于wq
在這里插入圖片描述

二、vim的配置

當前的vim沒有自動縮進功能,什么功能都沒有,我們使用vim時,vim默認會在用戶的家目錄下找一個隱藏的配置文件.vimrcvim的那些自動縮進等功能是通過這個文件配置的,而這個文件是默認是沒有的。

如何驗證vim會默認打開.vimrc這個文件呢? 我準備了一個寫入以下代碼的文件。
在這里插入圖片描述

我們創建.vimrc,并在其中寫入一行set nu
在這里插入圖片描述
接下來,我們再次使用vim打開code.c
在這里插入圖片描述
它就默認加上行號了!所以,vim做配置,本質是將配置項寫入到/home/XXX/.vimrc配置文件中。

所以進行vim的配置就轉化成了我們需要寫入哪些配置項

即使是將功能齊全的配置項全部添加到.vimrc中,vim依舊會很難用,想更好用此時你就需要安裝vim插件,你會發現配置vim比較麻煩。

有沒有一鍵安裝vim的呢? 誒,有的。 這個命令不要在root用戶下運行,在普通用戶下運行即可,curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh。接下來你就有了一個功能強大的vim
在這里插入圖片描述

注意:配置好vim后只會在當前用戶賬號下有效

配置好后,有什么極個別命令不符合你的要求可以配合大模型搜索相應的配置項,并在.vimrc中自主搜索修改即可。

總結:
以上就是本期博客分享的全部內容啦!如果覺得文章還不錯的話可以三連支持一下,你的支持就是我前進最大的動力!
技術的探索永無止境! 道阻且長,行則將至!后續我會給大家帶來更多優質博客內容,歡迎關注我的CSDN賬號,我們一同成長!
(~ ̄▽ ̄)~

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

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

相關文章

Spark 核心原理:RDD, DataFrame, DataSet 的深度解析

Apache Spark 是一個強大的分布式計算系統&#xff0c;以其內存計算、速度快、易用性強等特點&#xff0c;在大數據處理領域占據重要地位。理解 Spark 的核心原理&#xff0c;特別是其三種核心抽象——RDD, DataFrame, DataSet——對于高效地使用 Spark 至關重要。本文將深入解…

Docker 命令行的使用

1.Docker 命令列表[roothost1 ~]# docker Usage: docker [OPTIONS] COMMANDA self-sufficient runtime for containersCommon Commands:run Create and run a new container from an imageexec Execute a command in a running containerps List cont…

Redis Stream:輕量級消息隊列深度解析

&#x1f4e8; Redis Stream&#xff1a;輕量級消息隊列深度解析 文章目錄&#x1f4e8; Redis Stream&#xff1a;輕量級消息隊列深度解析&#x1f9e0; 一、Stream 數據結構解析&#x1f4a1; Stream 核心概念&#x1f4cb; Stream 底層結構? 二、消息生產與消費&#x1f68…

Android studio的adb和終端的adb互相搶占端口

在Android Studio調試時&#xff0c;有時候也需要借助終端的adb命令&#xff0c;他們互相搶占端 口&#xff0c;導致調試麻煩解決如下&#xff1a;① 終端adb的版本是&#xff1a;1.0.39路徑是:/usr/lib/android-sdk/platform-tools/adb② Android Studio使用的adb來源于Androi…

GEO服務商推薦:移山科技以劃時代高精尖技術引領AI搜索優化新紀元

引言&#xff1a;AI搜索生態重塑與GEO優化戰略地位躍升AI技術對信息檢索范式的顛覆GEO優化在企業增長中的核心作用第一章&#xff1a;AI搜索新紀元的企業營銷挑戰與機遇生成式AI成為用戶主要信息入口的行業趨勢企業在AI搜索中的“答案主權”爭奪戰GEO優化服務商的核心能力模型&…

Android SystemServer 系列專題【AttentionManagerService】

AttentionManagerService是framework中用來實現屏幕感知的一個系統級服務&#xff0c;他繼承于systemserver。我們可以通過dumpsys attention來獲取他的一些信息。如下針對屏幕感知的功能的引入來針對這個服務進行一個介紹。1、屏幕感知Settings UI實現屏幕感知的功能在A14上面…

nginx 反向代理使用變量的坑

nginx采用反向代理的時候使用變量的坑 正常情況&#xff1a; location ~ ^/prod-api(?<rest>/.*)?$ {# 假設 $mes_backend 形如: http://127.0.0.1:16889proxy_pass $mes_backend$rest$is_args$args;proxy_http_version 1.1;proxy_set_header Host $host;…

Origin繪制徑向條形圖|科研論文圖表教程

數據排列格式截圖&#xff0c;請查看每張圖↘右下角水印 目錄 數據排列格式截圖&#xff0c;請查看每張圖↘右下角水印 本 期 導 讀 No.1 理解圖形 1 定義 2 特點 3 適用場景 No.2 畫圖教程 1 導入數據&#xff0c;繪制圖形 2 設置繪圖細節 本 期 導 讀 徑…

MySQL InnoDB 的 MVCC 機制

前言 多版本并發控制&#xff08;MVCC&#xff09;是 MySQL InnoDB 存儲引擎實現高性能事務的核心機制。它通過創建數據快照&#xff0c;使得讀寫操作可以無鎖并發&#xff0c;極大地提升了數據庫的并發性能。本文將深入探討 MVCC 的工作原理、實現細節以及它與事務隔離級別的緊…

景區負氧離子氣象站:引領綠色旅游,暢吸清新每一刻

在綠色旅游成為消費主流的今天&#xff0c;游客對 “清新空氣” 的需求不再是模糊的期待&#xff0c;而是可感知、可選擇的具體體驗。景區負氧離子氣象站的出現&#xff0c;正以科技之力重塑綠色旅游格局&#xff0c;讓 “暢吸清新每一刻” 從口號變為觸手可及的現實&#xff0…

Pytorch筆記一之 cpu模型保存、加載與推理

Pytorch筆記一之 cpu模型保存、加載與推理 1.保存模型 首先&#xff0c;在加載模型之前&#xff0c;我們需要了解如何保存模型。PyTorch 提供了兩種保存模型的方法&#xff1a;保存整個模型和僅保存模型的狀態字典&#xff08;state dict&#xff09;。推薦使用第二種方式&…

當AI在代碼車間組裝模塊:初級開發者的創意反成「核心算法」

前言&#xff1a;哈嘍&#xff0c;大家好&#xff0c;今天給大家分享一篇文章&#xff01;并提供具體代碼幫助大家深入理解&#xff0c;徹底掌握&#xff01;創作不易&#xff0c;如果能幫助到大家或者給大家一些靈感和啟發&#xff0c;歡迎收藏關注哦 &#x1f495; 目錄當AI在…

技術視界 | 跨域機器人通信與智能系統:打破壁壘的開源探索

8 月 16 日&#xff0c;在 OpenLoong 社區舉辦的第九期線下分享會上&#xff0c;國家地方共建人形機器人創新中心的軟件開發負責人 Amadeus 博士帶來了一場主題為“跨域機器人通信與智能系統&#xff1a;打破行業壁壘的創新方案”的演講。深入探討了當前機器人領域的一個關鍵痛…

Android入門到實戰(八):從發現頁到詳情頁——跳轉、傳值與RecyclerView多類型布局

一. 引言在上一篇文章里&#xff0c;我們從零開始實現了 App 的 發現頁面&#xff0c;通過網絡請求獲取數據&#xff0c;并使用 RecyclerView 展示了劇集列表。但光有發現頁還不夠&#xff0c;用戶在點擊一部劇時&#xff0c;自然希望進入到一個更詳細的頁面&#xff0c;去查看…

【工具】41K star!網頁一鍵變桌面應用

項目中遇到了一個需要將現有的 web 頁面打包成一個 桌面應用 的需求。 最一開始想到的是 Electron&#xff0c;但是它還需要一些開發工作并且打包后的應用體積比較大&#xff0c;調研后發現了開源工具 Pake。 它能讓你用最輕量的方式&#xff0c;把任何網頁一鍵打包成跨平臺桌…

浪潮CD1000-移動云電腦-RK3528芯片-2+32G-安卓9-2種開啟ADB ROOT刷機教程方法

浪潮CD1000-移動云電腦-RK3528芯片-232G-安卓9-2種開啟ADB ROOT刷機教程方法 往期文章&#xff1a; 浪潮CD1000-移動云電腦-RK3528芯片-232G-安卓9-開啟ADB ROOT破解教程 地址1&#xff1a;浪潮CD1000-移動云電腦-RK3528芯片-232G-開啟ADB ROOT破解教程-CSDN博客 中國移動浪潮…

Day23_【機器學習—聚類算法—K-Means聚類 及評估指標SSE、SC、CH】

一、聚類算法概念屬于無監督學習算法&#xff0c;即有特征無標簽&#xff0c;根據樣本之間的相似性&#xff0c;將樣本劃分到不同的類別中。所謂相似性可以理解為歐氏距離、曼哈頓距離、切比雪夫距離... 。分類按顆粒度分為&#xff1a;粗聚類、細聚類。按實現方法分為&#xf…

android seekbar顯示刻度

SeekBar簡介 SeekBar是Android中的一個可交互UI組件&#xff0c;允許用戶通過拖動滑塊在特定范圍內選擇數值。繼承自ProgressBar&#xff0c;但增加了用戶手動調節功能&#xff0c;常用于音量控制、亮度調節等場景。 核心屬性 android:maxHeight // 背景高度 android:progres…

【高并發內存池】五、頁緩存的設計

文章目錄Ⅰ. page cache頁緩存的結構設計Ⅱ. 完善central cache中的 get_span() 函數Ⅲ. 實現頁緩存獲取span對象的接口Ⅰ. page cache頁緩存的結構設計 ? 首先頁緩存還是一個哈希桶的結構&#xff0c;但是和前兩者不同的是&#xff0c;頁緩存的哈希桶中存放的是一個或者多個…

Elasticsearch(text和keyword)區別分析

text:全文檢索類型,經過分詞處理,支持模糊匹配? keyword:精確匹配類型,適用于聚合、排序和過濾? text 1. 核心屬性 ?analyzer屬性?: 指定用于索引和搜索的分詞器 默認使用標準分析器(Standard Analyzer) 示例:"analyzer": "ik_max_word"(中文…