Friendly Snippets

She came in through the bathroom window1

彼女は浴室の窓から入ってきた

何者かがぬるっと入って来ましたが、そんな状況に反してFriendly Snippetsは文字通りとっても friendly です❗

斬らないでください😶‍🌫️ 気楽にいきましょう❗

Snippets collection for a set of different programming languages.

様々なプログラミング言語のためのスニペット集です。

The only goal is to have one community driven repository for all kinds of snippets in all programming languages, this way you can have it all in one place.

唯一の目標は、あらゆるプログラミング言語のあらゆる種類のスニペットを集めたコミュニティ主導のリポジトリを1つ持つことです、 そうすることで、一か所ですべてを手に入れることができるのです。

リポジトリを見てもわかる通り、friendly-snippets自体はluaのコードを持ってないんですね😮

もうほんとに純粋なスニペット集です😊

Install

これ、実際は次の項で行うpathsで認識させればいいだけなので、packerには更新管理だけを行ってもらいます😺

extensions/init.lua

  use {
    'hrsh7th/nvim-cmp',
    config = function() require 'extensions.nvim-cmp' end,
    requires = {
      'hrsh7th/cmp-nvim-lsp',
      {
        'L3MON4D3/LuaSnip',
        tag = "v1.*",
        run = 'make install_jsregexp',
        config = function() require 'extensions.luasnip' end,
-       requires = 'saadparwaiz1/cmp_luasnip',
+       requires = { 'saadparwaiz1/cmp_luasnip', 'rafamadriz/friendly-snippets' },
      },
    },
  }

Protected by a silver spoon2

銀の匙に守られながら

Setup

packerを使用して取得されたのであれば、当然packerの管理下に配置されます。

パスはちょっと複雑ですね😅

extensions/luasnip.lua

require('luasnip.loaders.from_vscode').lazy_load {
  paths = {
    vim.fn.stdpath('data') .. '/site/pack/packer/start/friendly-snippets',
    './snippets',
  },
}

Tip

コード中にある..luaの連結演算子です。

Note

これも本当はpathsを指定しなければもう勝手に見つけ出してくれるんですが、 既にパスを指定する形をとってしまっているので、"指定しない"方法と併用できないんですぅ😭

Didn't anybody tell her?

Didn't anybody see?

誰も教えてあげなかったの?

誰も気づいてないの?

Using

ここでは気分転換にhtmlを開いてみました🐙

friendly-snip

ほら❗一目でわかるすっごいやつやん👺

Sunday's on the phone to Monday

Tuesday's on the phone to me

日曜の事は月曜に電話する

火曜の事は僕にかかってくる

Super-Tab

...と、いうことでSuper-Tabを実践・活用できるコレクションが手に入りました❗

満を持してLuaSnipKeymapsで説明を後回しにしていたSuper-Tabに触れていきます🏄‍♀️

nvim-cmp's wiki also contains an example for setting up a super-tab-like mapping.

nvim-cmp の wiki には、super-tab のようなマッピングを設定する も紹介されています。

じゃあ、また適当なluaファイルを開いて、 今度はfor~のスニペットを選んでみましょう。(スクリーンショットで言うと、4番目にいるやつです。)

super-tab1

"i" の部分にカーソルが進みましたね。モードがSELECTとなっているのもポイント❗

super-tab2

VISUALモードじゃないぞ😉❤️

super-select

書き換え前の変数が "i" なのでややこしいんですが...、

super-tab3

iを押さなくても、そのまま入力を開始すれば勝手にINSERTモードに切り替わります🐬

super-insert

書き換えたらINSERTモードのままTabをポチッとすると次に進みます。

super-tab4

繰り返していくと...

super-tab5 super-tab6 super-tab7

あ、なんか "中身も書けや" と言われているかのようですね😮

super-tab8

書きました😆

super-tab9

カ キ マ シ タ ァ❗❗

Tip

Shift-Tabで逆に辿っていきます🏄 これは直感的ですね😉

こんなんで伝わったかな...👮‍♀️

Note

「これがSuper-Tabです❗」っていう説明がどこにあるのか分からなかったので、 多分これだろうぐらいで書いちゃってますが、もし違ってたらごめんなさい🥹

And so I quit the police department

And got my self a steady job

だから僕は警察を辞めた

それで安定した仕事に就いたんだ

I'll take you all.

自分で育ててないわたしが言うのもあれですが、スニペットはNeovimに限らずどこでも使えます🦉

今回使用したのはVS Code-likeのスニペットです。これ大事❗覚えといてね🤗

Success

And though she tried her best to help me

She could steal, but she could not rob

僕を助けようと 彼女は頑張ってくれたけど

こっそり盗むことはできても、強引に奪うことはできないんだね