1. 程式人生 > 其它 >vim 刪除當前詞_Vim 高階使用技巧彙總

vim 刪除當前詞_Vim 高階使用技巧彙總

技術標籤:vim 刪除當前詞

e9241d59-5531-eb11-8da9-e4434bdf6706.png

引言

本文預設你已經知道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
    :將游標移到當前可見頁面的中間(Middle)
  • 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數字或名稱(在上面的第一列)或名稱來切換到緩衝區。即使檔名不完整,也可以使用。

以下是一些管理緩衝區的命令:

eb241d59-5531-eb11-8da9-e4434bdf6706.png

如何管理視窗

vim分別管理多個檔案的控制機制是基於windowsviews的概念。這使您可以將當前編輯區域劃分為不同的視窗,以便可以同時檢視多個緩衝區。

要將當前工作空間拆分為單獨的視窗,可以鍵入: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的次數越多,它的感覺就會越自然,它就會變得越強大。

如果您有很好的技巧,歡迎在評論區交流