俺用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
meteorのプロジェクトをpassengerで1回目のデプロイをする
今回はmeteorのプロジェクトの1位回目のデプロイ方法を書かせていただきます。
日本語の記事って少なすぎて泣けてきますよね・・・
エンジニアなら英語の記事ぐらい読めろって言われますが、まだ苦手です・・・
この記事は、
Deploying a Meteor app on Debian 8 (with APT) on a Linux/Unix production server with Passenger open source in Standalone mode - Passenger + Meteor deployment tutorial - Passenger Library
上記サイトを参考にして筆者が実際に構築をし、必要と思われるものを書き出しています。
passengerのインストール
まだpassenger(webサーバー)をインストールしていなければ、下記の記事を参考にpassengerをインストールしてください。
youmjww.hatenablog.jp
デプロイ前の準備
meteorをビルドしてサーバーに送信する
まず、ローカル環境でmeteorのパッケージをビルドします。
#ローカル環境 #ビルド $meteor build --server-only ../new_package && mv ../new_package/*.tar.gz package.tar.gz #ファイルをアップロード $scp package.tar.gz adminuser@yourserver:~/
appユーザの作成
ここからは特に指示がない限りサーバー上で作業を行ってください。
#ローカル #サーバーに接続 $ssh adminuser@yourserver
私、セキュリティの事はよくわからないのですが専用のユーザを作って操作してるのが安全らしいですね。よくわからんけど・・・
#appユーザーの作成 $sudo adduser myappuser
meteorのパッケージを抽出する
$sudo mkdir -p /var/www/myapp $cd /var/www/myapp $tar xzf ~/package.tar.gz $chown -R myappuser: .
アプリ環境を用意する
MongoDBのインストール
#aptのリポジトリを追加 $sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6 $echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list #リポジトリを追加したのでパッケージリストに更新をかける $sudo apt update $sudo apt install -y mongodb-org
依存関係のインストール
#myappuserに切り替え $su myappuser #依存関係のインストール $cd /var/www/myapp/bundle/programs/server $npm install --production
passengerの設定
サーバーの設定を行います。
$cd /var/www/myapp/bundle $vim Passengerfile.json
Passengerfile.jsonに下記の内容を入力してください。
{ // Tell Passenger that this is a Meteor app. "app_type": "node", "startup_file": "main.js", "envvars": { // Tell your app where MongoDB is "MONGO_URL": "mongodb://localhost:27017/myappdb", // Tell your app what its root URL is "ROOT_URL": "http://yourserver.com", }, // Store log and PID file in parent directory "log_file": "../passenger.log", "pid_file": "../passenger.pid" // Run the app in a production environment. The default value is "development". "environment": "production", // Run Passenger on port 80, the standard HTTP port. "port": 80, // Tell Passenger to daemonize into the background. "daemonize": true, // Tell Passenger to run the app as the given user. Only has effect // if Passenger was started with root privileges. "user": "myappuser" }
ROOT_URLはページのルートURLを指定してください。
passengerを起動する
#今はadminuserからmyappuserにスイッチしている状態のはずなのでadminuserに戻る $exit #passengerのスタート $cd /var/www/myapp/bundle $sudo passenger start
サーバがちゃんと動いているかテストする
#ローカル環境 $curl http://yourserver.com/ #これでちゃんと立っていたらHTMLファイルが帰ってくるはずです。
あとがき
これでpassengerの初期設定などは完了しました。
ただ、私も英語が得意なわけではないので解説などはざっくりしています。
ああ・・・英語できるようになりたい・・・
ubuntuにpassenger standaloneを構築する
英語の記事が多く、自分で使う時もよく迷うので備忘録として書きます
前提環境
ディストリビューションがubuntuまたはdebian
sudoが使える
node.jsのインストール
node.jsのインストール
$sudo apt update $sudo apt install -y curl apt-transport-https ca-certificates && &curl --fail -ssL -o setup-nodejs https://deb.nodesource.com/setup_4.x && sudo bash setup-nodejs && sudo apt-get install -y nodejs build-essential
passengerのインストール
# リポジトリの信用情報を取得 $sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7 $sudo apt install -y apt-transport-https ca-certificates # リポジトリを追加 $sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger xenial main > /etc/apt/sources.list.d/passenger.list' $sudo apt update # passengerのインストール $sudo apt install -y passenger
正しくインストールされたか確認
$sudo /usr/bin/passenger-config validate-install # 実行結果 * Checking whether this Phusion Passenger install is in PATH... ✓ * Checking whether there are no other Phusion Passenger installations... ✓
以上でパッセンジャー自身のインストールは終了です。
明日の記事でmeteorと連携を行い、デプロイ環境の構築を書きたいと思います。