8
4

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.

VimAdvent Calendar 2022

Day 21

どこでもvimコンフィグを落とせるワンコマンドを作ってみました

Last updated at Posted at 2022-12-20

今回は、◯◯太郎記事のスタイルをパクってのインスパイアを受けて対話式の記事になります mm

はじめに

= ある日の休憩中にvim同士の後輩くんとの会話 =

後輩 「サーバーの立ち上げ作業順調ですか?」
自分 「順調だけど、、」
自分 「vimでサーバー上のファイル色々修正してるけど、、」
自分 「自分の環境のvimの操作と微妙に違くてちょっと不便を感じている。。」
後輩 「そうなんですか!」
後輩 「dotfilesをサーバに落とし込んで自分のコンフィグを入ればいいんじゃないですか?」
自分 「やー」
自分 「サーバー立ち上げたらそんな頻繁に触らないし、コンフィグを落とすことが面倒だな」
自分 「しかも色んなプラグインが入っているし、サクサクで使いたいの。」
後輩 「面倒ですか笑。確かに重いそうですねー」
自分 「軽量版コンフィグを簡単に読み込む機能とかないですかね。。」
後輩 「うーん、それは難しいそうですかね。。」

= 障害で緊急対応に入っていて会話終了 =

URLからvimスクリプトを読み込む

= また別の日にFくんとの会話 =

自分 「ね、このvim機能知っている?」
後輩 「あ、vimのsourceコマンドですね!vimコンフィグを読み込むコマンドですよね?」
自分 「そうそう、実はURLから読み込むことができますよ」

" 普通はファイルパスを指定する
:source ~/.vimrc

" URLでも読み込める?!
:source http://example.org/vimrc.vim

後輩 「へー、URLが読み込めるんだ!」
後輩 「これで何か作るんですか?」
自分 「気軽にコンフィグを落とす機能って覚えっている?」
自分 「これで実現できるんですよー」
後輩 「そうなんですか!」
後輩 「これでGithub上のvimコンフィグファイルのURLを指定しとけば読み込めるって感じですか↓」

:source https://github.com/adwinying/dotfiles/raw/master/vim/.vim/basic.vim

自分 「これで行けなくはないですけど、」
自分 「URL長くて覚えられないし、コンフィグを複数ファイルに分割したので気軽に読み込むレベルじゃないですねー」
後輩 「確かに🤔」
後輩 「もうしかしてもっといい方法があるんですか?」
自分 「おっしゃる通り!」

軽量版コンフィグを読み込むスクリプト

自分 「軽量版コンフィグを読み込むスクリプト作りましょう!」
後輩 「おー!ていうかどう作ればいいですか?」
自分 「こうでどうですか?」

silent execute '!curl https://raw.githubusercontent.com/adwinying/dotfiles/master/vim/.vim/basic.vim https://raw.githubusercontent.com/adwinying/dotfiles/master/vim/.vim/colors/nord.vim > ~/.vimrc'
source ~/.vimrc

後輩 「長いですね!難しいそうー」
自分 「いや、そうでもないよ。URLを省略して解説するね↓」

silent execute '!curl url1 url2 > ~/.vimrc'
" silent:実行したコマンドの結果を出力しない
" execute:指定した文字れるの内容をvimコマンドとして実行
" !:以降の内容をターミナル上で実行

自分 「つまり、」
自分 「curl コマンドで最低限のコンフィグファイル(この場合はファイル2個)を落とし込んで、」
自分 「全ての内容を ~/.vimrc というファイルに保存する」
自分 「最後に、さっき作ったファイルを読み込む」
自分 「というスクリプトですー」
自分 「curl コマンドに依存するスクリプトになりますが、大抵の環境に入っているので多分大丈夫だと思う。。」

後輩 「なるほど、これはシンプルでいいですね!」
後輩 「しかも .vimrc に保存されているので次回vimを開いてもコンフィグが残りますね!」
後輩 「でも。。」
自分 「??」
後輩 「やはりサーバーとか共有環境に自分のコンフィグを残したくないな。。
自分 「それなら保存先を変えればいいですよ↓」

let tmp_file = system('mktemp')
silent execute '!curl url1 url2 > '.tmp_file
silent execute 'source '.tmp_file

後輩 「mktempってtempファイルのパスを生成するコマンドですよね?」
自分 「そう!これでパスを取って、落とした内容の保存先にして読み込むという流れですー」
後輩 「tempファルなので使い切りって感じですか?」
自分 「一応ファイルはどこかで残っていますよ。各OSには、tempファイルのディレクトリがあるよ↓」

Windows: C:/users/[ユーザー名]/appdata/local/temp
Linux: /tmp
macOS: /var/folders/[ハッシュ?]/T

自分 「tempディレクトリにあるファイルは削除して大丈夫なので、」
自分 「心配症であればここにあるファイルを消せばいいよ」
後輩 「すぐに消えないですか!メモしておこうー」

URLの簡略化

後輩 「先輩、課題残ってますよ?」
自分 「??」

自分 「URL長くて覚えられないし、コンフィグを複数ファイルに分割したので気軽に読み込むレベルじゃないですねー」

後輩 「URLがまだ長くないですか?」
自分 「あ、確かにそうですね!」
自分 「スクリプトをホスティングする場所次第ですね」
自分 「自分が持っているドメイン(iadw.in)が十分短いのでそっちにしようー」
自分 (ドメインのpublicディレクトリ直下に vimrcvimrc.tmp を置いときます)
自分 「これでこのコマンドで読み込めますね↓」

"自分のvimコンフィグを読み込むコマンド(vim終了しても持続する)
:so https://iadw.in/vimrc

"自分のvimコンフィグを読み込むコマンド(vim終了後持続しない)
:so https://iadw.in/vimrc.tmp

後輩 「なるほど、これは覚えやすいですね!」
後輩 「自分ドメイン持ってないですけど、他にいい方法ありますか?」
自分 「bit.lyなど短縮URLサービスを使って短くできますよ」
自分 「URLのパスの指定ができないけど。。」
後輩 「なるほど、、パスをさえ覚えばいいですか😅」

参考

vim を開いた状態で以下のコマンドを実行する

"自分のvimコンフィグを読み込むコマンド(vim終了しても持続する)
:so https://iadw.in/vimrc

"自分のvimコンフィグを読み込むコマンド(vim終了後持続しない)
:so https://iadw.in/vimrc.tmp

vimrc 内容

vimrc.tmp 内容

8
4
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
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?