Spark修煉之道(基礎篇)——Linux大資料開發基礎:第六節:vi、vim編輯器(二)
本節主要內容
- 緩衝區的使用
- 檔案的存檔與讀盤
- 文字查詢
- 文字替換
作者:周志湖
微訊號:zhouzhihubeyond
網名:搖擺少年夢
1. 緩衝區的使用
在利用vim進行文字編輯時,編輯修改後的文字不會立即儲存到硬碟上,而是儲存在緩衝區中,如果沒有把緩衝區裡的檔案存檔,原始檔案不會被更改。vim在開啟檔案時將文字內容讀到緩衝區中,在進行文字編輯時,修改的文字儲存在緩衝區,此時硬碟上的原檔案不變。下面讓我們來演示一下緩衝區的使用。
假設採用vim 同時開啟兩個文字檔案:
<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">root@ubuntu:/home/xtwy<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># vim test2.txt test1.txt</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"> //開啟檔案後,預設開啟的是test2.txt</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"> //此時我們使用:buffers命令可以看查緩衝區</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"> //得到如下結果</span> :buffers <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> %<span class="hljs-operator" style="box-sizing: border-box;">a</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"test2.txt"</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">line</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"test1.txt"</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">line</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul>
<code class="hljs asciidoc has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">:buffers命令給出的是當前編輯中所有的緩衝區狀態,前面的數字是緩衝區的數字標記,第二個標記就是緩衝區當前的狀態,緊接著是與緩衝區所關聯的檔名。緩衝區的狀態有以下幾種: <span class="hljs-bullet" style="box-sizing: border-box;">- </span>(非活動的緩衝區) a (啟用緩衝區) h (隱藏的緩衝區) % (當前的緩衝區) # (交換緩衝區) <span class="hljs-header" style="box-sizing: border-box;">= (只讀緩衝區)</span> + (已經更改的緩衝區)</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li></ul>
在命令模式輸入:open test1.txt進入test1.txt編輯介面,然後再輸入:buffers檢視緩衝區狀態,得到如下結果
<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">:buffers <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># "test2.txt" line 1</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> %<span class="hljs-operator" style="box-sizing: border-box;">a</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"test1.txt"</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">line</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>
可以看到此時test1.txt載入為活動緩衝區,而test2.txt則被載入到交換緩衝區。此時利用:bprevious命令可以切換test2.txt為活動緩衝區,
執行後得到:
可以看到,此時已經切換回到text2.txt,即將text2.txt載入到當前活動緩衝區當中,採用:buffers命令得到如下結果:
更多緩衝區操作命令如下:
<code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:buffers</span> 電焊工緩衝區狀態 <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:buffer</span> 編輯指定緩衝區 <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:ball</span> 編輯所有緩衝區 <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:bnext</span> 到下一緩衝區 <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:bprevious</span> 到前一緩衝區 <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:blast</span> 到最後一個緩衝區 <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:bfirst</span> 到第一個緩衝區 <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:badd</span> 增加緩衝區 <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:bdelete</span> 刪除緩衝區 <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:bunload</span> 解除安裝緩衝區</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li></ul>
2. 檔案的存檔與讀盤
(一)儲存並退出
在編輯模式中,如果文字編輯任務已經完成,想直接儲存退出,返回到Linux CLI命令列的話,直接按ZZ即可。
(二)讀取檔案內容到緩衝區
在編輯模式中,採用:r命令讀取檔案內容到當前緩衝區,
:r test1.txt可以test1.txt檔案內容寫到緩衝區
(三)將緩衝區內容寫到檔案
在編輯模式中,採用:w命令將修改後的檔案寫到磁碟,也可以使用:wq命令將修改的檔案寫到磁碟上後退出vim返回inux CLI,如果不想儲存直接退出,則使用:q!命令直接退出vim,返回到CLI命令列。
3. 文字查詢
(1)一般搜尋
使用?或/進行字串查詢,例如:
回車之後,游標將定位到下一個Spark上,如果還想往下搜尋,則按n(next),如果想往上搜尋,則按N
(2)正規表示式搜尋
正規表示式搜尋是指加入了像”^,$,.”等特殊匹配字元,它們的作用如下表:
搜尋字串 | 搜尋描述 | 舉例 |
---|---|---|
:/^Spark | 搜尋以Spark為開頭的行 | Spark is …. |
:/YARN$ |
搜尋以YARN為結尾的行 | …Hadoop YARN |
:/Ha…p | 搜尋Ha開頭,中間有三個字元且以p結尾的字串 | Hadoop、Hadaap |
:/e> | 查詢以e結尾的字串,其中>符號是字串結束指示符號,這裡\不是轉義字元,而是與>組合到一起,來表示特殊意義 | like、source |
:/\<Had |
查詢以Had作為開始的字串,\< 同樣具有特殊意義 |
Hadoop、Hadoo |
:/Spa* |
檢視字串中出現至少一次Spar的字串,\< 同樣具有特殊意義 |
Spark、SpaSpark |
:/Sp[ae]rk |
匹配Spark或Sperk | Spark、Sperk |
4. 文字替換
文字替換使用以下語法格式:
<code class="hljs markdown has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">:[<span class="hljs-link_label" style="box-sizing: border-box;">g</span>][<span class="hljs-link_reference" style="box-sizing: border-box;">address</span>]s/search-string/replace-string[/option]</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
其中address用於指定替換範圍,下表給出的是常用示例:
<code class="hljs perl has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">//將當前緩衝區的第一行中的Downloading替換為Download : <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">s</span>/Downloading/Download //將當前緩衝區中的第一行到第五行中的Spark替換為spark :<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">s</span>/Spark/spark //將當前緩衝區中的第一行到當前游標所在行的Spark替換為spark :<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,. <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">s</span>/Spark/spark //將當前游標所在行到緩衝區最後一行的Spark替換為spark :.,$ <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">s</span>/Spark/spark //將整個緩衝區中的Spark替換為spark :% <span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">s/Spark/spark /</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/當前行中第一次搜尋到的Spark替換為spark : s/</span>Spark/spark //將當前行中所有的Spark替換為spark :<span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">s/Spark/spark/g</span> //將所有的<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span>轉換成And,不包括theta這種字串,只會作用於the這種單獨存在的字串 :% <span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">s/\<the\>/The/g</span> </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li></ul>
轉載: http://blog.csdn.net/lovehuangjiaju/article/details/47978493
相關文章
- Spark修煉之道(基礎篇)——Linux大資料開發基礎:第五節:vi、vim編輯器(一)SparkLinux大資料
- Spark修煉之道(基礎篇)——Linux大資料開發基礎:第七節:程式管理SparkLinux大資料
- Spark修煉之道(基礎篇)——Linux大資料開發基礎:第八節:網路管理SparkLinux大資料
- Spark修煉之道(基礎篇)——Linux大資料開發基礎:第四節:Linux檔案系統(二)SparkLinux大資料
- Spark修煉之道(基礎篇)——Linux大資料開發基礎:第十節:Shell程式設計入門(二)SparkLinux大資料程式設計
- Linux大資料開發基礎:第五節:vi、vim編輯器(一)Linux大資料
- Spark修煉之道(基礎篇)——Linux大資料開發基礎:第三節:使用者和組SparkLinux大資料
- Spark修煉之道(基礎篇)——Linux大資料開發基礎:第十五節:基礎正規表示式(一)SparkLinux大資料
- Spark修煉之道(基礎篇)——Linux大資料開發基礎:第二節:Linux檔案系統、目錄(一)SparkLinux大資料
- Spark修煉之道(基礎篇)——Linux大資料開發基礎:第九節:Shell程式設計入門(一)SparkLinux大資料程式設計
- 使用 Vi/Vim 編輯器:基礎篇
- Spark修煉之道(基礎篇)——Linux大資料開發基礎:第一節、Linux介紹、安裝及使用初步SparkLinux大資料
- Spark修煉之道(基礎篇)——Linux大資料開發基礎:第十二節:Shell程式設計入門(四)SparkLinux大資料程式設計
- Spark修煉之道(基礎篇)——Linux大資料開發基礎:第十三節:Shell程式設計入門(五)SparkLinux大資料程式設計
- Spark修煉之道(基礎篇)——Linux大資料開發基礎:第十四節:Shell程式設計入門(六)SparkLinux大資料程式設計
- Linux基礎命令---vim文字編輯Linux
- linux基礎命令——文字編輯vimLinux
- 編輯器之神VIM 總結 基礎部分
- 『學了就忘』vim編輯器基礎 — 94、vim編輯器介紹
- Spark修煉之道(進階篇)——Spark入門到精通:第六節 Spark程式設計模型(三)Spark程式設計模型
- 【大資料】Spark RDD基礎大資料Spark
- 零基礎入門前端的修煉之道前端
- Linux大資料開發基礎:第四節:Linux檔案系統(二)Linux大資料
- 『學了就忘』vim編輯器基礎 — 97、vim使用技巧
- Spark修煉之道(進階篇)——Spark入門到精通:第五節 Spark程式設計模型(二)Spark程式設計模型
- Spark修煉之道(進階篇)——Spark入門到精通:第二節 Hadoop、Spark生成圈簡介SparkHadoop
- Linux– 檔案編輯器 vi/vim(1)Linux
- Linux大資料開發基礎:第三節:使用者和組Linux大資料
- Spark修煉之道(進階篇)——Spark入門到精通:第七節 Spark執行原理Spark
- Spark修煉之道(進階篇)——Spark入門到精通:第三節 Spark Intellij IDEA開發環境搭建SparkIntelliJIdea開發環境
- 【基礎篇索引】索引基礎(二)索引
- Spark修煉之道(進階篇)——Spark入門到精通:第一節 Spark 1.5.0叢集搭建Spark
- Spark修煉之道(進階篇)——Spark入門到精通:第八節 Spark SQL與DataFrame(一)SparkSQL
- Spark修煉之道(進階篇)——Spark入門到精通:第四節 Spark程式設計模型(一)Spark程式設計模型
- 大資料基礎學習-9.Spark2.1.1大資料Spark
- Linux基礎命令---文字編輯tacLinux
- Linux基礎命令---文字編輯sedLinux
- Linux基礎命令---文字編輯teeLinux