2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NeoVimにddc.vimを導入する

Last updated at Posted at 2023-08-25

ddc.vimはShougoさん開発の自動補完プラグインです。
deopleteの後継プラグインで、さらに高速化、高機能化しています。

導入に際してあまり多くの情報が見当たらなかったので備忘録を兼ねてまとめておきます。

NeoVimを使用しているので設定はinit.vimに記述します。
なお一部NeoVim専用の機能や設定を使用していますので、Vimの方は削除する必要があります。

私の環境は以下の通りです

  • Macbook Air M2 2022
  • NVIM v0.9.1
  • Warp Terminal(標準のTerminalでも動作します)

必要なソフトウェアの導入

ddcはdenoを必要とします。

brew install deno
brew install neovim

init.vimでの設定

プラグインのインストール

  • 私はインストーラにDeinを使用しています。
  • 補完候補のポップアップにはネイティブUIを使用しています。(pum.vimは使用していません)
  • 検索はファジー(揺らぎ)検索を可能にしています。
	call dein#add('vim-denops/denops.vim')

    call dein#add('prabirshrestha/vim-lsp')
	call dein#add('mattn/vim-lsp-settings')

	call dein#add('Shougo/ddc.vim')
	call dein#add('Shougo/ddc-ui-native')
	call dein#add('Shougo/ddc-around')
	call dein#add('matsui54/ddc-buffer')
	call dein#add('shun/ddc-source-vim-lsp')
	call dein#add('tani/ddc-fuzzy')

LSPの設定

最初にLeaderキーをSpaceキーに設定しています。以下のキー設定はその前提です。

  • 「Space l i」を順番に押すと、インストール可能なLSP一覧が出ます。インストールもここでできます
  • 「Space l h」を順番に押すと、カーソル下の関数などの宣言を参照できます
  • 「[ e」を順番に押すと、LSPが検出した前のエラーにジャンプします
  • 「] e」を順番に押すと、LSPが検出した次のエラーにジャンプします
  • 「Ctrl+]」を同時に押すと、カーソル下の関数の宣言箇所へジャンプできます
let mapleader = " "

"===================================
" LSP Settings
"===================================
nnoremap <Leader>li :LspManageServers<CR>
nnoremap <Leader>LI :LspInstallServer<CR>
nnoremap <Leader>ls :LspStatus<CR>
nnoremap <Leader>lh :LspHover<CR>
nnoremap ]d :LspNextDiagnostic<CR>
nnoremap [d :LspPreviousDiagnostic<CR>
nnoremap ]e :LspNextError<CR>
nnoremap [e :LspPreviousError<CR>
nnoremap <C-]> :LspDefinition<CR>

ddc.vimの設定

基本的にVim標準の補完機能とあまり変わらないキー設定になっています。

  • 「Ctrl+n」で次の候補を選択
  • 「Ctrl-p」で前の候補を選択
  • 「Tab」か「Enter」で候補を選択
  • 基本的に「.」や「->」などクラスの要素にアクセスするタイミングで補完一覧が勝手に出ます
  • 何らかの単語を2文字程度入力すると、周囲のコードやバッファ内のソースコードから似た単語を候補として挙げてくれます
"===================================
" Ddc Settings
"===================================
call ddc#custom#patch_global({
\	'ui': 'native',
\	'sources': [
\		'vim-lsp',
\		'around',
\		'buffer',
\	],
\	'sourceOptions': {
\		'_': {
\			'matchers'  : ['matcher_fuzzy'],
\			'sorters'   : ['sorter_fuzzy'],
\			'converters': ['converter_fuzzy'],
\			'ignoreCase': v:true,
\		},
\		'around': {
\			'mark': '[Arround]',
\		},
\		'buffer': {
\			'mark': '[Buffer]',
\		},
\		'vim-lsp': {
\			'mark': '[LSP]',
\			'forceCompletionPattern': '\.\w*|:\w*|->\w*',
\		},
\	},
\	'sourceParams': {
\		'around': { 'maxSize': 500 },
\		'buffer': {
\			'limitBytes': 5000000,
\			'forceCollect': v:true,
\			'fromAltBuf': v:true,
\		},
\	 },
\})
call ddc#enable()

他にもアドバイス等あればぜひ教えてください。
設定の参考になれば幸いです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?