项目实训(树莓派)(十四)树莓派4B下的ubuntu系统下的vim的使用
目錄
?
什么是vi/vim?
實驗目的
實驗環境
實驗內容與步驟
什么是vi/vim?
vi和vim都是在Linux系統下的標準的編輯器,你可以簡單類比為就像是windows系統下的記事本一樣,它們的功能都是十分強大并且豐富的,并不遜色于其他的一些文本編輯器。對于Linux系統的任何版本,vi和vim編輯器是沒有什么區別的。所以學會使用vi和vim編輯器對于我們更好的掌握和了解ubuntu系統和其他Linux系統有著重要的作用。vim是從 vi 發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用。
vi和vim的區別便是你可以將vim看成是vi編輯器的升級版本:
1.vim具有程序編程的能力,可以通過字體顏色辨別語法的正確性,方便用戶進行程序設計和編程。2.同時vim可以通過多種顏色的方式來顯示一些特殊的信息。
3.vim會依據文件擴展名或者是文件內的開頭信息,判斷文件的內容然后自動的選擇執行該程序的語法判斷式,然后通過一些顏色來顯示程序代碼和一些一般的信息。
4.vim還支持正則表達式的搜索、多文件的編輯、快復制等功能,通過這些功能我們在Linux系統上進行一些文件的修改工作時便能變得方便許多。
基本上所有的Linux系統都會自帶vi文書編輯器,其他的文書編輯器則不一定會存在。
實驗目的
1.了解vim的基本原理
2.熟練掌握vim的基本使用方法
實驗環境
樹莓派4B、系統:Ubuntu 20.10系統 、Vim軟件
實驗內容與步驟
一、vim的基本使用以及其相關命令
1.vim的鍵盤圖:
2.基本上vim一共分為三種模式,分別是一般模式,編輯模式?和 命令行模式。 各個模式的功能區分如下:
一般模式:
以vim的方式打開一個文件就會直接進入一般模式(這是一個默認的模式)。在一般模式中,可以使用上下左右鍵來移動光標,也可以使用刪除字符或者刪除整行來處理文件的內容,也可以使用復制、粘貼來處理文件內容。此模式下敲擊鍵盤動作不會被當作輸入字符,而是會被vim識別為命令。比如我們此時按下鍵盤上的i,并不會被當作一個輸入字符,而是會被當做一個命令。若想要編輯文本:啟動Vim,進入了命令模式,按下i,切換到輸入模式。一般模式只有一些最基本的命令,因此仍要依靠命令行模式輸入更多命令。
編輯模式:
在命令模式下按下i就進入了輸入模式。
在輸入模式中,可以使用以下按鍵:
- 字符按鍵以及Shift組合,輸入字符
- ENTER,回車鍵,換行
- BACK SPACE,退格鍵,刪除光標前一個字符
- DEL,刪除鍵,刪除光標后一個字符
- 方向鍵,在文本中移動光標
- HOME/END,移動光標到行首/行尾
- Page Up/Page Down,上/下翻頁
- Insert,切換光標為輸入/替換模式,光標將變成豎線/下劃線
- ESC,退出輸入模式,切換到命令模式
命令行模式:
在一般模式下按下:(英文冒號)就進入了命令行模式。
命令行模式可以輸入單個或多個字符的命令,可用的命令非常多。
在底線命令模式中,基本的命令有(已經省略了冒號):
- q 退出程序
- w 保存文件
按ESC鍵可隨時退出命令行模式。
可以用下圖來將這三個模式之間的轉換關系表示出來:
以下是三種模式下可用的命令說明:
第一部分:一般模式下可用的光標移動、復制粘貼、搜索替換等
| h、j、k、l 或者鍵盤上的方向鍵 | 分別控制光標左、下、上、右移動一格 |
| 如果你將右手放在鍵盤上的話,你會發現 hjkl 是排列在一起的,因此可以使用這四個按鈕來移動光標。 如果想要進行多次移動的話,例如向下移動 30 行,可以使用 "30j" 或 "30↓" 的組合按鍵, 亦即加上想要進行的次數(數字)后,按下動作即可! | |
| [ctrl]+[b] | 屏幕向“上”移動一頁,相當于 [Page Down]按鍵 (常用) |
| [ctrl]+[f] | 屏幕往“下”移動一頁,相當于 [Page Up] 按鍵 (常用) |
| [ctrl]+[d] | 屏幕『向下』移動半頁 |
| [ctrl]+[u] | 屏幕『向上』移動半頁 |
| + | 光標移動到非空格符的下一行 |
| - | 光標移動到非空格符的上一行 |
| n<space> | 光標向右移動n個字符 |
| 0或功能鍵[Home] | 移動到這一行的最前面字符處: 0是數字,但不能用數字小鍵盤上的數字 |
| $或功能鍵[End] | 移動到這一行的最后面字符處:$ |
| w | 光標跳到下個字的開頭 |
| e | 光標跳到下個字的字尾 |
| H | 光標移動到這個屏幕的最上方那一行的第一個字符 |
| M | 光標移動到這個屏幕的中間那一行的第一個字符 |
| L | 光標移動到這個屏幕的最下方那一行的第一個字符 |
| G | 移動到這個文件的最后一行 |
| nG | 移動到這個文件的第n行(可配合:set nu) |
| gg | 移動到這個文件的第一行,相當于命令1G |
| n<Enter> | 光標向下移動n行 |
| /word | 向光標向下尋找一個名稱為word的字符串 |
| ?word | 向光標向上尋找一個名稱為word的字符串 |
| n | 這個 n 是英文按鍵。代表重復前一個搜尋的動作。舉例來說, 如果剛剛我們執行 /vbird 去向下搜尋 vbird 這個字符串,則按下 n 后,會向下繼續搜尋下一個名稱為 vbird 的字符串。如果是執行 ?vbird 的話,那么按下 n 則會向上繼續搜尋名稱為 vbird 的字符串! |
| N | 這個 N 是英文按鍵。與 n 剛好相反,為『反向』進行前一個搜尋動作。 例如 /vbird 后,按下 N 則表示『向上』搜尋 vbird 。 |
| 使用 /word 配合 n 及 N 是非常有幫助的!可以讓你重復的找到一些你搜尋的關鍵詞! | |
| :n1,n2s/word1/word2/g | n1 與 n2 為數字。在第 n1 與 n2 行之間尋找 word1 這個字符串,并將該字符串取代為 word2 !舉例來說,在 100 到 200 行之間搜尋 vbird 并取代為 VBIRD 則: 『:100,200s/vbird/VBIRD/g』。(常用) |
| :1,$s/word1/word2/g 或?:%s/word1/word2/g | 從第一行到最后一行尋找word1這個字符串,并且將其替換成為word2 (常用) |
| :1,$s/word1/word2/gc 或?:%s/word1/word2/gc | 從第一行到最后一行尋找word1這個字符串,并且將其替換為word2.且在替換前顯示提示字符給用戶確認(confirm)是否需要替換。(常用) |
| x, X | 在一行字當中,x為向后刪除一個字符(相當于[del]按鍵),X為向前刪除一個字符(相當于[backspace]即是退格鍵) |
| nx | n 為數字,連續向后刪除 n 個字符。舉例來說,我要連續刪除 10 個字符, 『10x』。 |
| dd | 刪除游標所在的那一整行 |
| ndd | n 為數字。刪除光標所在的向下 n 行,例如 20dd 則是刪除 20 行 (常用) |
| d1G | 刪除光標所在到第一行的所有數據 |
| dG | 刪除光標所在到最后一行的所有數據 |
| d$ | 刪除游標所在處,到該行的最后一個字符 |
| d0 | 那個是數字的 0 ,刪除游標所在處,到該行的最前面一個字符 |
| yy | 復制游標所在的那一行(常用) |
| nyy | n 為數字。復制光標所在的向下 n 行,例如 20yy 則是復制 20 行(常用) |
| y1G | 復制游標所在行到第一行的所有數據 |
| yG | 復制游標所在行到最后一行的所有數據 |
| y0 | 復制光標所在的那個字符到該行行首的所有數據 |
| y$ | 復制光標所在的那個字符到該行行尾的所有數據 |
| p, P | p 為將已復制的數據在光標下一行貼上,P 則為貼在游標上一行! 舉例來說,我目前光標在第 20 行,且已經復制了 10 行數據。則按下 p 后, 那 10 行數據會貼在原本的 20 行之后,亦即由 21 行開始貼。但如果是按下 P 呢? 那么原本的第 20 行會被推到變成 30 行。 (常用) |
| J | 將光標所在行與下一行的數據結合成同一行 |
| c | 重復刪除多個數據,例如向下刪除 10 行,[ 10cj ] |
| u | 復原前一個動作。(常用) |
| [Ctrl]+r | 重做上一個動作 |
| 這個 u 與 [Ctrl]+r 是很常用的指令!一個是復原,另一個則是重做一次~ 利用這兩個功能按鍵,你的編輯會變得很方便 | |
| . | 這是小數點,意思是重復前一個動作的意思。 如果你想要重復刪除、重復貼上等等動作,按下小數點『.』就好了! (常用) |
第二部分:一般模式切換到編輯模式的可用的按鈕說明
| i, I | 進入輸入模式(Insert mode): i 為『從目前光標所在處輸入』, I 為『在目前所在行的第一個非空格符處開始輸入』。 (常用) |
| a, A | 進入輸入模式(Insert mode): a 為『從目前光標所在的下一個字符處開始輸入』, A 為『從光標所在行的最后一個字符處開始輸入』。(常用) |
| o, O | 進入輸入模式(Insert mode): 這是英文字母 o 的大小寫。o 為在目前光標所在的下一行處輸入新的一行; O 為在目前光標所在的上一行處輸入新的一行!(常用) |
| r, R | 進入取代模式(Replace mode): r 只會取代光標所在的那一個字符一次;R會一直取代光標所在的文字,直到按下 ESC 為止;(常用) |
| 上面這些按鍵中,在 vi 畫面的左下角處會出現『--INSERT--』或『--REPLACE--』的字樣。 由名稱就知道該動作了吧!!特別注意的是,我們上面也提過了,你想要在檔案里面輸入字符時, 一定要在左下角處看到 INSERT 或 REPLACE 才能輸入喔! | |
| [Esc] | 退出編輯模式,回到一般模式中(常用) |
第三部分:一般模式切換到命令行模式的可用的按鈕說明
| : | 切換到命令行模式,以在最底一行輸入命令。 |
| :w | 將編輯的數據寫入硬盤檔案中(常用) |
| :w! | 若文件屬性為『只讀』時,強制寫入該檔案。不過,到底能不能寫入, 還是跟你對該檔案的檔案權限有關 |
| :q | 離開 vim(常用) |
| :q! | 若曾修改過檔案,又不想儲存,使用 ! 為強制離開不儲存檔案。 |
| 注意一下啊,那個驚嘆號 (!) 在 vi 當中,常常具有『強制』的意思~ | |
| :wq | 儲存后離開,若為 :wq! 則為強制儲存后離開 (常用) |
| ZZ | 這是大寫的 Z 喔!如果修改過,保存當前文件,然后退出!效果等同于(保存并退出) |
| ZQ | 不保存,強制退出。效果等同于?:q!。 |
| :w [filename] | 將編輯的數據儲存成另一個檔案(類似另存新檔) |
| :r [filename] | 在編輯的數據中,讀入另一個檔案的數據。亦即將 『filename』 這個檔案內容加到游標所在行后面 |
| :n1,n2 w [filename] | 將 n1 到 n2 的內容儲存成 filename 這個檔案。 |
| :! command | 暫時離開 vi 到指令行模式下執行 command 的顯示結果!例如 『:! ls /home』即可在 vi 當中察看 /home 底下以 ls 輸出的檔案信息! |
| :set nu | 顯示行號,設置之后,會在每一行的前綴顯示該行的行號 |
| :set nonu | 與set nu 相反,為取消行號 |
| :set hlsearch | 設置高亮度查找 |
| :set nohlsearch | 取消高亮度查找 |
| :set backup | 自動備份文件 |
| :set ruler | 開啟右下角狀態欄說明 |
| :set showmode | 顯示左下角的INSERT之類的狀態欄 |
| :set backspace={0,1,2} | 設置退格鍵功能。為2時可以刪任意字符。為0或1時僅可以刪除剛才輸入的字符。 |
| :set all | 顯示目前所有的環境參數值 |
| :set | 顯示與系統默認值不同的參數值 |
| :syntax on/off | 是否開啟依據相關程序語法顯示不同的顏色 |
| :set bg=dark/light | 是否顯示不同的顏色色調 |
特別注意,在 vi/vim 中,數字是很有意義的!數字通常代表重復做幾次的意思! 也有可能是代表去到第幾個什么什么的意思。
舉例來說,要刪除 50 行,則是用 『50dd』 對吧! 數字加在動作之前,如我要向下移動 20 行呢?那就是『20j』或者是『20↓』即可。
?二、vim使用實例
第一步:使用vim進入一般模式
第一種方法就是你可以在打開文件時就選擇使用vim軟件進行打開,例:
第二種方法就是通過終端的方式,打開ubuntu的終端,在終端中輸入以下命令用vim來建立一個名為vimtest.txt的文件。
$ vim vimtest.txt直接輸入?vim 文件名?就能夠進入 vi 的一般模式了。請注意,記得 vi 后面一定要加文件名,不管該文件存在與否!
按下i鍵進入到編輯模式(也叫輸入模式),可以開始編輯文件內容
在一般模式之中,只要按下 i, o, a 等字符就可以進入輸入模式了!
在編輯模式當中,你可以發現在左下角狀態欄中會出現 –INSERT- 的字樣,那就是可以輸入任意字符的提示。
這個時候,鍵盤上除了?Esc?這個按鍵之外,其他的按鍵都可以視作為一般的輸入按鈕了,所以你可以進行任何的編輯。
開始進行編輯,輸入以下代碼:
def dayweek(day,month,year):offday = 0for x in range(1,year):if x % 400 == 0 or x % 4 == 0 and x % 100 != 0:offday += 366else:offday += 365if year % 400 == 0 or year % 4 == 0 and year % 100 != 0:m = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30]else:m = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30]for n in range(month):offday += m[n]offday += dayweek = ['日','一','二','三','四','五','六']return week[(offday)%7]編輯完成過后,按下ESC鍵返回到一般模式下:
在一般模式中按下?:wq?儲存后離開 vim
我們要存檔了,存盤并離開的指令很簡單,輸入?:wq?即可保存離開!
這樣我們就通過vim簡單地創建了一個文件!
目前主要的編輯器都有恢復功能,vim也不例外。vim是通過“保存”文件來挽回數據的。
每當我們在用vim編輯時,vim都會自動在被編輯的文件的目錄下面再新建一個名為filename.swap的文件。這就是一個暫存文件,我們對文件filename所做的操作都會被記錄到這個文件當中。如果系統意外崩潰,導致文件沒有正常保存,那么這個暫存文件就會發揮作用。例如:
下面舉個例子說明:
打開終端,輸入命令,用vim編輯file2.txt文件。
$ cd Documents $ vim file2.txt我們在vim的一般模式下按下Ctrl+z組合鍵,vim就會被丟到后臺執行。回到命令提示符環境后,我們模擬將vim的工作不正常中斷。
再輸入命令終止掉上面的進程
$ kill這樣導致暫存盤無法通過正常的流程結束,所以暫存文件不會消失,而是繼續保留下來。當再次編輯那個文件時(輸入命令vim manpath.config),出現如下情況:
這時,有五個按鈕可以使用:
[O]pen for Read-Only:打開成只讀文件。
(E)dit anyway:用正常方式打開要編輯的文件,并不會載入暫存文件的內容。這很容易出現兩個用戶相互改變對方的文件的問題。
(R)ecover:加載暫存文件的內容。
(Q)uit:不進行任何操作,回到命令行。
(A)bort:忽略這個編輯行為。
需要注意的是:這個暫存文件不會應為你結束vim后自動刪除,必須要手動刪除。否則每次打開對應的文件時都會出現這樣的提示。
三、vim的功能
1.塊選擇功能
這個功能可以讓我們復制一個矩形區域的內容,十分方便。
v:字符選擇,會將光標經過的地方反白選擇;
V:行選擇;
[Ctrl]+v:塊選擇;
y:復制反白的地方;
d:刪除反白的地方。
示例如下:
方法一:快選擇模式
批量注釋:
Ctrl + v?進入塊選擇模式,然后移動光標選中你要注釋的行,再按大寫的?I?進入行首插入模式輸入注釋符號如?//?或?#,輸入完畢之后,按兩下?ESC,Vim?會自動將你選中的所有行首都加上注釋,保存退出完成注釋。
示例如下:
取消注釋:
Ctrl + v?進入塊選擇模式,選中你要刪除的行首的注釋符號,注意?//?要選中兩個,選好之后按?d?即可刪除注釋,ESC?保存退出。
方法二:替換命令
批量注釋。
使用下面命令在指定的行首添加注釋。
使用名命令格式:?:起始行號,結束行號s/^/注釋符/g(注意冒號)。
取消注釋:
使用名命令格式:?:起始行號,結束行號s/^注釋符//g(注意冒號)。
命令:
1.在 10 - 20 行添加?//?注釋
2.在 10 - 20 行刪除?//?注釋
:10,20s#^//##g3.在 10 - 20 行添加?#?注釋
:10,20s/^/#/g4.在?10 - 20?行刪除 # 注釋
:10,20s/#//gvim快捷鍵補充(插入模式)
vim快捷鍵補充(編輯模式)
vim快捷鍵補充(插入與編輯模式通用)
2.多文件編輯
我們在兩個或多個文件之間復制粘貼內容時,這個功能會讓我們方便很多。
使用命令vim name1 name2 name3...(各個文件名之間用空格隔開)可以同時打開多個文件。
:n:編輯下一個文件;
:N:編輯上一個文件;
:files:列出目前vim打開的所有文件。
示例如下:
同時用vim打開file.txt和file2.txt文件
3.多窗口功能
可以在一個窗口中打開多個文件。
輸入命令:sp{filename}便可以實現這個功能。如果想要在新窗口啟動另外一個文件,則加入文件名。如果省略文件名,則打開的是同一個文件。
例如:
用vim file.txt 先打開一個文件。在一般模式下輸入:sp。就會發現打開的是同一個文件。如果輸入:sp file3.txt。就會變成以下畫面:
其他的按鍵功能:
[Ctrl]+w+j:先按下Ctrl不放,再按下w后放開所有的按鍵,再按下j(或向下箭頭鍵),則光標可以移到下方的窗口;
[Ctrl]+w+k:同上,不過光表移到上面的窗口;
[Ctrl]+w+q:離開。
3.代碼著色功能
之前說過vim 是vi 的升級版本,其中比較典型的區別就是vim 更加適合coding,因為vim比vi 多一個代碼著色的功能,這個功能主要是為程序員提供編程語言升的語法顯示效果,如下:
第一步:創建一個后綴名為python文件的代碼文件
$ vim test.py第二步:編寫對應的python代碼
def dayweek(day,month,year):offday = 0for x in range(1,year):if x % 400 == 0 or x % 4 == 0 and x % 100 != 0:offday += 366else:offday += 365if year % 400 == 0 or year % 4 == 0 and year % 100 != 0:m = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30]else:m = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30]for n in range(month):offday += m[n]offday += dayweek = ['日','一','二','三','四','五','六']return week[(offday)%7]在vim編輯器中,我們可以通過:syntax on或:syntax off開啟或關閉代碼著色功能。
?
?
總結
以上是生活随笔為你收集整理的项目实训(树莓派)(十四)树莓派4B下的ubuntu系统下的vim的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中烟项目总结
- 下一篇: html中splice向数组添加元素,j