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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

VIM的高级使用

發布時間:2025/4/16 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VIM的高级使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

1)一些常用的Vim配置,在~/.vimrc中 syntax on ? ? ? 支持語法高亮 set nu ? ? ? ? ?顯示行號
set nonu ? ? ?不顯示行號 set ai ? ? ? ? ?設置自動縮進 set shiftwidth=4 ? 設置自動縮進 4 個空格, 當然要設自動縮進先. set sts=4 ? ? ? ? ?即設置 softtabstop 為 4. 輸入 tab 后就跳了 4 格. set tabstop=4 ? ? ?實際的 tab 即為 4 個空格, 而不是缺省的 8 個. set expandtab ? ? ?在輸入 tab 后, vim 用恰當的空格來填充這個 tab. :set hls 打開搜索高亮

:set nohls 取消搜索高亮?

:set list : 顯示特殊字符 :set nolist? 2)多文件編輯 :e filename ?vim將在原窗口中打開新的文件, 若舊文件編輯過, 會要求保存. :sp filename vim將分割出一個橫向窗口, 并在該窗口中打開新文件. :vsp filename vim將在右邊分割出一個窗口, 并在該窗口中打開新文件. 如果:sp 或 :vsp沒有指定文件,則在新窗口中打開原文件。 ctrl+w w來在vim打開的多個窗口中切換. ctrl+w q來關閉多個窗口中當前的窗口. 打開的兩個文件上下窗口分布 :?vim -o file1 file2
打開的兩個文件左右窗口分布 :vim -O file1 file2

?

3) 查找 /xxx(?xxx) 表示在整篇文檔中搜索匹配xxx的字符串, / 表示向下查找, ? 表示向上查找.查找到以后, 再輸入 n 查找下一個匹配處, 輸入 N 反方向查找. *(#) 當光標停留在某個單詞上時, 輸入這條命令表示查找與該單詞匹配的下(上)一個單詞. 同樣, 再輸入 n 查找下一個匹配處, 輸入 N 反方向查找. (可以使用shift+* 或 shift + #來查找當前光標所在單詞) g*(g#) 此命令與上條命令相似, 只不過它不完全匹配光標所在處的單詞, 而是匹配包含該單詞的所有字符串. % 本命令查找與光標所在處相匹配的反括號, 包括 () [] { }.

在vim中一般查找 :/str,如果有空格則需要:/str str2/?

?

4) 光標移動 w(e) 移動光標到下一個單詞. b 移動光標到上一個單詞. 0 移動光標到本行最開頭. ^ 移動光標到本行最開頭的字符處. $ 移動光標到本行結尾處. 向前向后翻頁 ctrl+f 和 ctrl+b.? % 跳轉到相配對的括號.? G(shift+g) ? - go to the last line in the vim editor (文件的末尾)? 1G - goto line number 1(文件的開始) 20G - goto line number 20 5)拷貝, 刪除與粘貼

x表示刪除當前字符。?

在 vi 中 y 表示拷貝, d 表示刪除, p 表示粘貼. 其中拷貝與刪除是與光標移動命令結合的, 看幾個例子就能夠明白了. yw 表示拷貝從當前光標到光標所在單詞結尾的內容. dw 表示刪除從當前光標到光標所在單詞結尾的內容. y0 表示拷貝從當前光標到光標所在行首的內容. d0 表示刪除從當前光標到光標所在行首的內容. y$ 表示拷貝從當前光標到光標所在行尾的內容. d$ 表示刪除從當前光標到光標所在行尾的內容. yfa 表示拷貝從當前光標到光標后面的第一個a字符之間的內容. dfa 表示刪除從當前光標到光標后面的第一個a字符之間的內容. 特殊地: yy 表示拷貝光標所在行. dd 表示刪除光標所在行. D 表示刪除從當前光標到光標所在行尾的內容.

刪除整個文檔?:1,$d

刪除某行后面的換行符號:在命令狀態下,在某一行上按"J"鍵將Join下一行,呵呵?

u 撤銷上次的操作,ctrl+r恢復上次的撤銷。?

刪除所有空白行(^是行的開始,\s*是零個或者多個空白字符;$是行尾)?:g/^\s*$/d

6)替換 單個字符替換用r,覆蓋多個字符用R,用多個字符替換一個字符用s,整行替換用S. :s/vivian/sky/ 替換當前行第一個 vivian 為 sky :s/vivian/sky/g 替換當前行所有 vivian 為 sky :n,$s/vivian/sky/ 替換第 n 行開始到最后一行中每一行的第一個 vivian 為 sky :n,$s/vivian/sky/g 替換第 n 行開始到最后一行中每一行所有 vivian 為 sky n 為數字,若 n 為 .,表示從當前行開始到最后一行 :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替換每一行的第一個 vivian 為 sky :%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky 可以使用 # 作為分隔符,此時中間出現的 / 不會作為分隔符 :s#vivian/#sky/# 替換當前行第一個 vivian/ 為 sky/ :%s+/oradata/apras/+/user01/apras1+ (使用+ 來 替換 / ): /oradata/apras/替換成/user01/apras1/

?

:2,50s/part1/part2 ? ? ?#用part2替換第2行到第50行中每行第1個part1 :2,50s/part1/part2/g ? ?#用part2替換第2行到第50行中所有的part1 :.,+3s/part1/part2 ? ? ?#用part2替換當前行以及當前行后面的三行中每行第1個part1

:.,+3s/part1/part2/g ? ?#用part2替換當前行以及當前行后面的三行中所有的part1?

?

例如將每行增加 xxx :?:%s/\(.*\)/\1 xxx/g?

?

7)visual block狀態

ctrl+v進入,列塊選擇,例如4l選中光標接下來的4列,7j光標開始的7行,執行4l和7j后選中7行4列的塊, 也可以在ctrl+v后使用hjkl來控制選擇的行和列,可以使用y,d等進行拷貝刪除操作。例如刪除多行前面的空格。

(塊編輯:編輯一行,效果被應用到所有選中的行)例如注釋多行:ctrl+v選擇塊后,然后I進入編輯狀態在第一行的開始輸入#,然后兩次esc退出后,剛才選中的所有行前面自動加#,從而達到注釋所有行的目的。

shift+v可以用來選中多行,然后:s/aaa/bbb/g, 對選中的行中進行替換。

shift+v選中多行后,執行d直接刪除選中的多行。


http://man.chinaunix.net/newsoft/vi/doc/visual.html?
?

8) 其他

查看當前vim打開的文件:vim下:f

vim中去除空行或行末的^M:dos2unix ufile

VIM中sort不能用:只能在terminal下執行sort -u file > file_new vim中diff文件: 如果已經打開了一個文件,則?:vert diffsplit file2, 如果還沒有打開文件,則直接執行vi -O test_vi.txt test_vi2.txt,此時兩個文件左右排列,如果需要兩個文件上下排列的話,執行vi -o test_vi.txt test_vi2.txt。 vimdiff最多可以同時比較4個文件。 不退出vim,直接執行命令,例如在perl文件中,直接執行不退出,:!perl % 。 如果前面已經執行過了,則重復前面的命令時,只需要:!! ?

完!?

總結

以上是生活随笔為你收集整理的VIM的高级使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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