日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

vim技巧补充

發布時間:2025/4/14 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vim技巧补充 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Vim 中的內部命令與 vi 編輯器中的內部命令類似。表 1 提供了 Vim 中的光標移動命令。

表 1. 用于移動光標的 Vim 命令

命令動作hj、加號 (+)、Enter 或 Returnk、減號 (-)l}{)(^$0 (zero)w or Wb or BeHMLGgg:n
將光標向左移動
將光標向下移動
將光標向上移動
將光標向右移動
將光標移動到當前段落的末尾
將光標移動到當前段落的開頭
將光標移動到當前句子的末尾
將光標移動到當前句子的開頭
移動到當前行的第一個非空字符
移動到當前行末尾
移動到當前行開頭
移動到下一單詞的開頭
移動到上一單詞的開頭
移動到下一單詞的末尾
移動到屏幕的第一行
移動到屏幕的中間一行
移動到屏幕的最后一行
移動到文件末尾
移動到文件開頭
移動到行?n

表 2 顯示了用于刪除文本的 Vim 命令。


表 2. 用于刪除文本的 Vim 命令
命令動作ddd10dddwdbdldhd0 (zero)D | d$xX
刪除選中的區域
刪除整個當前行
刪除從當前行開始的 10 行,
從當前位置向前刪除單詞
從當前光標位置左邊開始向后刪除單詞
刪除當前光標位置的字符
刪除當前光標位置左邊的字符
刪除當前光標位置到行開頭之間的單詞
刪除從當前光標位置開始的整個行
刪除光標當前位置的字符
刪除光標當前位置之前的字符

表 3 提供了其他幾個有用的 Vim 命令。


表 3. 常用 Vim 命令
命令動作ihIaAcCoOrR<Esc>> or <Tab><vVyy10yypPu<Ctrl> R/<pattern>?<pattern>nN!<cmd>
進入插入模式并在當前光標處插入
進入插入模式并在當前行的開始處插入
進入插入模式并追加到光標后面
進入插入模式并追加到當前行末尾
更改選中的區域
更改從光標當前位置開始的整個行
在光標當前所在行下方創建一個新空行,并將光標移動到這一新空行的開頭
在光標當前所在行的上方創建一個新空行,并將光標移動到這一新空行的開頭
替換光標當前位置的單個字符
替換從光標當前位置開始的多個字符,并在退出插入模式時結束
退出插入或可視模式
向選中區域右邊縮進
向選中區域左邊縮進
啟動時突出顯示字符
啟動時突出顯示的整個行
將當前行移動/復制到內存
將從當前行開始的 10 行移動/復制到內存
粘貼復制或剪切的文本;如果字符被復制(yw?dw?或?D),就在光標當前位置之后粘貼這些字符。如果復制的是行,就在光標當前所在的行下面粘貼這些行
作用和?p?一樣,但是它在光標當前位置的前面粘貼字符,在光標當前所在行上面粘貼行
撤消最后的更改
重做
搜索已找到的下一個模式,并將光標放在已找到的模式的開頭
搜索已找到的上一個模式,并將光標放在已找到的模式的開頭
重復上一次的搜索
重復上一次的搜索,但搜索的方向相反
在 Vim 會話外執行?<cmd>




回頁首


行模式

盡管廣泛使用的是命令和插入模式,但行模式同樣重要,只是有時候沒有被充分理解和使用。行模式進入行編輯器,使您可以在一行或多行上處理命令。考慮到 vi 以 ex 編輯器命名,所以它只適合進入 ex 編輯器的行模式。

要從命令模式進入行模式,輸入冒號(:)即可。然后將光標移動到窗口左下角。繼續輸入時,所有文本都會出現在窗口底部的冒號后面。單擊?Enter,開始計算和執行行模式命令。如果確定不執行在行模式下輸入的行,則單擊?Escape?返回到命令模式。

使用編輯器的行模式時,請記住兩種命令樣式。首先,在輸入命令時,vi 或 Vim 按原樣執行命令。如果執行的命令與修改數據有關,當前行就是目標。但是,使用第二種方法可以提供行數以處理指定的行。要輸入行,請在冒號后面輸入要處理的行數或行范圍,并用逗號(,)分隔開始和結束范圍。

例如,如果只處理行 23,那么命令以?:23?開始。如果要修改 2319 到 3819 之間的行,則輸入?:2319,3819。要處理從行 45 開始到文件結尾之間的一個命令,需要將最后行的參數替換為美元符號($)— 即?:45,$

以下命令只是可以在行模式下執行的最基本命令:

  • :w <file name>將文件寫入磁盤。如果提供一個參數,編輯器會試圖將數據寫入 <file name>。

    注意:如果提供一個參數,而且存在 <file name>,編輯器不會覆蓋現有文件的數據。

  • :w! <file name>將文件寫入磁盤并覆蓋文件中的所有數據。
  • :<x>,<y> w <file name>將從 <x> 到 <y> 之間的行寫入 <file name>。
  • :q試圖在不保存的情況下退出編輯器。

    注意:如果數據已修改,則需要先保存文件再退出編輯器,否則將導致文件未被保存。

  • :q!退出編輯器,不將文件寫入磁盤。
  • :n如果編輯多個文件,首先編輯編輯列表中的下一個文件。
  • :e <file name>編輯 <file name>。
  • :e#如果編輯兩個文件,則在兩個文件之間切換。
  • :s/<str1>/<str2>/用當前行中的 <str2> 替換第一次出現的 <str1>。
  • :1,$ s/<str1>/<str2>/g從行 1 開始,在整個文件中執行,用 <str2> 替換所有的 <str1>。
  • :r <file name>將 <file name> 讀入當前編輯器會話中。
  • :<x>,<y> d刪除從 <x> 到 <y> 之間的行。
  • :<x>,<y> y復制從 <x> 到 <y> 之間的行。

Vim多行縮進技巧

按v進入visual狀態,選擇多行,用>或<縮進或縮出?
通常根據語言特征使用自動縮進排版:在命令狀態下對當前行用== (連按=兩次), 或對多行用n==(n是自然數)表示自動縮進從當前行起的下面n行。你可以試試把代碼縮進任意打亂再用n==排版,相當于一般IDE里的code format。使用gg=G可對整篇代碼進行排版。



在WORD間移動

除了word之外,Vim還有一種概念WORD。雖然這只是大小寫的不同,但是他們卻代表了兩種不同的事物。word是指由iskeyword選項定義的字符串;而WORD則是指用空白符分隔的字符串。與WORD相關的一些命令如下:

[count]B ??向后移動count個WORDS
[count]E ??向前移動count個WORDS,并且將光標置于WORD的末尾.
[count]gE ??向后移動count個WORDS,并且將光標置于WORD的末尾.
[count]W ??向前移動count個OWRDS.

命令小結
w 向前移動一個word
e
b 向后移動一個word
set iskeyword 定義word選項
W 向前移動一個WORD
E
B 向后移動一個WORD


非正常關閉vi編輯器時會生成一個.swp文件

關于swp文件 使用vi,經常可以看到swp這個文件,那這個文件是怎么產生的呢,當你打開一個文件,vi就會生成這么一個.(filename)swp文件?以備不測(不測下面討論),如果你正常退出,那么這個這個swp文件將會自動刪除?。下面說不測。 不測分為:1當你用多個程序編輯同一個文件時。 ?????????2非常規退出時。 第一種情況的話,為了避免同一個文件產生兩個不同的版本(vim中的原話),還是建議選擇readonly為好。 第二種情況的話,你可以用vim -r filename恢復,然后再把swp文件刪除(這個時候要確保你的swp文件沒有用處了,要不然你會傷心的)

swp文件的來歷,當你強行關閉vi時,比如電源突然斷掉或者你使用了Ctrl+ZZ,vi自動生成一個.swp文件,下次你再編輯時,就會出現一些提示。

你可以使用

vi -r {your file name}

來恢復文件,然后用下面的命令刪除swp文件,不然每一次編輯時總是有這個提示。

rm .{your file name}.swp

在網上搜到了一個類似的提示,不同的linux提示可能不一樣

“.xorg.conf.swp” already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit:

當然可以用R鍵恢復。

vi編輯器要正常退出可以使用Shift-ZZ 。

如果不想每次vi崩潰時不保存swp文件,可以修改文件,

總結

以上是生活随笔為你收集整理的vim技巧补充的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。