vim 刪除當前詞_Vim 高階使用技巧彙總
技術標籤:vim 刪除當前詞
引言
本文預設你已經知道vim的三種模式,並且會模式切換,會基本操作,知道:wq
是什麼意思。
Vim不裝任何外掛的情況下,仍擁有非常多的快捷鍵,記憶起來挺困難的,這裡進行常用快捷鍵彙總,並在括號中提供一些幫助記憶的單詞和方法。
你可能會說,已經有其他vim教程了,為何還要寫?不瞞各位,看過一些中文的vim教程,不否認有少數人寫的挺好,但大多中文教程邏輯混亂,錯誤繁多,實在是不堪入目。一些英文教程非常好,但讀起來略微費力。
使用vim,最多的情況是登入遠端伺服器,需要修改配置檔案或者簡單修改程式碼,因此本文也是以此為立足點編寫。有些大佬是使用vim作為日常寫程式碼的編輯器,免不了需要安裝各種外掛,進行繁瑣的配置,對vim進行這種用法的也請繞道,您已經是大佬,本文的內容對您來說可能過於淺顯。
話不多說,我們正式開始:
我們知道vim命令大體分為兩種:action和motion,先來看看移動(motion)
游標移動
上下左右很多人依然用游標鍵,但vim推薦用hjkl,能夠更高效移動游標。
基本動作
- h:左
- l:右
- j:下
- k:上
其他移動
- gg:文件頂部
- G:檔案底部或行號(如果在G前面放置數字)
- w:下一個單詞(word)
- e:單詞尾(end)
- 0:行首(第0個字元)
- $:行尾(類似正則表示式語法)
前述已經有許多移動命令,一般的初學者都已經知道了。但是,我們也可以通過其他方式引導移動。
我們可以使用以下命令將游標移動到頁面當前可見部分的不同區域:
- H:將游標移動到當前可見頁面的頂部(High)
- M
- L:將游標移動到當前可見頁面的底部(Low)
如果要移動頁面而不是游標(注意是頁面動,游標不隨頁面動),則可以使用以下命令:
- CTRL-D:向下翻頁(Down)
- CTRL-U:向上翻頁(Up)
- CTRL-E:向下滾動一行
- CTRL-Y:向上滾動一行
我們還可以按句子、段落進行導航。如果您鍵入常規文字而不是程式碼,這將很有用。這些類似於單詞和行導航命令。
- ):移至下一個句子的開頭
- (:移至上一句的開頭
- }:移至下一個段落的開頭(以空白行分隔)
- {:移至下一段的開頭(以空白行分隔)
同時開啟多個檔案
通常,在工作時,無論是寫軟體專案文件上還是大作業論文(沒錯,可以使用vim寫論文),您都希望能夠一次開啟多個文件。根據您的工作方式,Vim有幾種不同的實現方法。
如何管理緩衝區
一種管理多個檔案的方法是通過buffers
。緩衝區通常代表開啟供編輯的檔案。它們基本上是vim當前已開啟並且可以輕鬆訪問的所有內容。
我們使用vim開啟多個檔案,如下所示:
vim file1 file2 file3
每個檔案都在自己的緩衝區中開啟。目前,我們只能看到第一個檔案。
通過輸入,我們可以看到可用的緩衝區:buffers
。
:buffers
:buffers
1 %a "file1" line 1
2 "file2" line 0
3 "file3" line 0
Press ENTER or type command to continue
如果我們希望進入下一個緩衝區,可以鍵入:bn
。這將更改為下一個緩衝區。類似地,我們可以通過鍵入b
數字或名稱(在上面的第一列)或名稱來切換到緩衝區。即使檔名不完整,也可以使用。
以下是一些管理緩衝區的命令:
如何管理視窗
vim分別管理多個檔案的控制機制是基於windows
或views
的概念。這使您可以將當前編輯區域劃分為不同的視窗,以便可以同時檢視多個緩衝區。
要將當前工作空間拆分為單獨的視窗,可以鍵入:split
或:sp
。這將在當前視窗上方開啟一個新視窗,並將游標更改到該視窗。您可以使用上面顯示的buffer命令更改至新視窗中顯示的緩衝區。
以下是一些我們可以用來建立和管理視窗的命令:
- :sp:將當前視窗水平一分為二。最初,每個視窗將顯示相同的緩衝區。(split)
- 在“ sp”之前加上數字以設定新視窗的高度。
- :vs:垂直拆分當前視窗。最初,每個視窗將顯示相同的緩衝區。(vertical split)
- 在“ vs”之前加上數字以設定新的視窗寬度。
- CTRL-ww:將游標切換到下一個視窗(window)
- CTRL-w(移動):將焦點沿指示的方向(h,j,k,l)更改到指定視窗
- CTRL-wc:關閉當前視窗(close)
- CTRL-w+:增加當前視窗的大小
- CTRL-w-:減小當前視窗的大小
- CTRL-w=:將所有視窗設定為相等大小
- #CTRL-w_:將高度設定為前面的“#”指示的大小
- :only:關閉當前視窗以外的所有視窗
- CTRL-wn:使用新緩衝區開啟新視窗(new)
如何管理標籤
在vim中管理多個文件的第三個概念是tabs
。與許多程式不同,在vim中,選項卡可以包含視窗,而不能相反。選項卡可以包含視窗,這些視窗充當緩衝區的視口。
我們可以分別管理每個選項卡的窗口布局。要建立標籤,我們可以使用:tabnew
命令開啟一個新標籤。
一些簡單的選項卡管理方法是:
- :tabnew:開啟新標籤
- :tabclose:關閉當前標籤頁
- :tabn:切換到下一個標籤(next)
- gt:切換到下一個標籤
- :tabp:切換到上一個標籤
- gT:切換到上一個標籤
- :tab ball:在單個選項卡中開啟所有緩衝區
- :tabs:列出所有可用的標籤
隨著緩衝區,視窗和選項卡的混排,有時會混淆您當前正在檢視的檔案。查詢當前正在檢視的檔名的快速方法是鍵入:
- CTRL-g:顯示當前檔名
針對不同文件的小技巧
根據您要處理的文件型別,vim具有相應功能可以為您提供幫助。
純文字
如果要編輯純文字文件,vim可以通過多種方式為您提供幫助。此功能必不可少的功能之一是拼寫檢查。
要在vim中開啟拼寫檢查,可以輸入:
:set spell
要設定使用的語言,您可以輸入:
:set spelllang=[language abbreviation]
現在,針對英文文字文件,將檢查您的文件的拼寫。波浪線將出現在拼寫錯誤的單詞下方。這就是您的使用方式。
要在拼寫錯誤的單詞之間來回跳轉,請輸入:
]s # Jump to next mistake
[s # Jump to previous mistake
將游標移到拼寫錯誤的單詞上方後,您可以通過輸入以下內容檢視拼寫建議:
z=
這將為您提供可能的匹配項列表。您可以通過選擇關聯的數字來選擇所需的選項,或者可以按Enter鍵以保持單詞原樣不變。
如果您想將單詞標記為非拼寫錯誤,可以將其新增到拼寫列表之一。Vim維護兩個拼寫列表,一個常規列表;另一個是臨時列表,將僅用於當前會話。
要將單詞新增到“好”單詞列表中,請使用以下命令之一:
zg # Adds word to regular dictionary
zG # Adds word to the current session dictionary
如果您不小心添加了一個單詞,則可以通過轉到該單詞並鍵入以下內容來將其刪除:
zug # Remove word from regular dictionary
zuG # Remove word from the current session dictionary
如果您發現自己不得不經常輸入長片語的短語,則可以新增縮寫。
如果我們鍵入:ab
後跟一個縮寫詞和一個全名,則每當我們鍵入一個縮寫詞和一個空格後,vim都會輸入全名。
例如,如果我們遵循Richard Stallman的示例使用“ GNU/Linux”替換“ Linux”的這個詞,那麼我們可以建立一個自動執行的縮寫:
:ab Linux GNU/Linux
現在,當我們鍵入“ Linux”時,vim將自動替換為“ GNU / Linux”。
Linux is an operating system.
更改為:
GNU/Linux is an operating system.
但是,如果發現全文專門談論核心,那麼只有Linux這個詞是合適的,我們可以在鍵入空格之前通過鍵入CTRL-V
來取消擴充套件。
GNU/Linux is an operating system with Linux(CTRL-V) as a kernel.
如果我們不再希望使用此縮寫,則可以使用以下命令將其刪除:
:una Linux
現在我們的“ Linux”將仍然是“ Linux”。
您可能需要不時做的另一件事是插入傳統qwerty鍵盤上沒有的字元。我們稱這些為“特殊字元”。您可以通過輸入以下內容來檢視vim的特殊字符集:
:digraphs
NU ^@ 10 SH ^A 1 SX ^B 2 EX ^C 3 ET ^D 4 EQ ^E 5
AK ^F 6 BL ^G 7 BS ^H 8 HT ^I 9 LF ^@ 10 VT ^K 11
FF ^L 12 CR ^M 13 SO ^N 14 SI ^O 15 DL ^P 16 D1 ^Q 17
D2 ^R 18 D3 ^S 19 D4 ^T 20 NK ^U 21 SY ^V 22 EB ^W 23
CN ^X 24 EM ^Y 25 SB ^Z 26 EC ^[ 27 FS ^ 28 GS ^] 29
RS ^^ 30 US ^_ 31 SP 32 Nb # 35 DO $ 36 At @ 64
現在,您可以通過在左列中鍵入CTRL-k
兩個字母,然後在右列中插入任何字元。
例如,在我的計算機上,要輸入英鎊符號,可以在插入模式下輸入以下字元:
CTRL-k Pd
£
編寫原始碼
如果您正在編碼,那麼vim有很多不同的東西可以幫助您對程式碼進行操作。
最基本的是語法高亮顯示。您可以通過鍵入以下內容來啟用語法高亮:
:syntax on
這應該根據檢測到的副檔名為檔案設定語法高亮。如果要更改高亮的語言型別,可以通過以下方式設定語言:
:set filetype=[language]
如果您想使用系統命令來修改檔案中的某些行,則可以!
在正常模式下通過使用命令來呼叫它。
該命令接受動作,然後將其傳送給隨後的命令。
![motion] filter
例如,要對從當前位置到檔案末尾的行進行排序,可以鍵入:
!G sort
排序是一種Linux命令,預設情況下按字母順序對輸入進行排序。
如果我們要將命令的輸出插入檔案中,請導航至需要輸出的空白行。型別:
!!command
這會將指定命令的輸出內容放入文件中。
如果我們想檢視命令的結果,但又不想將其插入文件中,則也可以使用命令模式(:)版本,該版本為:
:!command
這將顯示命令的結果,但完成後將使您返回到未更改的文件。
減少重複操作(巨集的使用)
通常在編輯或建立任何型別的檔案時,您會發現自己重複了許多相同或相似的操作。幸運的是,vim提供了一些將命令組儲存到巨集中的方法。
要開始錄製巨集,您可以鍵入q
後跟字母以命名該巨集。
qa # will save macro "a"
現在,您鍵入的任何命令現在都將記錄為巨集的一部分。要結束巨集,可以再次鍵入q
。
因此,如果我們鍵入:
qa0c3wDELETED<esc>q
這將開始一個巨集(儲存為“ a”),轉到該行的開頭,然後用單詞“ DELETED”替換接下來的三個單詞。然後退出插入模式並結束巨集。
要從當前游標位置開始播放此巨集,請使用@
字元,後跟巨集引用:
@a
這將從當前位置開始重播巨集命令。
如果我們希望建立一個以插入模式結束的巨集,則必須以另一種方式結束該巨集(鍵入“ q”將僅插入字母q)。我們可以在插入模式下執行普通模式命令CTRL-O
,然後鍵入“q”來結束巨集的錄製。
因此,如果我們要更改此行上第一個括號的內容,則可以有一個巨集,內容為:
qi0f(lct)<CTRL-O>q
這將建立一個巨集 “i”。巨集移動到當前行的開頭。然後找到左括號並向右移動一個字元(在括號內移動)。然後,它將更改所有內容,直到右括號為止。在vim處於插入模式下等待替換文字時,我們按鍵,CTRL-O
然後q
結束巨集,從而使我們處於插入模式下準備替換文字。
總結
現在,您應該對vim可以幫助您的一些更高階的方法有所瞭解。雖然本文內容看起來很多,但這只是驚鴻一瞥。
其實還有很多功能我們沒有涉及到,您不需要了解vim所有內容。您可選擇使用vim的方式學習您認為重要的內容。每天練習和使用vim的次數越多,它的感覺就會越自然,它就會變得越強大。
如果您有很好的技巧,歡迎在評論區交流