ハイパーマッスルエンジニアになりたいスマートフォン用の表示で見るハイパーマッスルエンジニアになりたい目指せドM。Vimに生命を吹き込む(NeoVim×FloatingWindow)2019-12-13Vimに生命を吹き込む(NeoVim×FloatingWindow)VimTwitterGooglePocketVimに生命を吹き込む(NeoVim×FloatingWindow)はじめにこの記事はHameeアドベントカレンダー13日目の記事です。最近VimからNeoVimに乗り換えた。VimPluginの王ShougoさんのPluginもいくつかNeoVim対応が増えてきていた(というかNeoVimにした方が楽な状態になってた)ので、NeoVimにしてみた。今回はこれの紹介とVimScriptを開発していく上でのちょっとしたTipsを書いていく。WindowでVimに「生命」を吹き込みたかったFloatingWindowで遊んで出来上がったものがこれ。pasteするときに上から降らしたり、deleteするときに一個ずつバラバラにしたりして、さもVimが生きているかのような振る舞いを目指した。github.comgithub.comこれを紹介したかっただけなので今回の記事はもう満足してる。Windowって何?画面分割などでウィンドウをタイル型に並べるのではなく、重なるように配置できるNeoVimの新機能。イメージ的には補完表示で出てくるウィンドウに近い。FloatingWindowで作成されたウィンドウはVimの通常のバッファとほぼ同じなので、移動などの操作もhjklだし、勿論Vimコマンドも使用できる。詳しくは下記サイトが参考になる。windowで関数説明やGitのログを表示できるFloatingWindowはNeoVimにしか入っていないが、通常のVimでも「ポップアップウィンドウ」という名前で導入されている。生成の仕方はそれぞれ違うが、たぶん同じようなことができるんだろう。VimScriptで遊ぶときのTips今回のFloatingWindowのように、Vimで新しい機能が導入されたときや、.vimrcに自作関数を作りたいときに、どうやって遊んでいくか。自分はこうやっているよというのを紹介したい。FloatingWindowで遊ぶときのTipsは別記事に上げたので興味ある人はそっちをどうぞ。FloatingWindowの話はここで終わりだ。下記サイトに書かれているコードを試したいとする。qiita.com上記サイトから抜粋。開いて、そのウィンドウにフォーカスを移す。なっているのでフォーカスが移ります。winhighlight=Normal:Hogeこのコードを試したいと思ったらやることは3つ。%でスクリプトを実行するこんな感じ。%の%はVimではカレントバッファのファイル名を示すので、「現在開いているファイルを読み込む(実行する)」に等しい。cmdline-specialで調べてみると面白い。%をキーマップするととっても楽。自分は.vimrcに以下を記載して、Shift+Sで実行できるようにしている。関数化して呼び出すVimScriptで関数を作るときはTest()のように先頭を大文字にしてグローバル関数して定義するか、s:test()のようにs:をつけてローカル関数にするかなどいくつかやり方がある。基本はこの2つでいいんじゃねえかな。5ただ、s:の関数を呼び出すときは少し注意が必要で、nnoremapなどのmap系で使う場合はs:ではなく<SID>test()としなければならない。https://whileimautomaton.net/2008/06/30070800おまけちなみにNeoVimに乗り換えるのはめちゃくちゃ楽で、.vimrcをinit.vimにするだけでOK。インストール可能なので一回やってみてもいいかもね。.vimrcの内容もほぼ書き換えなしでそのまま移行できる。自分は1,2箇所の書き換えのみでスルッと移行できた。以下の3ステップで導入完了となる。nvim終わりNeoVimはおもしろい。Adve...2019-04-30Shellで定義済みの関数を流し読みしながら表示するShellScriptでドヤりたいGWアドベントカレンダー4日目いくで。はてなブログProネットワーク系院卒。現在は小田原のエンジニア。Swiftでアプリ作ったりShellスクリプトで自動化したりするのが好き。業務ではサーバーサイドいじってる。reserved.スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。