3
5

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.

LuaSnipでコーディングを高速化

Last updated at Posted at 2023-01-24

LuaSnipとは

LuaSnipは,vimで使用するスニペットを管理するためのプラグインです.
開発者が常用するコードのフレーズを保存し、簡単に呼び出すことができるようにすることで、開発効率を向上させることができます。

使用例

私がスニペットの導入を行なったのは,競技プログラミングのコンテストに参加する際に常用するコードを保存しておき,コーディング時間を可能な限り減らすことで,思考する時間を増やすことを目的としていました.

例えば,これまで私は以下のコードを問題ごとに毎回打ち込んでいました.

#include <bits/stdc++.h>
using nameplace std;

これを,"std"と打ち込むことで呼び出されるように設定しておけば,一瞬で記述することが可能になります.

インストール

コードのみを見たい場合は,以下のリポジトリを参照してください.

LuaSnipとcmp_luasnipをインストールします.
私はPackerを使って,プラグインの管理を行なっているため,以下のように記述しました.

-- LuaSnip
use({ 'L3MON4D3/LuaSnip' })

-- cmpでLuaSnipを使うためのプラグイン
use({ 'saadparwaiz1/cmp_luasnip' })

設定

補完ソースにLuaSnipで設定したスニペットを追加し,でLuaSnipのジャンプ機能を使えるようにnvim-cmpの設定ファイルに記述します.

local cmp = require('cmp')
local luasnip = require('luasnip')

cmp.setup({
  snippet = {
    expand = function(args)
      luasnip.lsp_expand(args.body)
    end,
  },
  mapping = cmp.mapping.preset.insert({
            :
           省略
            :
    -- Keymapを設定
    ['<C-k>'] = cmp.mapping(function(fallback)
      if luasnip.expand_or_jumpable() then
        luasnip.expand_or_jump()
      else
        fallback()
      end
    end, { 'i', 's' })
  }),
  sources = {
    { name = 'nvim_lsp' },
    -- LuaSnipを追加
    { name = 'luasnip' },
    { name = 'buffer' },
  },
})

vim.cmd [[
  set completeopt=menuone,noinsert,noselect
  highlight! default link CmpItemKind CmpItemMenuDefault
]]

そして,LuaSnipの設定ファイルを作り,使いたいスニペットを書いていきます.
今回はC++用のスニペットを記述していますが,”cpp”の部分を"all"に変えれば,全てのファイルに適用されるスニペットに,"py"に変えれば,Pythonファイル用のスニペットを記述できます.

local ls = require('luasnip')
local snip = ls.snippet
local text = ls.text_node
local insert = ls.insert_node

ls.add_snippets(nil, {
  cpp = {
    snip({
      trig = 'std',
      }, {
      text({'#include <bits/stdc++.h>', 'using namespace std;', ''}),
      insert(0),
    }),
  },
})

cppファイルでを開き,"std"と打ち込むことで,設定したスニペットが表示されているはずです.

3
5
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
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?