亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

VIM 快速編輯示例

系統(tǒng) 2486 0

VIM 快速編輯示例

本網(wǎng)頁收集了一些簡單的 VIM 操作,這些操作要么其它普通文本編輯器不能完成,要么完成起來很慢。通過本網(wǎng)頁,可以堅定初學(xué)者學(xué)習(xí) VIM 的決心與信心。如果你有什么好的易于演示的簡易技巧,請與滇狐 聯(lián)系 ,將更多內(nèi)容添加到這張網(wǎng)頁中。

另外,如果沒有明確說明,本文中的提到的按鍵均是大小寫敏感的。例如,文中提到“按下 G”時,你按的鍵應(yīng)該是“Shift + G”。

1?準(zhǔn)備工作

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

this is a test

2?查找替換

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

this
is
a
test

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

3?行的拼接

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

按幾下 ESC 進入 Normal 模式,然后輸入這段命令: ggVG gg 表示跳到文本開頭, V 表示進入行選擇模式, G 表示選擇到文章末尾。通過這 3 條命令,總共 4 個按鍵,我們選中了整篇文章。

然后,按下冒號 : 進入命令模式,狀態(tài)欄上出現(xiàn): :'<,'> 字樣,在它后面輸入 j ,然后回車,可以看到,整篇文章又被拼接起來了,整個操作包括回車只按了 7 次鍵:

this is a test

4?復(fù)制粘貼與重復(fù)動作

按幾下 ESC 確認當(dāng)前處在 Normal 模式下,然后按 yy ,即可將當(dāng)前行復(fù)制到默認寄存器中(相當(dāng)于剪貼板)。然后按下 12p ,VIM 將執(zhí)行粘貼動作 12 次,屏幕上出現(xiàn)了 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 中,復(fù)制和粘貼操作相當(dāng)快捷。另外,VIM 中大部分命令都可以通過在命令前加數(shù)字重復(fù)若干遍。

5?列操作

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

按幾下 ESC 確認當(dāng)前處在 Normal 模式下,然后按 gg 跳到第一行,按下 Ctrl + v 進入列選擇模式(如果你按下 Ctrl + v 沒能進入列選擇模式,請看 這里 ),然后按 G ,跳到文章最后一行,此時你應(yīng)該看到,文本的第一列被選中了,而且只選中了第一列。按下 U 鍵,可以看到,每行的第一個字母都變?yōu)榇髮懥恕L崾荆哼x中文本后按 u 可以將文本變?yōu)樾懀x中文本后按 ~ 可以翻轉(zhuǎn)原有的大小寫。

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 ,進入列插入狀態(tài),輸入星號 * ,再按下 ESC,你會看到,所有行之前都出現(xiàn)了一個星號:

*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?宏的錄制

接下來,我們要將文本的偶數(shù)行修改為: This?is?another?test 。由于所有的偶數(shù)行都要進行同樣的操作,因此我們把這個操作錄制下來,然后重復(fù)播放若干遍,就能很快地完成這項工作了。

首先,按幾下 ESC 確認處在 Normal 模式下,再按下 gg 跳到第一行,準(zhǔn)備開始操作。我們首先按下 q 鍵,然后再按一個其它字母,將這個宏錄制到該字母對應(yīng)的寄存器下。例如我們這里使用 m 寄存器,則按 qm 。此時 VIM 狀態(tài)欄出現(xiàn)“recording”字樣,表明已經(jīng)進入了錄制狀態(tài)。

然后,我們把第二行的 a 修改為 another 。首先按 j 進入第二行,然后按 $ 跳到行末,再按兩下 b 往前跳兩個單詞,此時光標(biāo)停在字母 a 上。然后我們按下 caw 鍵刪除 a 并進入插入狀態(tài),然后輸入 another? ,按 ESC 回到 Normal 狀態(tài),按 j 進入下一行,整個操作步驟就完成了。最后,我們再按一下 q ,結(jié)束該宏的錄制。

接下來我們播放這個宏,完成整個操作步驟。在鍵盤上輸入 1000@m ,表示將 m 寄存器里的宏播放 1000 次,馬上可以看到,文章中所有偶數(shù)行的 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 次,但事實上,執(zhí)行到第 6 次的時候,光標(biāo)挪到了屏幕最下方,于是執(zhí)行過程就自動停止了。因此,在批量操作的時候,我們可以指定足夠大的數(shù)字,而不用擔(dān)心出現(xiàn)問題。

另外,修改 a 的時候,我們跳到行末后再使用 b 命令以單詞為單位跳轉(zhuǎn),而沒使用 h 一個字母一個字母往回挪,我們使用 caw 修改整個單詞,而不使用 s 命令刪除單個字母并進入 Insert 模式。這些細節(jié)可以保證錄制得到的宏更具有一般性。

7?行尾塊操作

注:本章由 Jason Han 網(wǎng)友貢獻,感謝他來信指出滇狐原先對于行尾塊操作理解的錯誤。

下面,我們要在每行的尾部都添加一個感嘆號。之前我們在每行頭部添加一個星號的時候,用的是 Ctrl-V 列操作。現(xiàn)在要在行尾添加,能不能繼續(xù)用列操作呢?直觀上似乎是不行的,每行的長度不一樣,行尾位置參差不齊,如何使用列模式往行尾添加?xùn)|西呢?

事實上,Vim 提供了一種特殊的列模式,叫做行尾塊模式,也就是說,我們是可以通過 Ctrl-V 模式來選中長度不同的行的行尾,然后對行尾作統(tǒng)一操作的,操作步驟如下:

按下 gg 跳到第一行,按 Ctrl + v 進入列選擇模式,再按 G ,選中全文的第一列,然后按下 $ ,進入行尾塊模式,按下 A ,進入塊插入狀態(tài),輸入星號 ! ,再按下 ESC,你會看到,所有行尾部都出現(xiàn)了一個感嘆號:

*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 確認當(dāng)前出于 Normal 模式,然后使用 gg 跳到第一行,按 A 進行行尾插入,輸入 < ,然后按下回車,輸入 > ,最后 ESC 回到 Normal 狀態(tài),第一行修改就完成了。

然后,我們按 j 進入下一行,也就是第三行,再按 . ,可以看到,第三行尾部也出現(xiàn)了小于號,并且自動添加了第四行的大于號。反復(fù)按 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!<
>

解說:點命令的作用是,重復(fù)最近一次所做的編輯操作。由于在第一行里做的操作是行尾添加并插入新行,因此在第三行 (原先的第二行) 重復(fù)這個動作的時候,也會在行尾添加同樣的字符。點命令功能不如宏強大,但它使用起來比宏簡便,因此也有著廣泛的用途。

VIM 快速編輯示例


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 性欧美一级毛片欧美片 | 国产成人亚洲精品一区二区在线看 | 狠狠色狠狠干 | 久久成人免费大片 | 狠狠色噜狠狠狠狠 | 久久精品国产无限资源 | 久久riav国产精品 | 婷婷六月色 | 亚洲欧美日韩国产综合专区 | 亚洲专区区免费 | 九九99久麻豆精品视传媒 | 国产区一区二区三区 | 亚洲精品免费视频 | 免费网站啪啪大全 | 日韩久久网 | 中文字幕 亚洲精品 | 午夜影院普通 | 欧美色视频超清在线观看 | 中文字幕在线观看不卡视频 | 久久99免费视频 | 色久综合大榴莲 | 国产精品一区二区三区四区五区 | 日本免费一区二区三区 | 91久久精品都在这里 | 午夜国产精品理论片久久影院 | 波多野结衣久久一区二区 | 精品一区 二区三区免费毛片 | 末成年娇小性色xxxxx视频 | 久久国产乱子伦精品免费一 | 97精品视频 | 两个人高清视频图片中文字幕 | 成人国产三级精品 | 婷婷色中文网 | 日本不卡视频网站 | 国产在线播放一区 | 久久久影院 | 偷偷狠狠的日日2020 | 国产尤物福利视频一区二区 | 天天色天天射综合网 | 91热久久免费频精品黑人99 | 欧美日韩高清在线观看 |