Shell腳本與vi編輯器:vi啟動與退出、工作模式、命令大全

Vi簡介

  1. Vi是一種廣泛存在于各種UNIX和Linux系統中的文本編輯程序。
  2. Vi不是排版程序,只是一個純粹的文本編輯程序。
  3. Vi是全屏幕文本編輯器,它沒有菜單,只有命令。
  4. Vi不是基于窗口的,所以,這個多用途編輯程序可以用于在任何類型的終端上編輯各式各樣的文件。
  5. Vi的功能十分強大,但是命令繁多,熟練掌握起來有一定難度。
  6. Vi的發明者:bill joy

Vi的啟動

$ Vi? filename? 或者$ Vi
如果filename已經存在,Vi會打開現存文件
如果是一個新文件,Vi會創建它

Vi的退出

在命令行模式下輸入:q,:q!,:wq或者:x,可以退出Vi
:w????????????????? 保存
:w filename???????? 另存為filename
:wq!??????????????? 保存并退出
:wq! filename?????? 以filename為文件名保存后退出
:q!???????????????? 不保存退出
:x????????????????? 保存并退出,功能和:wq!相同

Vi的工作模式

Vi有三種工作模式,分別為:命令模式、插入模式(編輯模式)和末行模式,三種模式分別進行不同的操作,它們之間可以進行切換。

  1. 命令模式:進入Vi后,首先進入的就是命令模式,等待用戶輸入編輯命令,此時輸入的字母將作為編輯命令來解釋。
  2. 插入模式:在命令模式下輸入插入命令i、附加命令a、打開命令o等命令可以進入插入模式,在插入模式下,用戶輸入可以對文本進行編輯,輸入的任何字符都被當作文件內容保存起來。【Esc】鍵可以返回命令模式。
  3. 末行模式:在命令模式下,按【:】鍵可以進入末行模式,Vi光標會顯示在窗口的最后一行,以“:”作為末行模式的提示符,等待用戶輸入命令。末行命令執行后,Vi自動回到命令模式。

Vi命令大全

1、移動光標
h或者向左方向鍵:光標向左移動一個字符
l或者向右方向鍵:光標向右移動一個字符
k或者向上方向鍵:光標向上移動一個字符
j或者向下方向鍵:光標向下移動一個字符
【Ctrl】+f:???????? 屏幕“向下”移動一頁,相當于【PageDown】
【Ctrl】+b:???????? 屏幕“向上”移動一頁,相當于【PageUp】
0:????????????????? 數字0,移動到這一行的最前面一個字符處
$:????????????????? 移動到這一行的最后一個字符處
G:????????????????? 移動到這個文件的最后一行
gg:???????????????? 移動到這個文件的第一行
n【Enter】:???????? n是一個數字,光標向下移動n行

2、搜索與替換
/str:從光標開始,向下尋找一個名為str的字符串。
?str:從光標開始,向上尋找一個名為str的字符串。
:n1,n2s/str1/str2/g:n1與n2為數字,在第n1行與n2行之間尋找str1???????? 這個字符串,并將該字符串替換成str2

:1,$s/str1/str2/g:從第一行到最后一行尋找str1字符串,并將該字符???????????? 串替換為str2

:1,$s/str1/str2/gc:從第一行到最后一行尋找str1字符串,并將該字???????????????? 符串替換為str2,且在替換前提示符給用戶確認?? 是否需要替換

3、刪除、復制與粘貼
x,X:x為向后刪除一個字符,X為向前刪除一個字符
nx:n為數字,為連續向后刪除n個字符
dd:刪除光標所在的那一整行
ndd:n為數字,從光標位置開始,刪除向下n列,如20dd則是刪除20列。
yy:復制光標所在的那一行
nyy:n為數字,復制光標所在的向下n行,如20yy則是復制20行
p,P:p為將復制的數據粘貼到光標的下一行,P則為粘在光標的上一行。
u:復原前一個操作
【Ctrl】+r:重做上一個操作
.:小數點,重復前一個動作,常用在重復刪除、重復粘貼。

4、插入模式
i,I:插入:在當前光標所在處插入輸入文字,已存在的文字會向后??? 退,其中i為從當前光標所在位置前開始插入,I將光標移到當前 行的行首,然后開始插入。

a,A:a為從當前光標所在的下一個字符開始插入,A為從光標所在行的 最后一個字符處開始插入

o,O:這是英文字母o的大小寫,o為在當前光標所在的下一行插入新的 一行,O為在當前光標所在處的上一行插入新的一行。

r,R:替換:r為替換光標所在的那一個字符;R會一直替換光標所在的 文字,直到安下【Esc】鍵為止。

5、文件操作相關
:w:保存文件
:w filename:另存為filename
:n1,n2 w filename!:將n1行到n2行的內容保存到filename中
:n w filename:將第n行保存到filename中
:l,. w filename:將從第一行起到光標當前位置的內容保存到 filename中
:.,$ w filename:將從光標當前位置到文件結束的內容保存到 filename中
:r filename:打開另外一個文件filename
:e filename:編輯新文件filename代替原有內容
:f filename:把當前文件改名為filename

轉載于:https://www.cnblogs.com/rinack/p/6242648.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456594.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456594.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456594.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

windows環境下,如何在Pycharm下安裝TensorFlow環境

文章目錄目錄前言:1.安裝Anaconda2.安裝Tensorflow3.其他問題4.在pycharm中使用tensorflow目錄 前言: 最近由于工作需要要使用TensorFlow,所以只能狂補相關的知識。本來博主打算在Ubantu上玩,但是由于一些原因還是放棄了這個想法…

python面向對象實現簡易銀行管理員頁面系統【導入自定義模塊】

main.py 人 類名:Person 屬性:姓名 身份證號 電話 卡 行為:卡 類名:Card 屬性:卡號 密碼 余額 行為:銀行 類名:Bank 屬性:用戶列表 提款機提款機 類名:ATM 屬性&#xf…

[轉] dpkg-deb命令

點擊此處閱讀原文 軟件包管理 dpkg-deb命令是Debian Linux下的軟件包管理工具,它可以對軟件包執行打包和解包操作以及提供軟件包信息。 語法dpkg-deb(選項)(參數) 選項-c:顯示軟件包中的文件列表; -e:將主控信息解壓;…

《Effective Debugging:軟件和系統調試的66個有效方法》一第5條:在能夠正常運作的系統與發生故障的系統之間尋找差別...

本節書摘來自華章出版社《Effective Debugging:軟件和系統調試的66個有效方法》一書中的第1章,第1.5節,作[希]迪歐米迪斯斯賓奈里斯(Diomidis Spinellis),更多章節內容可以訪問云棲社…

如何安裝多個Python版本以及在Pycharm中切換Python版本

目錄前言: 首先要切換不同的版本,你必須先下載不同的Python版本,整個步驟如下所示:1、下載Python2.7x和Python3.5x版本2、安裝Python2.7x和Python3.5x版本3、配置環境變量,分別添加如下至path路徑4、只修改Python27&am…

【python】邏輯運算符總結

# 邏輯運算符 &#xff1a;構造復雜條件 # 優先級 not > and > or # 邏輯與 and 并且、同時 import random# a random.randint(1,5) # if a > 1 and a < 3_流程控制: # print("true") # else: # print("false") # 可以轉換為假&#…

C#中out和ref之間的區別【轉】

首先&#xff1a;兩者都是按地址傳遞的&#xff0c;使用后都將改變原來參數的數值。 其次&#xff1a;ref可以把參數的數值傳遞進函數&#xff0c;但是out是要把參數清空&#xff0c;就是說你無法把一個數值從out傳遞進去的&#xff0c;out進去后&#xff0c;參數的數值為空&am…

如何打開.ipynb文件

最近碰到文件名后綴為.ipynb文件&#xff0c;起初沒太在意這種文件格式&#xff0c;用Notepad打開之后看到也是類似于JSON格式的信息&#xff0c;以為也是為其他的一些文件服務的&#xff08;類似于配置一些HTML文件的配置文件&#xff09;。但是后來才發現這也是一種文本表示形…

《CCNP TSHOOT 300-135認證考試指南》——2.9節憑記憶完成表格和列表

本節書摘來自異步社區《CCNP TSHOOT 300-135認證考試指南》一書中的第2章&#xff0c;第2.9節憑記憶完成表格和列表&#xff0c;作者 【加】Raymond Lacoste , 【美】Kevin Wallace&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看 2.9 憑記憶完成表格和列表CC…

將f2fs文件系統到磁盤

1 用git下載f2fs文件系統tools的源代碼。下載地址如下&#xff1a;http://git.kernel.org/cgit/linux/kernel/git/jaegeuk/f2fs-tools.git 具體的操作如下&#xff1a;git clone git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git 通過以…

【python】list append()和extend()區別

list append() ---》添加一個對象整體 extend() ----》添加迭代的對象 append() 添加單一元素在末尾 my_list [geeks, for] my_list.append(geeks) print(my_list) output: [geeks, for, geeks]添加一個list后&#xff0c;也是只添加一個list對象 my_list [geeks, for…

玩Python遇到的問題一二三及解決辦法

文章目錄問題一&#xff1a;python 2.7版本解決TypeError: encoding is an invalid keyword argument for this function。問題二&#xff1a;python讀取文件時提示"UnicodeDecodeError: gbk codec cant decode byte 0x80 in position 205: illegal multibyte sequence&qu…

《MATLAB圖像處理超級學習手冊》導讀

前言 MATLAB圖像處理超級學習手冊圖像是人類獲取信息的重要來源。當今的信息化社會&#xff0c;對圖像處理和圖像分析的要求越來越高&#xff0c;現有的圖像軟件由于采購成本和功能的限制&#xff0c;已經不能完全滿足專業人士的需要&#xff0c;這時就需要專業人士來編寫自己的…

【python】SOCK_STREAM和SOCK_DGRAM兩種類型的區別【轉】

sock_stream 是有保障的(即能保證數據正確傳送到對方)面向連接的SOCKET&#xff0c;多用于資料(如文件)傳送。 sock_dgram 是無保障的面向消息的socket &#xff0c; 主要用于在網絡上發廣播信息。 SOCK_STREAM是基于TCP的&#xff0c;數據傳輸比較有保障。SOCK_DGRAM是基于U…

JavaScript將字符串中的每一個單詞的第一個字母變為大寫其余均為小寫

要求&#xff1a; 確保字符串的每個單詞首字母都大寫&#xff0c;其余部分小寫。 這里我自己寫了兩種方法&#xff0c;或者說是一種方法&#xff0c;另一個是該方法的變種。 第一種&#xff1a; function titleCase(str) {var newarr,newarr1[]; newarr str . toLowerCase() .…

聊天機器人的分類及綜述

文章目錄[toc] 目錄前言&#xff1a;1、技術方向2、chatbot的知識框架3、應用的分類4、chatbot的幾個challenges5、工業應用綜述總結&#xff1a;目錄 前言&#xff1a; 最近由于工作需要&#xff0c;要開發一款智能客服&#xff0c;目前正在搞業務咨詢模塊的功能&#xff0c…

【python】數據結構和算法 + 淺談單鏈表與雙鏈表的區別

有這么一句話說“程序數據結構算法”&#xff0c;也有人說“如果把編程比作做菜&#xff0c;那么數據結構就好比食材&#xff08;菜&#xff09;&#xff0c;算法就好比廚藝&#xff08;做菜的技巧&#xff09;”。 當然這是籠統的說法&#xff0c;不過也稍微懂得了數據結構和…

Ironic 安裝和配置詳解

轉自&#xff1a;http://amar266.blogspot.com/2014/12/ironic-installation-and-configuration.html 1.Install Openstack With Neutron 2.Create and delete vm to test the setup 3.Configure existing setup for ironic 3.1.Configure ironic user in keystone # keystone …

webpack使用優化(基本篇)

轉自&#xff1a;https://github.com/lcxfs1991/blog/issues/2 前言 本文不是webpack入門文章&#xff0c;如果對webpack還不了解&#xff0c;請前往題葉的Webpack入門&#xff0c;或者阮老師的Webpack-Demos。 為什么要使用Webpack 與react一類模塊化開發的框架搭配著用比較好…

word2vec中單詞向詞向量的轉換過程詳解

目錄前言&#xff1a;1、Word2Vec兩種模型的大致印象2、CBOW模型流程舉例3、CBOW模型流程舉例總結&#xff1a; 目錄 前言&#xff1a; 針對word2vec是如何得到詞向量的&#xff1f;這篇文章肯定能解決你的疑惑。該篇文章主要參考知乎某大神的回答&#xff0c;個人在此基礎上…