vimのhelpを読んで新たに覚えた便利なコマンド(usr11-usr12)
前回の続きです。
K カーソルのある単語のmanを引く。 なんとびっくり。こんなことできるんですね。
:grep abc *.txt *.txtの中からabcをgrepして、該当箇所にカーソルを移動。ファイルも開く。
vimのhelpを読んで新たに覚えた便利なコマンド(usr10まで)
前回に引き続き、helpをみてそれまで知らなかったけれども使えそうと思ったコマンドを紹介。
qa レジスタaにマクロとして操作を保存。 実行は@a レジスタはヤンクで使われるものと同じなので、バッファの文字列をレジスタにヤンクしてマクロとして実行することも可能。 “ayyみたいに。
?pattern1?+1,/pattern2/-2s/foo/bar/g 上方向(後方)にpattern1を検索し見つかった行の次の行から、下方向(前方)にpattern2を検索し2行手前(上の行)までを対象に、fooをbarにすべて置換する。
!Gsort バッファの内容をsortコマンドの結果で置き換える。 一時ファイルを用意する必要ないので便利
:read !ls コマンドの実行結果をバッファに挿入。 以下だと現在位置を書き換え :.!ls
:wirte !wc ファイルの中身をコマンドに渡す。 結果が表示されるが、その後enterを押すと表示が消える。
vimのCTRL-^が動かない
vimのヘルプの、「07.3 他のファイルにジャンプする」にあるCTRL-^が期待通りに動かない。。なんでだろ。
:argsで現在ファイルを確認して、:nextや:previousでファイルを変更してからCTRL-^を入力しても何も変わらない。
vimのテキストをhtmlに変換
何がうれしいかって、blogにコードを張るときにhtmlコードをそのままコピペできる点。
でも、出来上がるhtmlファイルはそれ単体で完結している作りなので部分的にコピペが必要で勝手はいまいち。スタイルシートはblogに事前に設定しておけば変更不要なのでそこの手間は不要。
以下のコマンドで変換できる。
:TOhtml
以下が例。
1 if exists('g:loaded_helloworld')
2 finish
3 endif
4 let g:loaded_helloworld = 1
5 command! HWorld call helloworld#hello_world()
vimのhelpを読んで新たに覚えた便利なコマンド(usr_04.txtまで)
vimを使いこなせていない自信があったのでヘルプを見て勉強し直したら便利な使い方がたくさん載っていたのでここにメモ。 とりあえずusr_04.txtの範囲まで。
- カーソル位置の単語と一致する単語を検索
g* カーソル位置の単語を含むものを検索
H 画面上部にカーソル移動
M 画面中央にカーソル移動
-L 画面下部にカーソル移動
CTRL-O、CTRL-I(Tab) 前、後の位置にジャンプ(カーソル移動)
ma、
a maでマークして、aで移動。 CTRL-O、CTRL-Iでジャンプもできる`` 一つ前の位置にジャンプする(最初はCTRL-Oと同じ挙動)
~ 大文字小文字変換 ビジュアルモードでも利用可
(ビジュアルモード)o、O 選択範囲の変更のために、カーソルを反対側に移動 始点の変更ができる。矩形選択の場合はOも使って範囲変更可能。
“* yやpと合わせてクリップボードを使用
はじめてのvim plugin作成
vimconf2018 には参加できなかったけれども、発表資料を読んだりTwitterを眺めているとやっぱり何かしたくなったのと、もっとvimを使いこなしたくなったのでpluginを書く練習を始めようと決意した。
helpを読んで書いてみようと思ったが、サンプルで既に理解できないところがあったので、Alisueさんの発表資料にあるHello Worldを真似てみるところからスタート。
ファイル名やコマンド名は多少変えたけれども、そのまんま。すごく簡単。
plugin/helloworld.vim
1 if exists('g:loaded_helloworld')
2 finish
3 endif
4 let g:loaded_helloworld = 1
5 command! HWorld call helloworld#hello_world()
autoload/helloworld.vim
1 function! helloworld#hello_world() abort
2 echo "Hello, World"
3 endfunction
kubenetes導入顛末記 その2
その1でとりあえず動作するところまで確認できたので、ここからはチュートリアルに沿ってやってみる。
https://kubernetes.io/docs/tutorials/hello-minikube/
nodeアプリケーション作成
server.jsというhello worldを作成。
node server.jsで動作確認して問題ないことを確認。
Docker Containerイメージ作成
Dockerfileを作成。
以下のコマンドで環境変数を設定。そしてビルド。
eval $(minikube docker-env)
docker build -t hello-node:v1 .
`
`Deployment作成
以下のコマンドでPodも作成されて動いているらしい。
でも、ローカルIPからしか接続できないらしい。試しにminikube sshでログインしてみたけども8080ポートで待ち受けているプロセスはなかった。。nodeコマンドは動作中だったので他のポートで待っているみたいだけど。どこで変換しているのか。。
kubectl run hello-node --image=hello-node:v1 --port=8080 --image-pull-policy=Never
Service作成
外からもアクセスできるようにServiceを作成する。
kubectl expose deployment hello-node --type=LoadBalancer
以下のコマンドで得られるURLにアクセスすると無事に表示される。どのポートで待っているのかの謎はこれで解ける。でも、ポートが8080ではないんだな。なんでだろ。
minikube service --url hello-node
アクセスログは以下で参照できた。pod-nameも補完してくれて良い感じ。
kubectl logs <POD-NAME>
アプリの更新
Docker Containerイメージを作成してDeploymentを更新。
docker build -t hello-node:v2 .
kubectl set image deployment/hello-node hello-node=hello-node:v2
これだけで新しいイメージが使われるようになった。Dashboardでも確認。
heapster addonの有効化
性能監視用のaddonらしい。以下で有効にするとdashboardのoverviewでCPUとメモリのグラフが表示されて、ほかのところにもそういった情報が追加される。
minikube addons enable heapster
Clean up
作成したものを削除する。
kubenetes導入顛末記 その1
前置き
コンテナに触れようと思い、kubenetesを導入することにしたので、その記録。
導入先はUbuntu 16.04の物理サーバ1台です。
導入方法の決定
kubenetesの導入方法はいろいろあるようですが、とりあえず動かしたいならminikubeがおすすめと記載があるのでそれに従う。
選び方はこちら。
選んだのは、Running Kubernetes Locally via Minikube。
Kubenetes導入の前にHypervisor導入
手順を見ていくと最初にHypervisorを入れろとある。ただ、VM上に構築しないという手もあるらしい。
記載順などからVirtual Boxが良さそうなのでVirtualBoxを採用。
ということで、まずはVirtualBoxの導入。以下のURLに従ってaptのsourceを指定してインストール。
https://www.virtualbox.org/wiki/Linux_Downloads
minikube導入の前にkubectl導入
以下の通り、こちらもaptのsourceを設定してinstall。
https://kubernetes.io/docs/tasks/tools/install-kubectl/
ちなみにこの状態で kubectl cluster-infoを実行すると以下の通り。
$ kubectl cluster-info
Kubernetes master is running at http://localhost:8080
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
The connection to the server localhost:8080 was refused - did you specify the right host or port?
kubectlのautocompletion設定
ここも前述のガイドにならって設定する。
echo "source <(kubectl completion bash)" >> ~/.bashrc
minikubeの導入
ここでようやくminikubeの導入。
vim + ALEの組み合わせが便利
最近、lintツールとしてw0rp/aleというものを使っているのですが良い感じ。
rubocopを使っていると、UTF-8の日本語がコードポイントに置き換わったことがあったのだけど、なんでだろうか。。
Windowsマシンでの開発環境構築
一体どこで開発したら良いのか、自分でいつも迷うのでここにメモ。
- Cygwin + GVim(Windows Native)
- WSL
- Ubuntu on Vagrant(via ssh)
- Uubntu on Bare Metal(via ssh)
リポジトリはどこにあるのかというと、上記のすべてに散らかっている感じ。
これを整理せねば。