在一些關於文字編輯器的問題中,我都會提到vim在文字編輯方面是無編輯器能出其右的,包括vim的宿敵emacs,在這方面都無法望vim項背。
經過這幾天的學習,大家應該知道,linux是乙個跟文字檔案打交道的系統,那麼如何去跟這樣乙個系統打交道呢?我們就要學會如何去新建檔案、刪除檔案、修改檔案等等,那麼做這些操作就需要乙個文字編輯工具。而在linux中最經典最流行的文字編輯工具就是vi/vim;本文將會給大家詳細講述如何在linux作業系統下使用vi/vim 文字編輯器,一分鐘了解vi/vim的前世今生。
首先我們要知道的是vi/vim是什麼?
vi編輯器是linux和unix上最基本的文字編輯器,工作在字元模式下。由於不需要圖形介面,vi是效率很高的文字編輯器。儘管在linux上也有很多圖形介面的編輯器可用,但vi在系統和伺服器管理中的功能是那些圖形編輯器所無法比擬的。
vi編輯器可以執行輸出、刪除、查詢、替換、塊操作等眾多文字操作,而且使用者可以根據自己的需要對其進行定製,這是其他編輯程式所沒有的。
vim是從 vi 發展出來的乙個文字編輯器。**補完、編譯及錯誤跳轉等方便程式設計的功能特別豐富,在程式設計師中被廣泛使用。
對vim已經有了基礎了解的你們,肯定也想知道它的特點吧!它有三個大眾所能了解到的特點!
vi/vim是一種純文字編輯器,它不像word可以排版,可以調整字型大小,可以改變字型
vi/vim只是乙個文字編輯工具,它只能對文字的內容進行操作
vi是乙個全螢幕的文字編輯器,在編輯文字時它將佔據整個螢幕
雖然不能像word文件一樣調整字型、改變大小但是優勢卻也是顯而易見的
1.全鍵盤操作、快捷鍵的組合,使效率大大提高,
2.啟動快,輕便快捷
3.擴充套件多,足夠用
命令模式:是vi/vim 編輯器進入後的預設模式,比如說你想編輯檔案,那麼就需要輸入「i」,讓當前模式變為插入模式或者輸入模式,這樣你就可以編輯這個文字了。歷史故事的成語,還可以讓使用者執行命令,比如複製行、貼上行。
末行模式:用於查詢文字、儲存修改。
其中我們需要重點了解到的是他們之間的轉換模式,這可不簡單
命令模式-->輸入模式-->命令模式
命令模式-->末行模式-->命令模式
命令模式-->輸入模式
i:insert,在當前游標所在字元的前面,轉為輸入模式
i:大寫的i,在當前游標所在行的行首轉換為輸入模式
a:在當前游標所在行的行尾轉換為輸入模式
o:open,在當前游標所在行的下方新建一行並轉為輸入模式
o:大寫的o,不是數字0,在當前游標所在行的上方新建一行並轉換為輸入模式
輸入模式-->命令模式
esc命令模式-->末行模式
末行模式-->命令模式
示意圖▲
了解完它的幾大模式和三大特點後,我們就開始進行操作了!文字編輯方式正確開啟的姿勢你有get到嗎?(多圖預警!!!)
開啟檔案方式:檔案開啟後預設處於命令模式下
vim filename//開啟檔案
vim +n filename//開啟檔案並定位到第n行
vim +/pattern filename//開啟檔案並定位到第一次被/pattern匹配到的內容行首
關閉檔案方式:末行模式關閉檔案
命令>意義
q>退出 wq>儲存並退出
q! >不儲存退出 w>儲存但不退出
w! >強行儲存 wq!>強行儲存並退出
x>強行儲存並退出
命令模式關閉檔案:zz
移動游標
逐字元移動
h:向左移動乙個字元
l:向右移動乙個字元
j:向下移動乙個字元
k:向上移動乙個字元
#h:向左移動#個字元
#l:向右移動#個字元
#j:向下移動#個字元
#k:向上移動#個字元
以單詞為單位移動
#w:以當前游標為起點跳至第#個單詞的詞首
#e:以當前游標為起點跳至第#個單詞的詞尾
#b:以當前游標為起點跳至第#個單詞的詞首
行內跳轉
0:數字0,跳轉到絕對行首
:跳轉到行首的第乙個非空白字元
$:跳轉到絕對行尾
行間跳轉
gg:跳轉到第一行
g:跳轉到最後一行
#gg:跳轉到第#行
#g:跳轉到第#行
句子間跳轉
段落間跳轉
翻屏
ctrl+f:向下翻一屏
ctrl+b:向上翻一屏
ctrl+d:向下翻半屏
ctrl+u:向上翻半屏
字元編輯
編輯命令<意義
x<刪除游標所在處的單個字元
#x<刪除游標所在處及其向後共#個字元 xp<交換游標所在處的字元及其後面字元的位置
刪除命令:d
命令模式下d命令常與跳轉命令組合使用,如
d$:表示刪除當前游標所在位置到行尾的內容
d:表示刪除當前游標所在位置到第乙個行首非空白字元位置的內容
d0:表示刪除當前游標所在位置到絕對行首的內容
#d跳轉符:刪除跳轉符指定範圍內的#個,例如 #dw #de #db
dd:刪除當前游標所在行整行
#dd:刪除包括當前游標所在行在內的#行
d:刪除當前游標所在行的內容,保留空行
末行模式下d命令的使用
語法::startadd,endaddd
這裡的startadd與endadd是指乙個範圍,例如:
1,5d:表示刪除第1到第5行
範圍表示方法:
表示方法<意義
.<游標所在當前行 $<最後一行
+#<游標所在行往後#行
$-#<倒數第#行 %<全文
複製命令:yy
貼上命令:p
p:小寫p
若刪除或複製的為整行內容,則貼上至游標所在行的下方
若刪除或複製的為非整行,則貼上至游標所在字元的後面
p:大寫p
若刪除或複製的為整行內容,則貼上至游標所在行的上方
若刪除或複製的為非整行,則貼上至游標所在字元的前面
替換:r
r:替換模式,替換多個字元
r#:將當前游標的字元替換為#,這裡的#可以是任何字元
ctrl+r:還原最近一次的撤銷操作
視覺化模式:
視覺化模式下可以對選取的內容進行前面講的所有編輯操作
v:按字元選取內容
v:按矩形塊(行)選取內容
文字查詢:
/pattern:從上往下查詢匹配的內容
?pattern:從下往上查詢匹配的內容
查詢並替換:s
s命令只能在末行模式下使用
語法:addr1,addr2 s/pattern/string/gi
1,5 s/abc/def/g:
表示把第一行到第五行的所有abc替換為def
末行模式下顯示或取消顯示行號:
set nu:顯示行號
set nonu:取消顯示行號
vim text editor
最經典實用的上古神器
如果你是一位 it 界人士,需要或將要與 linux 系統打交道,那麼學習好 vim 的操作絕對能讓你的工作輕鬆百倍!!因為很多時候, linux 作為伺服器是不會開啟圖形介面,當需要遠端操作時,你只能利用 ssh「命令字元式」的 shell 介面對其進行操作,這時如果你需要修改伺服器上的網頁**或配置檔案,vi 或 vim 命令就是你最佳最方便也是最強大的夥伴了!相信我,學好 數理化 vim,走遍天下也不怕……
一分鐘帶你了解Vuex 新手推薦
vuex是乙個專為vue.js應用程式開發的狀態管理模式它採用集中式儲存管理應用的所有元件狀態,並以相應的規則保證狀態以一種可 的方式發生變化 state 儲存狀態 變數 getters 對資料獲取之前的再次編譯,可以理解為state的計算屬性,soter.getters.fun mutations...
一分鐘帶你入門SASS!!!
1.sass不用單獨配置,可以使 輕鬆,下面我們來使用一下吧.帶你區分 lang sass 和 lang scss 兩種語法的區別,能夠讓你輕鬆掌握,那麼舉個例子吧 1 先來說一下 lang sass 它是通過縮排方式寫 沒有大括號,比如python語言,go語言等語言都應用。2 其次是 lang ...
一分鐘帶你了解python如何讀寫json資料
這篇文章主要為大家詳細介紹了python如何讀寫json資料,具有一定的參考價值,感興趣的小夥伴們可以參考一下。案例 在web應用中常常用到json資料進行傳輸資料,本質上是字典型別資料轉換成字串,通過字串進行網頁傳輸,然後把接收到的字串轉換成字典類似資料 需求 實現字典轉換成字串,字串轉換成字典資...