亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

VIM中的寄存器簡介

2024-06-28 13:21:06
字體:
來源:轉載
供稿:網友
VIM中的寄存器簡介

  原來在vim粘貼從其他地方復制過來的文本的時候,一直用的shift + inert,那時就想,能不能夠直接就像p那樣粘貼,不必非得進入插入模式再來粘貼。后來看了《vim實用技巧》上關于vim寄存器的介紹,發現這里面大有文章,所以今天特意拿來和大家分享。

  首先對vim中的寄存器來進行個大致瀏覽,它主要分為這么幾個部分:

    1.無名寄存器(" )

    2.復制專用寄存器 (0)

    3.系統剪貼板(X11視窗系統下的主剪貼板)(*)

    4.黑洞寄存器 (_)

    5.命名寄存器 (a-z)

    6.表達式寄存器 (=)

    7.其他的一些只讀寄存器("/寄存器特殊)

  在詳細了解這些寄存器之前,我們還得了解幾個和寄存器有關的命令:

  0.各種復制粘貼命令說明

  本文中提到的d命令,y命令,c命令指的是和這個操作符相關聯的命令集合,比如和y操作符相關聯的一些命令如下:

1 yy          //復制當前行2 yw         //當前光標下面的這個單詞3 yit         //復制一個html標簽中的內容4 yft         //復制當前行上光標到第一個t之間的所有內容5 6 。。。

  1.在普通模式中使用寄存器

  在執行粘貼(p)命令,或者復制(y)和剪切(x,s,d,c和他們的大寫)命令時,可以在前面加上 "{register}(其中那個{register}代表的是寄存器的名字),這樣我們就可以使用相應的寄存器了,如果不加的話,默認使用的是無名寄存器。

  比如,%代表的是文件名寄存器,存放的是當前正在編輯的文件名,我現在打開了一個文件file2,并且正處于普通模式,如下圖所示:

  

  此時如果我輸入以下內容:

1 "%p2 3 //表示將文件名寄存器的內容粘貼到當前行

  文件內容就變成這個樣子了:

  

  2.在插入模式中使用寄存器

  在插入模式,當我們按下<CTRL> + R鍵,再加上相應的寄存器的名字,就可以插入寄存器中的內容了。

  比如=代表的是表達式寄存器,比如我在vim中輸入如下命令:

1 i                     #進入插入模式2 <C-r>=              #按下<Ctrl>+r鍵,再按等號鍵,此時就可以輸入表達式了            

  此時vim的頁面如下圖所示:

  

  然后,此時光標跳到了vim最底下的任務條(具體這個地方我也不知道叫啥,就是ex模式輸入命令的那個地方),在這里就可以輸入vim腳本命令了,比如,我輸入一個2+3。那么運算的結果5自動就會添加到主窗口,光標也會回到主窗口,如下圖所示:

  

  3.查看當前寄存器的內容

  在ex模式下輸入reg或者dis命令,就可以查看當前所有寄存器的內容了。運行的結果如下圖所示:

  

  Ok,了解了這幾個常用的關于寄存器的命令之后,我們再來了解一下vim中的各種寄存器。

  

  首先是無名寄存器,它用一個雙引號(")來標識,這個是我們接觸的最多的寄存器了,如果沒有特別指定的話,復制(y),剪切(x,s,d,c和他們的大寫),粘貼(p)命令都會將內容存放到這個寄存器里面,或是從這個寄存器里面來讀取內容。

  

  第二個是復制專用寄存器,就是使用y命令復制的內容都會存放到這個寄存器中,比如這么一段文本:

1 PRintf("Hello, ");2 printf("world!/n");

  我先把光標停留在第一行上,按下yy命令,將第一行復制,然后再移到第二行,按下dd命令,刪除第二行。此時如果我們想要粘貼第一行的內容的話,直接按p是不行的,因為此時的p將引用無名寄存器中的內容,而它的內容已經被第二行的內容給覆蓋了,所以此時就輪到復制專用寄存器大顯身手了,此時如果按下這個命令:

1 "0p

  這時,將會粘貼復制專用寄存器中的內容。這里直接貼結果圖可能看不出什么效果,那我就貼一下用dd刪除了第二行后所有寄存器的內容給大家看看吧:

  從這里可以看出,無名寄存器保存的是dd命令刪除的內容,而復制專用寄存器(0)保存的是y命令復制的內容。

  

  第三個是系統剪貼板寄存器(+)和X11視窗系統的主剪貼板寄存器(*)。個人認為這個比較常用,所以就先說了。眾所周知,任何操作系統都有一個剪貼版板,而vim就是用+寄存器來代表這個剪貼版,我經常遇到的情況就是在瀏覽器中復制了一段文本,然后需要在vim中粘貼,感覺這時候這個+寄存器就大顯身手了。比如在逛博客的時候看到別人的代碼,如下所示:

1 def main():2     print "Python is Fun"3 4 main()

  直接復制就都復制到系統剪貼板了,這時打開vim想要粘貼到vim中,那么只需要這個命令就好了

“+p

  這樣就把系統剪貼板中的內容直接貼進vim的緩沖區了,結果如下圖所示(這個是Windows下面的gvim,所以沒有主剪貼板這個寄存器,+和*表示的是一個寄存器):

  

  需要聲明的一點是這個剪貼板需要vim在編譯的時候加上clipboard這個選項,想要查看自己的vim有沒有這個選項,只要打開vim,在ex模式下輸入version命令,就可以查看自己的vim支不支持這個特性了,如下圖所示:

  

  還有一個主剪貼板的寄存器,這個是在linux下的X11視窗系統中才存在的東西,這個寄存器中存放的就是上次高亮選中的內容。這個由于我Linux上面自帶的vim編譯的時候沒有添加clipboard選項,所以就不演示了。

  第四個要說明的就是黑洞寄存器,顧名思義,這個寄存器的功能和/dev/null設備非常地相似,就是將一切輸入其中的東西都吞噬掉^ o ^。平常我們經常用x命令來刪除某個字符,用dd命令來刪除某行,其實這些都不是刪除,是剪貼,真正的刪除應該是這些命令:

1 "_dd         //刪除某行2 "_x          //刪除光標下的字符

  

  第五個要說明的就是命名寄存器了,這個一共是a-z26個寄存器,分別用英文字母來表示。這個感覺主要需要講的就是大寫字母和小寫字母的區別,當向寄存器中寫入內容的時候(即復制或者剪切的時候),大寫字母表示的是將當前要復制的內容追加到寄存器中,而小寫字母表示的是將當前要復制的內容將寄存器中的原有內容給覆蓋掉。這個可以類比于數據流重定向中的">"和">>"命令。

  舉個例子,比如現在有個文件file2,其中的內容是這樣

1 printf("Hello, ");2 printf("World!/n");

  而a寄存器中的內容剛開始是這樣:

  

  我在第一行上執行了 "Ayy命令之后,a寄存器中的內容就變成了這樣,第一行的內容被追加到了寄存器中:

  

  接著我再在第二行上執行 "ayy命令之后,a寄存器中的內容就變成了這樣,寄存器中原來的內容都被覆蓋掉了:

  

  第六個要說的就是表達式寄存器,這個在前面已經舉過例子了,可以在normal模式下按"=或者插入模式下按<C-r>,=來進入編輯vim表達式的模式,表達式運行的結果將被插入到vim的緩沖區中。這個我一般用來做運算,比如這樣:

  

  第七個要說的就是一些存放特定信息的寄存器了,主要是下面這幾個:

    7.1  當前文件名寄存器 (%)

    7.2  輪換文件名寄存器 (#)

    7.3  上次執行的ex命令 (:)

    7.4  上次查找的關鍵字 (/)

  這個舉例子的話就是下面這個,我打開了兩個文件file1和file2,然后切換到了file2,并進行了一次查找,查找了hello關鍵字,執行了兩次reg命令,第二次reg命令執行結果如下圖:

  

  最后四行分別就是對應我們上面講的那四個寄存器,這里需要注意的的是關鍵字寄存器(/)比較特殊,它是可以通過let命令來更改的,具體的執行命令如下:

let @/="the"

  上面這條命令就是讓查找的關鍵字變成了the。

 

  OK,這個就是全部內容了,如果大家想對vim中的寄存器中的內容有進一步的了解,可以參考《vim實用技巧》第10章,或者查看vim中關于寄存器的幫助文檔。

:help registers

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩电影大全免费观看2023年上| 久久97精品久久久久久久不卡| 中国日韩欧美久久久久久久久| 亚洲自拍欧美另类| 国产精品日本精品| 免费99精品国产自在在线| 欧美综合在线观看| 国产美女高潮久久白浆| 91爱爱小视频k| 国产伊人精品在线| 国产女精品视频网站免费| 97久久精品在线| 亚洲国产欧美一区二区三区同亚洲| 国产精国产精品| 国产精品久久久久久久久影视| 欧美性精品220| 欧美精品在线免费播放| 91亚洲国产成人久久精品网站| 成人黄色片网站| 国产国产精品人在线视| 欧美中文字幕视频在线观看| 国产91热爆ts人妖在线| 最近中文字幕日韩精品| 国产精品日韩欧美综合| 欧美老女人www| 亚洲三级av在线| 国产精品99一区| 欧美日韩性视频在线| 欧美日韩视频免费播放| 国产精品 欧美在线| 色老头一区二区三区| 久久久精品电影| 国产亚洲成av人片在线观看桃| 精品视频www| 亚洲日韩欧美视频| 91精品视频免费看| 97精品一区二区视频在线观看| 欧美激情第三页| 国产女人18毛片水18精品| 国产精品色婷婷视频| 97精品视频在线播放| 国产精品91免费在线| 在线电影欧美日韩一区二区私密| 青青精品视频播放| 91精品视频专区| 日韩精品极品在线观看播放免费视频| 欧美一级黑人aaaaaaa做受| 国内精品久久久久影院 日本资源| 91在线观看免费| 综合136福利视频在线| 国产精品18久久久久久首页狼| 欧美在线一区二区三区四| 亚洲成人精品在线| 中文字幕在线成人| 日韩av在线免费播放| 欧美最猛性xxxx| 国产精品女视频| 亚洲人成电影网站| 都市激情亚洲色图| 国产成+人+综合+亚洲欧美丁香花| 久久69精品久久久久久久电影好| 在线观看日韩专区| 国产精品久久久久久久av电影| 高清欧美性猛交xxxx| 欧美在线一区二区三区四| 欧美黄色www| 伊人伊成久久人综合网小说| 国产精品主播视频| 国产视频亚洲精品| www.欧美精品| 欧美综合在线观看| 91精品国产沙发| 亚洲最大福利视频网站| 91精品久久久久久| 97av在线视频免费播放| 亚洲香蕉av在线一区二区三区| 国产成+人+综合+亚洲欧洲| www国产精品com| 欧美精品成人91久久久久久久| 国产精品精品视频| 久久久精品2019中文字幕神马| 国产精品国产三级国产aⅴ浪潮| 欧美日韩人人澡狠狠躁视频| 97精品国产97久久久久久春色| 亚洲国产古装精品网站| 91丝袜美腿美女视频网站| 国产精品久久久久久久久粉嫩av| 色综合久久精品亚洲国产| 国产精品黄色av| 亚洲专区国产精品| 黄色成人在线免费| 91精品视频大全| 日韩在线观看高清| 欧美黑人xxx| 亚洲国产精品悠悠久久琪琪| 日韩精品在线视频美女| 91九色精品视频| 欧美亚洲一级片| 亚洲国产97在线精品一区| 国产精品视频自拍| 日韩免费中文字幕| 亚洲在线一区二区| 日韩视频精品在线| 成人免费视频xnxx.com| 亚洲精品电影在线观看| 久久成人av网站| 亚洲sss综合天堂久久| 午夜免费在线观看精品视频| 久久精品99久久香蕉国产色戒| 久久久精品美女| 日韩成人在线网站| 欧美国产欧美亚洲国产日韩mv天天看完整| 中国人与牲禽动交精品| 91av网站在线播放| 久久国产色av| 欧美福利视频在线| 国产区亚洲区欧美区| 国产精品免费久久久久影院| 国产视频亚洲精品| 九九久久久久99精品| 97色在线观看免费视频| 日韩免费观看高清| 亚洲欧美一区二区三区在线| 啪一啪鲁一鲁2019在线视频| 欧美激情久久久| 久久久久久成人| 亚洲综合日韩在线| 欧美性一区二区三区| 97欧美精品一区二区三区| 国产精品久久久久av| 亚洲国产一区自拍| 亚洲欧美综合精品久久成人| 黑人狂躁日本妞一区二区三区| 国产成人精品一区二区三区| 中文字幕av一区中文字幕天堂| 法国裸体一区二区| 成人国产在线激情| 亚洲美女性视频| 国产免费一区二区三区在线观看| 日韩免费观看网站| 亚洲一区二区免费在线| 国产一级揄自揄精品视频| 免费不卡欧美自拍视频| 色婷婷综合久久久久中文字幕1| 91精品视频在线看| www.99久久热国产日韩欧美.com| 国产一区二区日韩| 欧美日韩国产一区二区三区| 亚洲男人av在线| 欧美洲成人男女午夜视频| 日韩精品视频在线观看网址| 亚洲精品一区中文字幕乱码| 视频一区视频二区国产精品| 日韩欧美中文在线| 中文字幕亚洲一区在线观看| 欧美日在线观看| 亚洲第一黄色网| 69视频在线播放| 18久久久久久| 在线观看久久av| 久久精品福利视频| 国模私拍一区二区三区| 亚洲高清免费观看高清完整版| 欧美精品午夜视频|