Linux工具學習之【vim】

📖vim 基本用法

要想學會 vim 先要學會進入與退出

📃進入 vim

首先要保證自己的 Linux 中已經安裝好了 vim (云服務器大多數都是出廠就安裝好了),如果沒有安裝,需要在 root 用戶下通過指令 yum install -y vim 安裝。

安裝好 vim 后,可以直接使用,不過現在的 vim 只是一個草坯房,比較簡陋。

如果已經創建好了文件,假設為 test.c ,那么我們可以直接通過 vim test.c 打開這個文件,如果文件不存在,那么vim 也可以根據提供的文件名,創建一個文件并打開。

打開后的?vim?長這個樣子

其中一條條波浪線表示現在沒有內容,此時我們輸入字符會發現并不會有字符被寫入,因為現在處于命令模式,顧名思義,就是只能輸入命令的模式,如果想輸入內容,需要先進入插入模式,單按?i?即可進入插入模式

📃退出 vim

當我們編輯好內容后,想退出?vim?會發現退出不了

這是一個經典問題,官方解釋如下:插入模式無法直接退出?vim?,需要先進入命令模式,然后再切換為底行模式,輸入?wq?才能保存內容并退出?vim

1、esc	//從插入模式切換為命令模式
2、:	//進入底行模式
3、wq	//保存并退出 vim

不難發現,退出?vim?是一件比較麻煩的事,這也難怪它會成為困擾幾百萬初學者的問題?


📖vim 常用模式


vim 有很多種模式,不過常用的就 3 ~ 5 種,下面來介紹 vim 的五種常用模式

📃命令模式
命令模式是進入 vim 后的模式模式,也是 vim 中最根本的模式 ,在 vim 中,如果不知道自己現在處于什么模式下,可以無腦按 esc ,這樣會切換至最開始的命令模式

命令模式下主要是以命令輸入為主,這也是 vim 中指令最多的模式,下文會介紹的

📃插入模式
插入模式即編輯模式,在插入模式中,鍵盤的功能就是輸入內容,各種指令不在生效 ,我們編輯內容是在插入模式中進行的,vim 模式支持語法高亮,前提是文件的后綴要與代碼內容匹配

進入插入模式的方法:

通過 Ins 鍵切換
通過 i 切換,切換后光標停留在原位
通過 a 切換,切換后光標會回退一格
通過 o 切換,切換后會新起一行
進入方式有很多,一般是通過 i 直接切換

📃底行模式
底行模式比較特殊,是否進入底行模式的標志為 vim 下方是否 : 如果有,說明現在處于底行模式,底行模式中也有很多指令,常見的如 set nu 為 vim 設置行號,w 保存內容,q 退出 vim

注意:如果發現自己退不出 vim ,可以通過 !wq 強制保存并退出,再退不出說明權限不足

📃替換模式
替換模式主要用于對文本內容的修改,可以通過 R 進入替換模式,進入后 vim 左下角提示 REPLACE 說明進入成功,進入替換模式后,從鍵盤輸入的內容會實時替換光標處的內容

想退出替換模式可通過 esc 切換成命令模式

📃視圖模式
視圖模式就是用來看文檔內容的,可以通過 v 進入逐字符視圖模式 VISUAL 此時默認選擇當前光標處字符;也可以通過 V 進入逐行視圖模式 VISUAL LINE ,此時就是默認選擇光標處整行

視圖模式主要是用來快速瀏覽文本的

各種模式間的關系如下圖所示:

📖vim 指令集

vim?中有各種各樣的命令,下面就來介紹介紹比較常用的指令

注意:?下面介紹的指令,大多數都是在命令模式下執行的,部分指令是在底行模式下進行,會有特別說明的,比如第一條指令?set nu?設置行號

📃set nu 設置行號

底行模式下

這條指令比較重要,因為它可以幫我們把行號設置出來,這樣可以讓我們的編輯器更好看

注意:?如果是未配置過的?vim?,設置行號退出后,再次打開?vim?需要重新設置,比較麻煩

//底行模式下
:set nu	//設置行號,set nonu是取消設置行號

📃yy 復制

在 VS 中,復制一行代碼是?ctrl+c,而在?vim?中可以直接通過?yy?復制一行

除了復制一行外,yy?還可以配合數字,復制?n?行

  • 比如?10yy?可以復制當前光標以下十行內容
//命令模式下
yy	//復制當前光標處整行內容
nyy	//復制當前光標往下 n 行內容
📃dd 剪切

除了可以復制內容,還可以剪切內容,VS 下是 ctrl+x ,比較麻煩,vim 中只需要 dd 即可剪切當前光標處的整行內容

dd 也可以配合數字,剪切 n 行內容,比如 5dd 會剪切當前光標往下五行內容

小技巧

我們可以通過剪切,變相實現內容的刪除,剪切完不拷貝就是刪除了😀😀

//命令模式下
dd	//剪切當前光標處整行內容
ndd	//剪切當前光標往下 n 行內容
?📃p 粘貼

關于之前復制和剪切的內容,可以通過?p?來進行粘貼,單按?p?粘貼一次,配合數字,可以將已復制或剪切的內容,粘貼?n?次

//命令模式下
p	//粘貼一次已復制或剪切的內容
np	//粘貼 n 次
📃u 撤銷

vim?中也有后悔藥,只要當前文件還沒有離開過?vim?都可以進行撤銷操作,具體實現為?u

//命令模式下
u	//撤銷操作
?📃ctrl + r 重做

如果對已撤銷的步驟不滿意,還可以通過?ctrl+r?進行重做,回退至為撤銷前的狀態,其實?vim?中的?p?和?ctrl+r?相當于VS中的?ctrl+z?和?ctrl+y?,即撤銷與重做

//命令模式下
ctrl+r	//重做,撤銷已撤銷的步驟
📃G 移至文檔尾

命令模式下,我們是不能對文檔進行插入操作的,假設文檔很長,而我們想看看文檔尾的內容,那么我們可以通過?G?直接跳轉至文檔尾進行查看

G?可以配合數字,具體功能為跳轉至指定?n?行,假設該行不存在,那么就會跳轉至最后一行。

//命令模式下
G	//跳轉至文檔尾
nG	//跳轉至第 n 行
📃gg 移至文檔頭

這個相當于?G?的親兄弟,不過?gg?是跳轉至文檔頭

gg?也可以配合數字進行隨機行的跳轉

//命令模式下
gg	//跳轉至文檔頭
ngg	//進行隨機行的跳轉
📃$ 移至當前行尾

美元符號?$?可以使光標跳轉至當前行尾

配合數字,往下跳轉至第?n?行的行尾

//命令模式下
$	//跳轉至行尾
n$	//向下跳轉至第 n 行的行尾
📃^ 移至當前行頭

它和?$?是一對,別人是跳轉至行尾,^是跳轉至行頭,它不可以配合數字

注:$?和?^?均在鍵盤上方的數字區,$?為?shift+4?,^?為?shift+6?,有點奇怪,明明?$?在左邊,卻是移動到左邊(行尾)😀,可能大佬的鍵盤跟我們的不一樣?

//命令模式下
^	//跳轉至行頭
📃w / b 向后 / 前移動

前面的 $ 和 ^ 是以行為單位,直接跳轉至行尾或行頭,而 w 或 b 是以單詞為單位,進行前后移動,w 是向前移動,b 是向后移動,這個東西對英文比較友好,畢竟是別人設計的,實測如果是中文的話,會以符號為單位進行移動,如果中間摻雜單詞,則會移動至單詞處

當然,這個移動也支持配合數字進行移動:

//命令模式下
w	//以單詞為單位向后移動
b	//以單詞為單位向前移動
nw  /  nb	//移動 n 個單詞位
📃~ 大小寫切換

將光標處的字母進行大小寫切換如果一直按照不放,那么會一直往下進行大小寫切換

配合數字,將光標后?n?個字母進行大小寫切換。

//命令模式下
~	//將光標處的字母進行大小寫切換
📃r 替換字符

~?是進行大小寫切換,r?則是進行字符替換,先按?r?觸發替換,然后輸入待替換字符,輸入完成后,光標處字符就會被替換

配合數字,將光標往后?n?個字符全部替換為待替換字符

//命令模式下
r	//進行字符替換,默認替換當前光標處字符
nr	//替換當前光標往后 n 個字符
📃R 替換模式

r?只能用于逐字符的替換,如果涉及修改的字符過多,且都為不同值時,需要進入替換模式,單按?R?進入替換模式,此時輸入的字符會實時替換光標處的字符,換句話說,現在能夠直接替換單詞

如果想退出替換模式,按?esc?切換為命令模式就行了

//命令模式下
R	//進入替換模式
📃x 從右至左刪除

刪除當前光標處字符,如果是?x?刪除的就是光標右邊的字符,即從右至左刪除

配合數字,刪除光標右邊?n?個字符

//命令模式下
x	//刪除當光標右邊的字符
nx	//刪除光標右邊 n 個字符
📃h j k l 光標移動

在命令模式下,我們可以直接通過方向鍵進行移動,也可以通過 h j k l 這個四個鍵進行移動,不過位置對應比較奇怪

h 向左移動,巧計 h 位于這四個鍵的最左
j 向下移動,
巧計 j 為 jump ,站在懸崖邊往下跳就是向下移動
k 向上移動,巧計 k 為 king ,國王,至高無上,就是向上移動
l 向右移動,巧計 l 在最右邊。

📃/ 單詞 搜索單詞

底行模式下

我們可以在底行模式下,搜索文本內的單詞,假設我們想搜索?Hello?這個單詞,只需要先進入底行模式,輸入?/Hello?就可以在文本中查找單詞了

📃!常規命令 執行指令

這個指令就比較厲害了,它可以讓我們在不退出 vim 的情況下,執行各種指令

比如我們在 vim 中編寫了一個C程序 test.c,保存后,通過指令 :!gcc test.c 可以直接將 test.c 文件編譯并鏈接生成可執行文件,然后再通過 :!./a.out 執行這個程序,執行結束后,返回 vim 的界面。

?注意:?底行模式中的?!?還有強制的意思,當我們?wq?退不出文件時,可以通過?!wq?強制退出并保存文件

//底行模式下
:!內容	//在文檔中搜索指定內容
📃vs file 分屏操作

我們在寫一個程序時,常常會有幾個文件,比如數據結構中的二叉樹,會有兩個 .c 一個 .h ,顯然此時一個窗口是不夠我們用的,因此 vim 支持多開窗口,指令為 :vs file 新起一個窗口,打開文件 file ,如果文件不存在,會新建一個

注意: 窗口理論上來說可以開辟無數個,但如果開的多了,是非常不好操作的,如果你用的是一塊橫放的帶魚屏,因此我們一般只會打開2~3個窗口使用。窗口可以有很多個,但光標永遠只有一個,當打開新窗口時,光標也會跟著過去,如果想實現光標在不同窗口間的切換,只需要使用 ctrl+ww 即按住 ctrl 的同時快速點擊 w 兩次

//底行模式
:vs file	//打開新文件,呈分屏狀態
:ctrl+ww	//實現光標在不同窗口間的移動
📖?插入注釋

(1)首先按鍵盤上的ESC進入命令行模式
(2)再按Ctrl+V進入VISUAL BLOCK模式
(3)利用上下左右鍵調整需要注釋多少行以及行的寬度
(4)再按Shift+i或s進入插入模式
(5)輸入代表注釋的符號,比如#
(6)再次按ESC鍵,這時就可完成多行注釋

第3后,可以按下x鍵,刪除選中的目標,達到了取消注釋的效果。

?📖vim 配置

前面說過,默認的 vim 就像一個草坯房,能用,但很不好用,連個基本的行號都需要自己手動開啟,不過沒事,vim 可以讓我們對其進行裝修,即配置 vim ,配置好的 vim ,不僅有行號,還有煥然一新的界面,括號自動補全,語法提示等功能,總之用起來很爽就對了

📃自己配置
自己配置 vim ,需要在自己的 ~ 目錄下創建 .vimrc 這個文件,然后進入文件輸入配置選項進行配置,保存并退出即可,配置在保存后會立即生效

部分配置選項

set nu 設置行號
set autoindent 自動縮進
set cursorline 突出顯示當前行

還有很多很多選項,可以自己去網上搜索
注意: 是在自己的 ~ 路徑下創建 .vimrc 文件,這個配置只對當前用戶生效,推薦這樣做,畢竟是屬于自己的個性化設置。

📃自動化配置

很多人可能不想折騰,想直接使用別人配置好的文件,當然可以,我們可以通過指令下載別人已經寫好的腳本,然后等待腳本運行完成后,我們就得到了一個十分精美的?vim

?

于自動安裝的方法

首先需要復制這串指令 curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
然后進入自己的賬戶,輸入指令,此時提示輸入 root 密碼,因為安裝需要借助 root 權限
密碼輸入后慢慢等待安裝就行了,時間有點長,慢慢等待即可
如果安裝過程中卡住了,可以通過 ctrl+c 強制終止,然后重新安裝

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

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

相關文章

win11系統截圖的幾種方式

在 Windows 11 中,系統內置的截圖功能已全面升級,不僅支持多種截圖模式,還整合了錄屏、OCR 文字識別和 AI 增強編輯等功能。以下是從基礎操作到高階技巧的完整指南: 一、快捷鍵截圖(效率首選) 1. Win Sh…

寫論文時降AIGC和降重的一些注意事項

‘ 寫一些研究成果,英文不是很好,用有道翻譯過來句子很簡單,句型很單一。那么你會考慮用ai嗎? 如果語句太正式,高級,會被誤判成aigc ,慎重選擇ai潤色。 有的話就算沒有用ai生成,但…

Java學習手冊:Java并發編程最佳實踐

在Java并發編程中,遵循最佳實踐可以顯著提高程序的性能、可靠性和可維護性。本文將總結Java并發編程中的關鍵最佳實踐,幫助開發者避免常見陷阱并編寫高效的并發程序。 1. 選擇合適的并發工具 Java提供了豐富的并發工具,選擇合適的工具可以簡…

天梯賽DFS合集

1.DFS特殊輸入:PTA | 程序設計類實驗輔助教學平臺 這題其他還是蠻容易,直接用遞歸即可,問題在于怎么輸入,其實可以在遞歸到底層時輸入即可,也就是邊遞歸邊輸入,另外提一嘴跟這個題沒什么關系的點&#xff…

使用Pydantic優雅處理幾何數據結構 - 前端輸入驗證實踐

使用Pydantic優雅處理幾何數據結構 - 前端輸入驗證實踐 一、應用場景解析 在視頻分析類項目中,前端常需要傳遞幾何坐標數據。例如智能安防系統中,需要接收: 視頻流地址(rtsp_video)檢測區域坐標點(point…

智譜AI大模型免費開放:開啟AI創作新時代

文章摘要:近日,國內領先的人工智能公司智譜AI宣布旗下多款大模型服務免費開放,這一舉措標志著大模型技術正式邁入普惠階段。本文將詳細介紹智譜AI此次開放的GLM-4 等大模型,涵蓋其主要功能、技術特點、使用步驟以及應用場景&#…

JMeter中設置HTTPS請求

在JMeter中設置HTTPS請求,你可以按照以下步驟進行操作: 步驟一:添加線程組 打開JMeter后,右鍵點擊“測試計劃”,選擇“添加” -> “線程(用戶)” -> “線程組”。線程組用于定義虛擬用戶…

線程池七個參數的含義

Java中的線程池里七個參數的以及其各自的含義 面試題:說一下線程池七個參數的含義? 所謂的線程池的 7 大參數是指,在使用 ThreadPoolExecutor 創建線程池時所設置的 7 個參數,如以下源碼所示: public ThreadPoolExe…

【最后203篇系列】028 FastAPI的后臺任務處理

說明 今天偶然在別的文章里看到這個功能,突然覺得正好。 CeleryWorker已經搭好了,但是我一直想在用戶請求時進行額外的處理會比較影響處理時間,用這個正好可以搭配上。 我設想的一個場景: 1 用戶發起請求2 接口中進行關鍵信息…

uboot下讀取ubifs分區的方法

在uboot 的defconfig中增加以下內容: CONFIG_MTDIDS_DEFAULT"nand0nand0" CONFIG_MTDPARTS_DEFAULT"mtdpartsnand0:1M(boot1),1M(boot2),1M(hwinfo),6M(kernel1),6M(kernel2),56M(rootfs1),56M(rootfs2),-(ubi2)" CONFIG_CMD_UBIy 其中&#x…

圖+文+語音一體化:多模態合成數據集構建的實戰與方法論

目錄 圖文語音一體化:多模態合成數據集構建的實戰與方法論 一、多模態合成數據的核心價值 二、系統架構概覽 三、核心模塊與實現建議 ? 1. 文→圖:圖像合成(Text-to-Image) ? 2. 圖→文:自動描述(I…

linux驅動之poll

驅動中 poll 實現 在用戶空間實現事件操作的一個主要實現是調用 select/poll/epoll 函數。那么在驅動中怎么來實現 poll 的底層呢? 其實在內核的 struct file_operations 結構體中有一個 poll 成員,其就是底層實現的接口函數。 驅動中 poll 函數實現原…

第八篇:系統分析師第三遍——3、4章

目錄 一、目標二、計劃三、完成情況四、意外之喜(最少2點)1.計劃內的明確認知和思想的提升標志2.計劃外的具體事情提升內容和標志 五、總結 一、目標 通過參加考試,訓練學習能力,而非單純以拿證為目的。 1.在復習過程中,訓練快速閱讀能力、掌…

C++17 新特性簡解

C17 新特性簡解 一、核心語言特性 1. 結構化綁定&#xff08;Structured Bindings&#xff09; 用途&#xff1a;解構復合類型&#xff08;如元組、結構體&#xff09;為獨立變量 示例&#xff1a; #include <iostream> #include <tuple>int main() {// 解構 st…

PHP使用pandoc把markdown文件轉為word

文章目錄 首先安裝pandocPHP處理 服務器操作系統是Linux&#xff0c;centos 首先安裝pandoc yum install -y pandoc安裝完成后輸入如下代碼&#xff0c;檢查安裝是否成功 pandoc --versionPHP處理 我把markdown內容存到了數據庫里&#xff0c;所以要從數據庫讀取內容。對內容…

【Python學習筆記】Pandas實現Excel質檢記錄表初審、復核及質檢統計

背景&#xff1a; 我有這樣一個需要審核的飛書題目表&#xff0c;按日期分成多個sheet&#xff0c;有初審——復核——質檢三個環節&#xff0c;這三個環節是不同的同學在作業&#xff0c;并且領到同一個題目的人選是隨機的&#xff0c;也就是說&#xff0c;完成一道題的三個人…

守護進程編程、GDB調試以及外網連接樹莓派

目錄 一、什么是守護進程以及如何創建守護進程1. 什么是守護進程&#xff1f;2. 如何創建守護進程&#xff1f; 二、什么是GDB調試以及如何用GDB命令調試C程序1. 什么是GDB&#xff1f;2. 如何用GDB命令調試C程序&#xff1f; 三、外網訪問樹莓派 一、什么是守護進程以及如何創…

Logisim數字邏輯實訓——計數器設計與應用

4位遞增計數器 六進制計數器 十進制計數器 六十進制計數器 二十四進制計數器 計時器

發現“橫”字手寫有難度,對比兩個“橫”字

我發現手寫體“橫”字“好看”程度&#xff0c;難以比得上印刷體&#xff1a; 兩個從方正簡體啟體來的“橫”字&#xff1a; 哪個更好看&#xff1f;我是傾向于左邊一點。 <div style"transform: rotate(180deg); display: inline-block;"> 左邊是我從方正簡…

ubuntu 向右拖動窗口后消失了、找不到了

這是目前單顯示器的設置&#xff0c;因為實際只有1個顯示器&#xff0c;之前的設置如下圖所示&#xff0c;有2個顯示器&#xff0c;一個主顯示器&#xff0c;一個23寸的顯示器 ubuntu 22.04 系統 今天在操作窗口時&#xff0c;向右一滑&#xff0c;發現這個窗口再也不顯示了、找…