首頁 系統教程 Linux 探索VIM進階操作技巧

探索VIM進階操作技巧

Jan 05, 2024 am 10:52 AM
linux linux教程 紅帽 linux系統 linux指令 linux認證 紅帽linux linux視頻

導讀 此文收集了一些簡單的 VIM 操作,這些操作要麼其它普通文字編輯器不能完成,要麼完成起來很慢。透過本文的介紹,可以堅定初學者學習 VIM 的決心與信心。如果你有什麼好的簡單示範的簡易技巧,歡迎留言。另外,如果沒有明確說明,本文的提到的按鍵均是大小寫敏感的。例如,文中提到「按下 G」時,你按的鍵應該是「Shift G」。

探索VIM進階操作技巧

#1. 準備工作

首先,我們打開 VIM,輸入一段文本,用於今天的演示:

this is a test
登入後複製
登入後複製
2. 尋找替換

按幾個 ESC 進入 ​​Normal 模式,輸入以下指令::%s/ /\r/g/ 。回車後得到的效果如下:

this
is
a
test
登入後複製

解說:這條指令的作用是,將文章中所有的空格替換為回車。幾乎所有的編輯器都支援查找替換,但並不是所有的編輯器都支援把空格替換為回車,因此這個功能在許多別的編輯器裡做起來是比較繁瑣的。

3. 行的拼接

剛才我們把一行文字打碎為 4 行了,那要如何再把它們拼接起來呢?當然,我們可以透過前面說的查找替換的方式,將回車再替換為空格,實現行的拼接。但是,這裡我們用的是另一種方式。

按幾個 ESC 進入 ​​Normal 模式,然後輸入這段指令:ggVG。 gg 表示跳到文字開頭,V 表示進入行選擇模式,G 表示選擇到文章最後。透過這 3 個指令,總共 4 個按鍵,我們選取了整篇文章。

然後,按下冒號: 進入指令模式,狀態列上出現::'字樣,在它後面輸入j,然後回車,可以看到,整篇文章又被拼接起來了,整個操作包含回車只按了7 次鍵:

this is a test
登入後複製
登入後複製
4. 複製貼上與重複動作

按幾個 ESC 確認目前處在 Normal 模式下,然後按下 yy,即可將目前行複製到預設暫存器中(相當於剪貼簿)。然後按下 12p,VIM 將執行貼上動作 12 次,螢幕上出現了 13 行這樣的字元:

this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
登入後複製

解說:在 VIM 中,複製和貼上操作相當快速。另外,VIM 中大部分指令都可以透過在指令前面加數字重複若干遍。

5. 列操作

接下來我們把每一行的開頭第一個字母改為大寫。

按幾下ESC 確認目前處在Normal 模式下,然後按gg 跳到第一行,按下Ctrl v進入列選擇模式(如果你按下Ctrl v 沒能進入列選擇模式,請看這裡),然後按G,跳到文章最後一行,此時你應該看到,文本的第一列被選中了,而且只選中了第一列。按下 U 鍵,可以看到,每行的第一個字母都變成大寫了。提示:勾選文字後按 u 可以將文字變成小寫,勾選文字後按 ~ 可以翻轉原有的大小寫。

This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
登入後複製

然後,我們在每行的前面加上一個星號。按下gg 跳到第一行,按Ctrl v 進入列選擇模式,再按G,選取全文的第一列,然後按I,進入列插入狀態,輸入星號*,再按下ESC,你會看到,所有行之前都出現了一個星號:

*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
登入後複製

解說:對於寫程式的人來說,把一段程式碼批次註解掉是一個很常見的操作,使用列插入可以輕鬆做到這一點。另外,列選擇後按 x 刪除被選取的區塊,可以批次地解除註解。

6. 巨集的錄製

接下來,我們要將文字的偶數行修改為:This is another test。由於所有的偶數行都要進行同樣的操作,因此我們把這個操作錄製下來,然後重複播放若干遍,就能很快地完成這項工作了。

首先,按幾下 ESC 確認處在 Normal 模式下,再按 gg 跳到第一行,準備開始操作。我們先按下 q 鍵,然後再按一個其它字母,將這個巨集錄製到該字母對應的暫存器下。例如我們這裡使用 m 暫存器,則按 qm。此時 VIM 狀態列出現「recording」字樣,表示已經進入了錄製狀態。

然后,我们把第二行的 a 修改为 another。首先按 j 进入第二行,然后按 $ 跳到行末,再按两下 b 往前跳两个单词,此时光标停在字母 a 上。然后我们按下 caw键删除 a 并进入插入状态,然后输入 another ,按 ESC 回到 Normal 状态,按 j 进入下一行,整个操作步骤就完成了。最后,我们再按一下 q,结束该宏的录制。

接下来我们播放这个宏,完成整个操作步骤。在键盘上输入 1000@m,表示将 m 寄存器里的宏播放 1000 次,马上可以看到,文章中所有偶数行的 a 都变成了 another。

*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
登入後複製

解说:虽然我们指定播放 1000 次,但事实上,执行到第 6 次的时候,光标挪到了屏幕最下方,于是执行过程就自动停止了。因此,在批量操作的时候,我们可以指定足够大的数字,而不用担心出现问题。

另外,修改 a 的时候,我们跳到行末后再使用 b 命令以单词为单位跳转,而没使用 h 一个字母一个字母往回挪,我们使用caw 修改整个单词,而不使用 s 命令删除单个字母并进入 Insert模式。这些细节可以保证录制得到的宏更具有一般性。

7. 行尾块操作

注:本章由 Jason Han 网友贡献,感谢他来信指出滇狐原先对于行尾块操作理解的错误。

下面,我们要在每行的尾部都添加一个感叹号。之前我们在每行头部添加一个星号的时候,用的是 Ctrl-V 列操作。现在要在行尾添加,能不能继续用列操作呢?直观上似乎是不行的,每行的长度不一样,行尾位置参差不齐,如何使用列模式往行尾添加东西呢?

事实上,Vim 提供了一种特殊的列模式,叫做行尾块模式,也就是说,我们是可以通过 Ctrl-V模式来选中长度不同的行的行尾,然后对行尾作统一操作的,操作步骤如下:

按下 gg 跳到第一行,按 Ctrl-V 进入列选择模式,再按 G,选中全文的第一列,然后按下 $,进入行尾块模式,按下 A,进入块插入状态,输入星号 !,再按下 ESC,你会看到,所有行尾部都出现了一个感叹号:

*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
登入後複製
登入後複製
8. 点命令

接下来,我们在每行的末尾加上一个小于号 。

由于我们需要在每行后面添加新行,因此我们无法使用块选择方式批量添加小于大于号。使用宏录制的方式是可以做到这点的,但操作稍嫌繁琐了一些。使用点命令,可以非常方便地做到这一点。

先按几下 ESC 确认当前出于 Normal 模式,然后使用 gg 跳到第一行,按 A 进行行尾插入,输入 ,最后 ESC 回到 Normal 状态,第一行修改就完成了。

然后,我们按 j 进入下一行,也就是第三行,再按 .,可以看到,第三行尾部也出现了小于号,并且自动添加了第四行的大于号。反复按j.j.j. ,直到每一行都完成了这个编辑动作为止。

*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
登入後複製
登入後複製

解说:点命令的作用是,重复最近一次所做的编辑操作。由于在第一行里做的操作是行尾添加并插入新行,因此在第三行(原先的第二行)重复这个动作的时候,也会在行尾添加同样的字符。点命令功能不如宏强大,但它使用起来比宏简便,因此也有着广泛的用途。

以上是探索VIM進階操作技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

vscode需要什麼電腦配置 vscode需要什麼電腦配置 Apr 15, 2025 pm 09:48 PM

VS Code 系統要求:操作系統:Windows 10 及以上、macOS 10.12 及以上、Linux 發行版處理器:最低 1.6 GHz,推薦 2.0 GHz 及以上內存:最低 512 MB,推薦 4 GB 及以上存儲空間:最低 250 MB,推薦 1 GB 及以上其他要求:穩定網絡連接,Xorg/Wayland(Linux)

Linux體系結構:揭示5個基本組件 Linux體系結構:揭示5個基本組件 Apr 20, 2025 am 12:04 AM

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

vscode終端使用教程 vscode終端使用教程 Apr 15, 2025 pm 10:09 PM

vscode 內置終端是一個開發工具,允許在編輯器內運行命令和腳本,以簡化開發流程。如何使用 vscode 終端:通過快捷鍵 (Ctrl/Cmd ) 打開終端。輸入命令或運行腳本。使用熱鍵 (如 Ctrl L 清除終端)。更改工作目錄 (如 cd 命令)。高級功能包括調試模式、代碼片段自動補全和交互式命令歷史。

git怎麼查看倉庫地址 git怎麼查看倉庫地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

notepad怎麼運行java代碼 notepad怎麼運行java代碼 Apr 16, 2025 pm 07:39 PM

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

Linux的主要目的是什麼? Linux的主要目的是什麼? Apr 16, 2025 am 12:19 AM

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

vscode終端命令不能用 vscode終端命令不能用 Apr 15, 2025 pm 10:03 PM

VS Code 終端命令無法使用的原因及解決辦法:未安裝必要的工具(Windows:WSL;macOS:Xcode 命令行工具)路徑配置錯誤(添加可執行文件到 PATH 環境變量中)權限問題(以管理員身份運行 VS Code)防火牆或代理限制(檢查設置,解除限制)終端設置不正確(啟用使用外部終端)VS Code 安裝損壞(重新安裝或更新)終端配置不兼容(嘗試不同的終端類型或命令)特定環境變量缺失(設置必要的環境變量)

See all articles