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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Vim 4 常用插件

發(fā)布時(shí)間:2023/12/6 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Vim 4 常用插件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Vim 系列教程目錄:

  • Vim 1 基本使用
  • Vim 2 高級(jí)用法
  • Vim 3 vimrc
  • Vim 4 常用插件
  • Vim 5 其他編輯器的 Vim 插件

Vim 插件網(wǎng)站

Vim 之所以強(qiáng)大, 有個(gè)很大的原因就是他有豐富的插件. 插件可以極大地增強(qiáng) Vim 的功能. 那么去哪里下載插件呢? 插件怎么安裝和管理呢, 聽我慢慢道來.

先說到哪里去找插件, 這里列出兩個(gè)網(wǎng)站:

  • 官方插件網(wǎng)址 界面丑, 速度慢, 有時(shí)候還打不開, 不建議使用...
  • VimAwesome 比較推薦的一個(gè)插件網(wǎng)站, 好看好用, 每個(gè)插件都有介紹, 還有安裝方式說明, 以及每個(gè)插件官網(wǎng)的鏈接.

在這些網(wǎng)站上找到合適的插件后, 就可以進(jìn)行安裝了.

插件管理: vim-plug

Vim 本身就提供了安裝和管理插件的方式, 但是不太方便, 我就不多說了. 現(xiàn)在比較流行的方式有兩種: vim-plug 和 Vundle, 這兩款插件都是用于"安裝和管理別的插件"的插件.

我最近在用的是 vim-plug, 下面介紹一下它的用法.

安裝 vim-plug

安裝方式很簡(jiǎn)單, 下載 plug.vim, 放在 $VIM/vim81/autoload/ 目錄中, 就算是完成安裝了. 注意: 這里說是下載安裝, 其實(shí)就是把該插件的源代碼保存到名為 plug.vim 的文件, 然后放在對(duì)應(yīng)的目錄里就可以了. 官方還提供了使用命令的方式下載安裝, 但其實(shí)還不如手動(dòng)下載來得方便.

在 vimrc 中配置

安裝好 vim-plug 后, 需要在 vimrc 中進(jìn)行啟用配置和插件配置, 方式如下:

" 以 call plug#begin 開始, 這句命令后面的小括號(hào)里用于指定 其他插件的安裝目錄, 注意不要使用 'plugin' 這種默認(rèn)名稱, 像我這樣的寫法就行 call plug#begin('$VIM/vimfiles/vim-plug') " 配置插件, 方式有三種: " 1. 插件的短別名(即 Github 中的 用戶名/倉庫名), 2. 插件的 Github 倉庫地址, 3. 本地路徑 Plug 'altercation/vim-colors-solarized' Plug 'nlknguyen/papercolor-theme' Plug 'scrooloose/nerdtree' " 以 call plug#end() 結(jié)束 call plug#end() 復(fù)制代碼

上面就是在 vimrc 中啟用 vim-plug, 以及配置其他插件的方式. 簡(jiǎn)單來講, 按照 VimAwesome 上給出的插件名寫就行, 很簡(jiǎn)單.

插件的安裝, 移除, 升級(jí)

在 vimrc 中配置好插件之后, 需要使用 vim-plug 的命令進(jìn)行安裝, vim-plug 提供了如下命令, 你可以在命令模式下使用這些命令:

  • :PlugInstall 安裝所有插件. 注意: 要安裝插件, 需要先在 vimrc 中配置插件名稱, 然后執(zhí)行這個(gè)安裝命令
  • :PlugClean 移除無用插件. 要移除插件, 需要先在 vimrc 中把要移除的插件名稱刪掉, 然后執(zhí)行這個(gè)移除命令
  • :PlugUpdate 升級(jí)所有插件
  • :PlugUpgrade 升級(jí) vim-plug 本身
  • :PlugStatus 查看插件狀態(tài)

OK, vim-plug 的使用就是這么簡(jiǎn)單. 具體更加細(xì)節(jié)的配置可以參考官方文檔, 這里不再贅述.

關(guān)于插件依賴的 Python

有些插件需要依賴 Python (比如 UltiSnip), 如果你裝了這樣的插件, 但是你的 Vim 卻不支持 Python, 啟動(dòng)時(shí)就會(huì)報(bào)錯(cuò)(你可以繼續(xù)使用 Vim, 但是看到報(bào)錯(cuò)會(huì)很煩).

關(guān)于 Python 依賴, 有這么幾點(diǎn)需要確認(rèn):

  • 確認(rèn) Vim 本身支持調(diào)用 Python. 通過 :version 命令, 可以看到 Vim 的版本信息以及支持的特性信息, 如果你能看到如下信息, 則說明 Vim 支持調(diào)用 Python:
  • +python/dyn +python3/dyn 復(fù)制代碼
  • 確認(rèn) Vim 支持的 Python 版本, 同樣使用 version 命令查看, 在此命令輸出的最下面可以看到如下信息:
  • -DDYNAMIC_PYTHON_DLL=\"python27.dll\" -DDYNAMIC_PYTHON3_DLL=\"python36.dll\" 復(fù)制代碼

    這說明 Vim 支持 Python 2.7 和 Python 3.6 3. 32位的 Vim 只能調(diào)用 32 位的 Python, 同理, 64位的 Vim 只能調(diào)用 64位的 Python, 要查看 Vim 的版本, 還是使用 version 命令. 4. 系統(tǒng)中需要安裝了對(duì)應(yīng)的 Python 版本. 5. 在命令模式下驗(yàn)證是否真的沒問題. 例如 Vim 支持 Python3, 則在命令模式通過 :py3 1 這個(gè)命令查看是否真的可以. py3 是 Vim 調(diào)用 Python 時(shí)使用的命令, 后面的 1 是此命令的參數(shù)(可以是任意參數(shù)), 如果不報(bào)錯(cuò), 則說明系統(tǒng)中有對(duì)應(yīng)的 Python 版本.

    我所使用的 Vim8.1 是 32 位版本, 我之前電腦里裝了64位的 3.7, 結(jié)果報(bào)錯(cuò), 改為 32 位的 3.6 就沒問題了.

    主題

    主題的話, 這里推薦兩款我比較喜歡的主題:

    • PaperColor
    • Dracula

    其中 PagerColor 是亮色主題, Dracula 是暗色主題.

    PaperColor 有個(gè)很好的地方: 同時(shí)支持亮色和暗色模式. 可在 vimrc 中做如下配置:

    Plug 'nlknguyen/papercolor-theme' " 啟用亮色主題 set background=light colorscheme PaperColor " 啟用暗色主題 " set background=dark " colorscheme PaperColor 復(fù)制代碼

    Dracula 是我比較喜歡的一款深色主題, 在 vimrc 中配置的時(shí)候要注意:

    " 后面的配置表示把 dracula 主題放在 dracula 目錄下 Plug 'dracula/vim', { 'as': 'dracula' } " 啟用主題 colorscheme dracula 復(fù)制代碼

    啟用主題之后, 你會(huì)發(fā)現(xiàn) Vim 變得漂亮多了, 果然人靠衣裝.

    下面我再介紹一些基本的, 通用的插件.

    The NERD tree

    目錄樹插件, 上古神器, 這么多年來一直還在更新, 不容易. 安裝就不說了, 自己參照 Awesome 上的名字進(jìn)行配置即可. 幫助文檔: help NERDTree

    常用命令

    命令含義備注
    :NERDTree [dir/bookmark]打開 NERDTree后面可以跟目錄/書簽作為參數(shù)
    :NERDTreeToggle打開/關(guān)閉 NERDTree
    :NERDTreeMirror將當(dāng)前的 NERDTree 共享到另一個(gè) NERDTree, 二者是同一個(gè) buffer, 互相同步首先得有另一個(gè) NERDTree
    :Bookmark [name]將當(dāng)前節(jié)點(diǎn)保存為書簽, 可以指定名稱必須在 NERDTree 中才可以使用
    :ClearBookmark [name]刪除書簽, 如果不給名稱, 則刪除當(dāng)前節(jié)點(diǎn)對(duì)應(yīng)書簽同上
    :EditBookmark編輯所有書簽同上

    常用指令

    以下指令都需要在 NERDTree 中才能生效

    指令含義備注
    o打開文件/目錄/書簽如果是在目錄上, 則是打開或關(guān)閉
    i/s在新窗口/垂直新窗口打開文件針對(duì)文件的命令
    t在新標(biāo)簽打開目錄/書簽如果是目錄, 則自動(dòng)打開一個(gè)新的 NERDTree
    m顯示 NERDTree 菜單菜單中可以選擇添加/刪除/修改文件或目錄
    O遞歸打開當(dāng)前節(jié)點(diǎn)
    x關(guān)閉當(dāng)前節(jié)點(diǎn)的父目錄
    X遞歸關(guān)閉當(dāng)前節(jié)點(diǎn)直到最上層目錄
    D刪除當(dāng)前 Bookmark針對(duì) Bookmark 的命令
    r刷新當(dāng)前目錄
    q關(guān)閉當(dāng)前 NERDTree

    配置

    在 vimrc 中添加如下配置:

    " 顯示隱藏文件 let NERDTreeShowHidden=1 " 顯示書簽 let NERDTreeShowBookmarks=1 " NERDTree 大小改為 45 字符寬度, 默認(rèn) 31 let NERDTreeWinSize=45 " 顯示簡(jiǎn)寫的 NERDTree 菜單 let NERDTreeMinimalMenu=1 " 設(shè)置箭頭樣式 let g:NERDTreeDirArrowExpandable='?' let g:NERDTreeDirArrowCollapsible='?' " 刪除文件時(shí)自動(dòng)刪除文件對(duì)應(yīng) buffer let NERDTreeAutoDeleteBuffer=1 " <leader>h 切換顯示 nnoremap <leader>h :NERDTreeToggle<cr> 復(fù)制代碼

    關(guān)于 CWD

    前面我們介紹過 CWD(Current Working Directory), 當(dāng)前工作目錄. NERDTree 是很依賴 CWD的, 當(dāng)你打開 NERDTree 的時(shí)候, NERDTree 會(huì)自動(dòng)以 CWD 作為根目錄顯示文件目錄. 使用 :NERDTree 命令時(shí), 你可以指定一個(gè)目錄作為參數(shù), 那么此時(shí)這個(gè)目錄就是 CWD. 如果你不指定目錄參數(shù), 則 CWD 就是用戶目錄.

    在 NERDTree 中, 可以在某個(gè)目錄節(jié)點(diǎn)上使用 cd 指令, 將 CWD 更改為指定目錄. 不過有時(shí)候使用 cd 指令更改 CWD 會(huì)導(dǎo)致一些奇怪的問題, 比如 NERDTree 失效了, 此時(shí)可以使用 :NERDTree 命令重啟 NERDTree.

    repeat.vim

    . 這個(gè)指令只能重復(fù) Vim 原生的上次指令, 如果是自己映射的指令或是插件映射的指令, 是無法重復(fù)的. repeat.vim 就是用來解決這個(gè)問題的. 無需配置, 裝上就能用了, 雖然用處不大, 但是聊勝于無.

    surround.vim

    上古神器, 可以快速地給文本兩邊添加成對(duì)的符號(hào), 如 ([{" 等等. 幫助文檔: help surround

    下文我簡(jiǎn)單介紹下其用法, 我會(huì)將成對(duì)的符號(hào)稱為 "surroundings", 這也是官方文檔中的稱呼

    使用方法

  • 刪除 surroundings 指令為 ds (Delete Surroudings), 可以將文本兩邊的 surroundings 刪掉, 用法為 ds<surrounding>, 看下面幾個(gè)例子(星號(hào)表示光標(biāo)的位置):
  • Old TextcommandNew Text
    "Hello *world!"ds"Hello *world
    (123+4*56)/2ds)123+4*56/2
    <div>Yo!*</div>dstYo!*

    注意, dst 這個(gè)指令中, t 是個(gè)文本對(duì)象, a tag, surround 中的文本對(duì)象和 Vim 中的一致.

  • 改變 surroundings 指令為 cs (Change Surroundings), 可以改變文本兩邊的 surroundings, 用法為: cs<old surrounding><new surrouding>, 下面給出幾個(gè)例子:
  • Old textCommandNew text ~
    "Hello *world!"cs"''Hello world!'
    "Hello *world!"cs"<q><q>Hello world!</q>
    (123+4*56)/2cs)][123+456]/2
    (123+4*56)/2cs)[[ 123+456 ]/2
    <div>Yo!*</div>cst<p><p>Yo!</p>

    除了 cs 指令, 還有一個(gè) cS 指令, 給當(dāng)前文本替換 surroundings 的時(shí)候, 會(huì)給當(dāng)前文本單獨(dú) 分配一行, 并進(jìn)行代碼格式化.

  • 添加 surroundings 指令為 ys (You Surroundings), 給文本添加 surroundings, 用法為 ys<text object><surrounding>, 下面給出一些例子:
  • Old textCommandNew text ~
    Hello w*orld!ysiw)Hello (world)!
    Ti*tleysiw<h1><h1>Title</h1>
    很Geek的做法ysiw<space><space>很 Geek 的做法

    有一個(gè)特殊指令: yss, 可以對(duì)當(dāng)前行添加 surroundings, 添加時(shí)自動(dòng)忽略兩邊的空格:

    Old textCommandNew text ~
    Hello w*orld!yssB{Hello world!}

    類似 cS, yS 也可以在給文本添加 surroundings 的時(shí)候給文本單獨(dú)分行并進(jìn)行代碼格式化, 而 ySS 則可以給當(dāng)前行添加 surroundings, 并且格式化

  • 可視模式指令 按 v 進(jìn)入可視模式, 接下來按 S<surrounding> 可以給選中的文本添加 surroundings
  • 我的一些配置

    寫文檔時(shí), 在中英文混輸?shù)那闆r下, 最好在英文單詞兩邊加上空格, 看著比較舒服, 也比較規(guī)范, 但是有時(shí)候經(jīng)常忘記, 所以我定義了如下快捷鍵:

    " 給單詞兩邊加上空格 nmap <leader><space><space> ysiw<space><space> " 給單詞左邊加上空格 nmap <leader><space>h wbi<space><esc>w " 給單詞右邊加上空格 nmap <leader><space>l ea<space><esc>b 復(fù)制代碼

    這些配置依賴 surround.vim, 所以要先裝插件. 另外, 有了 repeat.vim 這個(gè)插件, 這些指令也是可以使用 . 進(jìn)行重復(fù)的, 很方便.

    SuperTab

    上古神器, 在插入模式下使用 Tab 鍵進(jìn)行補(bǔ)全. 幫助文檔: help supertab

    用法其實(shí)很簡(jiǎn)單, 這里給一個(gè)文檔中的例子:

    > Example ('|' denotes the cursor location): > bar > baz > b|`<Tab>` Hitting `<Tab>` here will start the completion, allowing you to then cycle through the suggested words ('bar' and 'baz'). 復(fù)制代碼

    意思就是說, 你先輸入過 bar, 又輸入過 baz, 當(dāng)你再次輸入 b, 然后按 Tab 鍵, 會(huì)彈出一個(gè)候選列表幫你進(jìn)行補(bǔ)全, 在補(bǔ)全列表出現(xiàn)后繼續(xù)按 Tab/Shift-Tab, 可以在候選詞中循環(huán).

    EasyMotion

    上古神器, 是對(duì) Vim 移動(dòng)指令的增強(qiáng). 幫助文檔: help easymotion

    這里簡(jiǎn)單介紹一下用法: 加入你想找到下面這句話中的 amet 這個(gè)單詞上:

    <cursor>Lorem ipsum dolor sit amet.

    <cursor> 表示你現(xiàn)在光標(biāo)的所在處, 你需要輸入四次 w. 但是使用 EasyMotion 的話, 你可以使用這個(gè)指令: <leader><leader>w, 你會(huì)發(fā)現(xiàn)每個(gè)單詞的首字母都被高亮成一個(gè)新的不重復(fù)的字母了, 你直接按被高亮的那個(gè)字母, 就可以跳過去了.

    同樣的, 如果你想跳到某一個(gè)出現(xiàn)字母 o 的地方, 你可以使用 <leader><leader>fo, 那么所有字母o都被高亮成新的字母了, 你直接按下高亮的字母就可以跳過去了.

    你試試就知道我的意思了.

    CtrlP

    上古神器, 用于查找 Buffer, 文件列表, 最近使用文件等, 現(xiàn)在還在緩慢更新, 這幾年慢慢的被 fzf 代替了, 但是由于 fzf 配置比較麻煩, 現(xiàn)在我暫時(shí)還用 CtrlP. 幫助文檔: help CtrlP

    用法很簡(jiǎn)單, 按快捷鍵 Ctrl-p 可在 Vim 底部打開一個(gè)窗口, 然后你可以輸入文件名中的字符, CtrlP 會(huì)進(jìn)行模糊匹配查找.

    常用快捷鍵

    下面給出幾個(gè)常用快捷鍵, 注意下面的快捷鍵都只能在 CtrlP 的窗口中使用:

    快捷鍵功能備注
    Ctrl-j/k在文件列表中上下移動(dòng)
    Ctrl-f/Ctrl-b切換到下一個(gè)/上一個(gè)搜索模式搜索模式有三個(gè): Buffer, 文件目錄, MRU(最近最常使用)
    Ctrl-c關(guān)閉 CtrlP
    F7在 CtrlP 面板中刪除光標(biāo)所在條目(buffer, mru)
    Ctrl-s/Ctrl-v在水平/垂直的分割窗口中打開文件
    Ctrl-t在新 tab 中打開文件

    注意: CtrlP 也很依賴 CWD, 它列出文件目錄中的文件時(shí), 也是 CWD 下的文件.

    配置

    " 默認(rèn)使用緩沖區(qū)搜索模式打開 CtrlP let g:ctrlp_cmd='CtrlPBuffer' " 將為多字節(jié)字符開啟輸入事件循環(huán), 用于解決中文文件名的問題(實(shí)驗(yàn)特性) let g:ctrlp_key_loop= 1 " CtrlP 窗口最大高度和最小高度都是 10, 即固定大小 let g:ctrlp_match_window='min:10,max:10' 復(fù)制代碼

    小結(jié)

    本節(jié)介紹了幾個(gè)常用的插件, 都是很基本和通用的, 不涉及到具體編程語言, 有了它們, 會(huì)讓你的 Vim 用起來更舒服.

    總結(jié)

    以上是生活随笔為你收集整理的Vim 4 常用插件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。