:NeoBundleInstallをvimの外から叩く方法
皆さんこんにちわ
vimの環境構築は自動化していますか?
自動化した環境で、プラグインのインストールはどうしてますか?
NeoBundleを使っていると、ここだけ手動になるのがめんどくさくないですか?
今回は、これを解決してみます。
# 実際に外部から:NeoBundleInstallを叩いてみる
$vim +":NeoBundleInstall" + :q
はい。これだけです。
もし、他のコマンドを実行したかったら、`:NeoBundleInstall`の部分を他のものに書き換えてください。
そして、最後に`:q`をするのを忘れないでください。これを忘れると、自動でvimが終了してくれません。
これだけでvimの環境構築で本来なら一度、人間がvimを開かないと出来ない操作を自動化することが出来ます。
環境構築スクリプトをワンライナーで配布する方法!
みなさんこんにちわ! みなさんは環境構築はスクリプト化していますか? スクリプト化していたらどうやって実行していますか? クラウドからコピペでスクリプトファイルを作って実行していたりしないですか? 今回は、コマンド一発でスクリプトをwebから引っ張ってきて、実行する方法を紹介したいと思います。
導入事例
まずは、導入事例を見てみましょう。
https://www.meteor.com/install
ぱっと探しますと、homebrewとmeteorがワンライナースクリプトで配布を行っていました。 しかも、homebrewに関してはここで紹介する方法と同じ方法で配布を行っています。(実行言語はrubyだけど。)
上記で上げたとおり、大きなコミュニティでも使われている方法ですので、楽にインストールを行えるというのが伺えると思います。 では実際にこの配布環境を作ってみましょう!
用意するもの
- bashが動く環境
(windows?そんなものは知らん!) - curlが動く環境 (ubuntuなどcurlが入っていない場合は頑張ってインスコしよう!)
- githubのリポジトリ
- シェルスクリプトでかかれたスクリプト
手順
詳しい手順
githubのpublicリポジトリにスクリプトをうpする
ここでは詳しい説明を割愛しますが、必ずpublicリポジトリにpushしてください。 publicでないとファイルを取ってこれない(はず)です
githubのリポジトリにうpされたスクリプトのrowのURLを取得する
ここからが本番です。 一度、ブラウザで実際のファイルを確認してみましょう。 まず、ブラウザのURL欄に下記URLをコピペしてください。
https://raw.githubusercontent.com/account/repository/branch/filename
そして、後ろ4つのパラメータを自分に当てはまる形に修正してください。
account = githubのアカウント名 repository = リポジトリ名 branch = ブランチ名(masterがおすすめ) filename = 目的のファイル名
例:https://raw.githubusercontent.com/youmjww/vimSetup/master/vimSetup.sh
これで実際に見てみると、目的のファイルのrowが見えるはずです。
実際にコマンドラインから実行してみる
ここは本当に簡単で、ワンライナーで実行します。 URLの部分は自分のURLに書き換えてください。
$curl https://raw.githubusercontent.com/account/repository/branch/filename | sh
ここでは、curlコマンドでgithubからソースをダウンロードしてきて、ダウンロードが完了したらshで実行をしています。 shの部分を書き換えると好きなシェル環境で実行できますが、筆者個人的には、どんな環境でも動くshで実行できるようにコードを組むのがいいかなと思います。
このスクリプトのメリット・デメリット
メリット
- リポジトリのREADME.mdにでも実行用のコードを書いておけば一回コピペして実行するだけなので操作する時間を大幅に削減できる。
- 友人などにおすすめだから使ってみてって渡す時に気楽に環境をインストールしてもらえる
- シェルスクリプトで書いておけば、大体のUnix/Linux環境で動く
- かっこいい!←ココ重要
- スクリプトをメンテしてもURLは変わらないので一度作ってしまえば永久に使えるコマンドになる
デメリット
- AnsibleやChefみたいに、環境構築専門の言語じゃないので、エラーが出ても止まらない。
- シェルスクリプトを書くのが辛い・・・
あとがき
この方法でのスクリプトの配布は本当に便利でして、あまり時間がない時にサックっと環境構築をしたい時にワンライナーを実行するだけでいいので、おすすめです! みなさんも是非やってみてください!(そして、いいなと思ったらツイートやコメントをくれると嬉しいなw)
俺用vimチートシート
この記事は、私の私による私のためのvimの操作方法を記述した記事です。
随時更新予定です。
この記事を書く背景
最近、vimのコマンドを覚えれなくなってきたので、メモが欲しいけど、持ち歩くのはめんどくさいし、どこからでも見やすいブログがいいと思ったのでここに書きます!
vimの設定とプラグインをインストール
$curl https://raw.githubusercontent.com/youmjww/vimSetup/master/vimSetup.sh | sh
操作方法
特に記述がない限り、ノーマルモードで実行お願いします。
独自カラムは、導入したプラグインの挙動だったり、独自に設定したショートカットだったりします。
モード変更
コマンド | 内容 | 独自 |
---|---|---|
a | カーソルの次の位置でインサートモード | |
i | カーソルがある位置でインサートモード | |
v | ビジュアルモード | |
Esc(連打) | ノーマルモード |
カーソル移動
1ずつ移動
コマンド | 内容 | 独自 |
---|---|---|
k | 上へ移動 | |
j | 下へ移動 | |
h | 左へ移動 | |
l | 右へ移動 |
複数まとめて移動
コマンド | 内容 | 独自 |
---|---|---|
G | 一番下へ移動 | |
gg | 一番上へ移動 | |
H | 行の左端へ移動 | ○ |
L | 行の右端へ移動 | ○ |
ファイル操作
コマンド | 内容 | 独自 |
---|---|---|
:w | 変更を保存する | |
:q | ファイルを閉じる | |
:q! | 保存していなくても、強制的にファイルを閉じる | |
:wq | ファイルを保存して閉じる | |
:wa | 開いているファイルの変更をすべて保存 | |
:qa | 開いているすべてのファイルを閉じる | |
:wqa | ファイルをすべて保存してファイルを閉じる |
コピペ
コマンド | 内容 | 独自 | |
---|---|---|---|
(ビジュアルモードで範囲指定後)y | コピー | ||
dd | 一行カット | ||
x | 一文字カット | ||
p | ペースト |
検索
コマンド | 内容 | 独自 |
---|---|---|
:Ag 検索ワード | カレントディレクトリ以下のソースから文字列の検索 | ○ |
Control + p | ファイル名検索 | ○ |
?[文字列] | カーソル位置より上方向に[文字列]を検索 | |
/[文字列] | カーソル位置より下方向に[文字列]を検索 | |
n | 次の候補へ移動 | |
N | 前の候補へ移動 | |
F3キー | 検索ハイライトを解除 | ○ |
その他コマンド
コマンド | 内容 | 独自 |
---|---|---|
space + f | ファイルエクスプローラーを開く | ○ |
:数字 | 指定された行へジャンプ | |
ci' | シングルクォートの間を削除してインサートモード | |
ci" | ダブルクォートの間を削除してインサートモード | |
ci( | 丸括弧の間を削除してインサートモード |
vimプラグインマネージャのインストール
何回も同じことをやってるので、備忘録として書きます。
vimのプラグインを手動で管理するのは面倒なので、プラグインマネージャを使うと便利(らしい)
NeoBundleをcloneしてくる
# プラグインインストール用のディレクトリを作成 # mkdirに-pオプションを付けることでサブディレクトリも同時に作れる $mkdir -p ~/.vim/bundle # プラグインマネージャをcloneしてくる $git clone git://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim
.vimrcの設定
vimrcを開く
$vim ~/.vimrc
vimrcの先頭に追記
" プラグインの管理のやつ if &compatible set nocompatible endif set runtimepath+=~/.vim/bundle/neobundle.vim/ call neobundle#begin(expand('~/.vim/bundle/')) NeoBundleFetch 'Shougo/neobundle.vim' " 追加プラグイン " ファイルエクスプローラ NeoBundle 'scrooloose/nerdtree' NeoBundleCheck
プラグインを追加する場合は、NeoBundleCheck
より前に使用したいプラグインを追記するとvimを開いた時に自動的にインストールしてくれます。
npm install でつまずいたのでメモ
あれ?いつも通りnpmでパッケージをインストールしようとすると404エラーが出るぞ・・・
スペルはgithubの公式からコピペしてるから間違えていないはず・・・と思い、いろいろ調べてやってみたことのメモです。
npmのバージョン確認
とりあえず、npmのバージョンが古いのかと思いバージョンを確認してみました。
npm -v #結果 3.5.2
うーん今回使いたいパッケージはnpm4.15.2って書いてあるな。
俺、npmをインストールたのどんだけ前なんだろと思いつつnpmを更新することに。
npmのアップデート
とりあえずaptでインストールしたはずだからaptでアップデートできると思いやってみました。
$sudo apt update $sudo apt upgrade npm $npm -v #結果 変わらず3.5.2
ん?aptで更新をかけたのに変わってないぞ・・・
じゃあ、npmでnpmの更新ができるみたいだから試してみよう。
$npm install -g npm
すると・・・
なんでやw
npmのリポジトリは登録されているはずだろw
これはもしかしてリポジトリの登録が何かの拍子で解除されてしまったのかな?
とりあえず、リポジトリのリストを確認してみましょう。
npmレジストリの確認
$npm config get registry #結果 null
あーレジストリがnullになってる・・・
そりゃインストール出来ないわな・・・
うん。
じゃあ登録しなおしてやってみるか
もう一回npmの更新を試みている
とりあえず、テストも兼ねてnpmの更新をしてみたいと思います。
$npm install -g npm
お!今度は通ったぞ!
じゃあnpmのバージョンが何になったか確認してみよう!
$npm -v #結果 3.5.2
あれ・・・バージョンが上がってない・・・
とりあえずこれでもう一回目的のパッケージがインストールできるか試してみるかと思い試してみると、ちゃんとインストールできました。
どうやら原因はレジストリの登録が何故かnullになっていたからみたいですね・・・
あとがき
なんか途中からnpmのトラブルシューティングみたいになってましたけど、目的は達成できたので良しとしますw
まさかレジストリの登録が変わっていてnullになっているとは思いませんでしたw
でも、更新をかけてもnpmのバージョンが上がらなかったのは何故なんだろ・・・
ubuntu16.04で使えるバージョンだと今のバージョンが最新なのかな・・・
まあいいやw
目的は達成できたから今回は良しとしましょう。
ubuntuでrpmパッケージを使う
meteorのプロジェクトをpassengerで二回目以降のデプロイ
meteorのプロジェクトの二回目以降のデプロイ方法を書かせていただきます。
初回のデプロイと二回目のデプロイは微妙にすることが違うのでご注意ください。
一回目の場合は下記記事をご参照ください。
youmjww.hatenablog.jp
この記事は、前回同様
Deploying a Meteor app on Ubuntu 16.10 (with APT) on a Linux/Unix production server with Passenger open source in Standalone mode - Passenger + Meteor deployment tutorial - Passenger Library
上記サイトを参考にして筆者が実際に構築をし、必要と思われるものを書き出しています。
デプロイ前の準備
meteorのプロジェクトをビルドしてサーバーに送信する
まず、ローカル環境でmeteorのパッケージをビルドします。
#ローカル環境 #ビルド $meteor build --server-only ../new_package && mv ../new_package/*.tar.gz package.tar.gz #ファイルをアップロード $scp package.tar.gz adminuser@yourserver:~/
サーバーにログイン
$ssh myappuser@yourserver.com
デプロイ
tarの解凍
$mkdir -p /var/www/myapp/tmp $cd /var/www/myapp/tmp $tar xzf ~/package.tar.gz
passengerの設定ファイルをコピー
このファイルは何回も使いまわすのでどこかにバックアップを取っておいたほうがいいかも知れないですね。
$cp /var/www/myapp/bundle/Passengerfile.json /var/www/myapp/tmp/bundle/
依存関係のインストール
$cd /var/www/myapp/tmp/bundle/programs/server $npm install --production $npm prune --production
アプリを更新する
もしちゃんと更新できなかった時のためにバックアップを取っておきます。
$mv /var/www/myapp/bundle /var/www/myapp/bundle.old $mv /var/www/myapp/tmp/bundle /var/www/myapp/bundle $passenger-config restart-app /var/www/myapp/bundle
古いバージョンを削除
新しいバージョンのアプリが動いているのを確認できたら古い方は削除してください。
$rm -rf /var/www/myapp/bundle.old