Window、めちゃくちゃ遊べる要素があるなと思い、こんなものを作って遊んでいた。遊んでいるときに色々役立ったVim関数をまとめたいと思う。'g'))など色々あるが、マルチバイトの文字列などを考えなくて済むのはstrdisplaywidth()だった。文字列数とウィンドウ幅はイコールではないことを知っておこう。windowの位置、大きさを変更するredrawがポイント。windowの位置を変更するにはnvim_win_set_config()で新たにconfigをセットしてあげればよい。幅や高さを変えたいときはconfigをセットする必要はなく、nvim_win_set_width()やnvim_win_set_height()を使えば良い。移動をアニメーションっぽく見せるためにはconfigをセットした後にredrawとsleepが必要になる。windowしか表示されない。sleepがないと一瞬で描画が終わってしまうため、アニメーションっぽくならない。下記は右下に1ずつ移動していくvimscript。windowを生成するときに区別できるとデバッグがしやすいこれはもうちょっとスマートに書けると思うが、デバッグ用なのでまあいいかなと甘んじてる。1桁目(%x)と残り5桁(%05x)で分けているのは、そうした方が似た色が出にくいから。60000はざっくり計算。00000~fffffの10進数以内だったら何でもいい。windowにコマンドを実行する」ときに必要となる。win_id2tabwin(a:win_id)[1]endfunctionこのコードは下記のサイトから頂きました。koturn.hatenablog.comここのサイトめちゃくちゃ綺麗にまとまっていて、かつほぼ全ての相互変換を網羅してるので本当に助かりました、感謝です。windowにコマンドを実行したいってことが結構ある。そんなときはwindoを使う。0番は最初に開いたウィンドウとなるのでおそらくメインウィンドウだろう。cmdに:を渡しているのはShellScriptと同じ感覚で何もしないことを示す。:"endfunctionまた、これは前述のwindow_idからwindow_numberを取得するものと一緒に使うことが多い。windowに文字列を挿入する、みたいなときはこうする。windowにフォーカスを移してから実行していくと楽。Ctrl-o生成したwindowを全て閉じるときに便利。:lsを実行すると消えていることがわかる。完全には削除されない。:ls!を実行するとvim上には残っていることがわかる。完全に消すには:bw[N]でNにバッファ番号を指定すればOK。こちらのサイトを参考にさせて頂きました。windowを移動させるときなど、ある程度計算を行った後にcolやrowに値をぶち込むことが多い。その計算途中でfloatだと面倒なので必要になった。10終わり所詮小さいScriptなので、なんとなく頭の中でこうやればできるなと思うことはできるが、いざ実装しようとすると何の関数を使えばいいのか、そもそもあるのかわからなくてめげそうになる。Vimは先人様たちが必要だと思ったのは大体入っている。ない場合は他で代替可能だという無言のメッセージだと捉えれば、楽しくVimScript開発できる。ない)ShellScriptでドヤりたいGWアドベントカレンダー6日目いくで。はてなブログProネットワーク系院卒。現在は小田原のエンジニア。Swiftでアプリ作ったりShellスクリプトで自動化したりするのが好き。業務ではサーバーサイドいじってる。reserved.スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。