中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vim的高級使用實例分析

發布時間:2022-02-16 16:25:46 來源:億速云 閱讀:139 作者:iii 欄目:開發技術

這篇“Vim的高級使用實例分析”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Vim的高級使用實例分析”文章吧。

Vim的高級使用實例分析

1. 準備工作

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

this is a test

2. 查找替換

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

this
is
atest

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

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 testthis is a testthis is a testthis is a testthis is a testthis is a testthis is a testthis is a testthis is a testthis is a testthis is a testthis is a testthis is a test

解說:在 VIM 中,復制和粘貼操作相當快捷。另外,VIM 中大部分命令都可以通過在命令前加數字重復若干遍。

5. 列操作

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

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

This is a testThis is a testThis is a testThis is a testThis is a testThis is a testThis is a testThis is a testThis is a testThis is a testThis is a testThis is a testThis 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的高級使用實例分析”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節
推薦閱讀:
  1. vim 使用
  2. vim的使用

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vim
AI

海口市| 商水县| 济南市| 介休市| 调兵山市| 伊川县| 西华县| 文安县| 太原市| 师宗县| 罗源县| 永善县| 隆德县| 磴口县| 孟村| 高邮市| 泰顺县| 桂平市| 永年县| 辰溪县| 西乌珠穆沁旗| 涿鹿县| 仲巴县| 彰武县| 大足县| 兴义市| 潜江市| 新巴尔虎左旗| 泸溪县| 巴南区| 大丰市| 井陉县| 广安市| 青冈县| 兴文县| 云和县| 禄丰县| 诸城市| 轮台县| 福安市| 六枝特区|