ritarock’s blog

プログラミングとか映画とか趣味とか

vimをちゃんとやる2

:tabedit {filename}

{filename}のタブを作る

<C-w>T

アクティブなウィンドウを独立したタブに移動する

:tabc[lose]

アクティブなタブを閉じる

@:

直前のコマンドライン入力を繰り返す

タブの移動

覚え方は「"g"oto "t"ab」

  • {N}gt
  • gt
  • gT

以下の通り

  • {N}番目のタブに移動
  • 次のタブに移動
  • 前のタブに移動

vimをちゃんとやる1

;

fコマンドで実行した直前の検索を繰り返す

1文字ずつ置換する

  1. 置換対象の文字の上で *
  2. cw"文字入力"< ESC >
  3. n
  4. .

やってることは以下の通り

  1. 置換対象文字のハイライト
  2. 1文字置換
  3. 次の文字へ移動
  4. 変更を繰り返す

daw

覚え方は「delete a word 」
カーソルのある単語を削除

インサートモードで <C-w>

直前の単語まで削除

インサートモードで <C-u>

行頭まで削除

gv

直前のビジュアル選択範囲を再度選択

ビュジュアルモードで o

端点に移動

表のカラムの下の行に線を入れる

  1. 項目(先頭)行でyyp
  2. Vr-

やってることは以下の通り

  1. 項目(先頭)行の末尾までコピーして下の行に貼り付け
  2. 1で貼り付けた行末まで"-"に置換

選択した行末に ; を追加

  1. <C-v>でビジュアルブロックにする行を選択
  2. $
  3. A;
  4. < ESC >

やってることは以下の通り

  1. <C-v>でビジュアルブロックにする行を選択
  2. ビジュアルブロックにされた行の行末までビジュアルブロックにする
  3. 末尾に ; を挿入
  4. < ESC >

選択した行末に ; を追加②

範囲が広い時はこっちの方がよい(今の行から最後まで等) ノーマルモードでのコマンドを実行する :normarl を使う

  1. A; < ESC >
  2. jVG
  3. :'<,'>normal .

やってることは以下の通り

  1. カーソルのある行末に ; を追加
  2. 下の行に移動して、最後の行まで行選択
  3. 選択されている行に対して . コマンド(行末に ; を挿入)を繰り返す

<C-r><C-w>

* で単語をハイライト表示したとき、<C-r><C-w>でハイライトした単語をコマンドに入力できる

ansibleでmacbookを管理

はじめに

先日、macbookが起動しなくなり仕方なくクリーンインストールしたので、今後のことも考えてmacbookの環境を管理する

環境

brew と brew caskは導入済み
$ brew install ansible
上記、コマンドを実行済み
$ ansible --version
ansible 2.5.0

今回用意した2つのファイル

hosts

localhost

localhost.yml

---
  - hosts: localhost
    connection: local
    gather_facts: no
    become: no

    vars:
      homebrew_packages:
        - name: python
        - name: fish
        - name: git
        - name: node
        - name: pyenv
        - name: tree
        - name: vim

      homebrew_cask_packages:
        - name: google-chrome
        - name: google-drive
        - name: virtualbox
        - name: vagrant
        - name: iTerm2
        - name: atom
        - name: docker
        - name: evernote
        - name: dropbox
        - name: slack

    tasks:
        - name: update homebrew
          homebrew: update_homebrew=yes

        # brew
        - name: install homebrew_packages
          homebrew:
            name={{ item.name }}
          with_items: '{{ homebrew_packages }}'

        # homebrew_cask
        - name: install homebrew_cask_packages
          homebrew_cask:
            name={{ item.name }}
          with_items: '{{ homebrew_cask_packages }}'
$ ansible-playbook -i hosts localhostsyml

これで、homebrew_packagesとhomebrew_cask_packagesに記述したソフトウェアをインストールできる

ソース

Dockerのインストールからコンテナ作成まで

開発環境

ubuntu/trusty64

Dockerのインストール

$ sudo apt-get update
$ sudo apt-get -y install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository -y  \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
$ sudo apt-get update
$ sudo apt-get install -y docker-ce

Dockerコマンド

ローカルに保存されたdockerイメージの一覧を取得

$docker images

docker hubにあるイメージを検索

$docker search <イメージ>

docker hubにあるイメージをローカルに取得する

$docker pull <イメージ>

コンテナでプロセスを起動する

$docker run -it <イメージ> /bin/bash

起動したコンテナはexitすれば自動的に終了

プロセスを確認する(停止されたものも含む)

$ docker ps -a

停止されたコンテナの削除

$ docker rm <コンテナid>

idは一意なので頭の4桁程度入力すればOK

何度もコンテナの起動と停止を行なっていると大量にプロセスが生まれるのでそれを避けたい

コンテナを全て削除

$ docker rm $(docker ps -aq)

exitと同時にコンテナの削除

$docker run --rm -it <イメージ> /bin/bash

ポートをホスト側に公開して起動

$ docker run -it -p 80:80 <イメージ> /bin/bash

外部ファイルを取り込む

$ docker run -it -v <ホスト側のパス>:<コンテナ側のパス> <イメージ> /bin/bash

Dockerfile作成してからの流れ

Dockerfileからイメージを作成

$ docker build -t <作成するイメージ名> .

作成したイメージからコンテナを起動

$ docker run --name <起動するコンテナ名> -d -p <イメージ名>

コンテナの停止

$ docker stop <コンテナ名>

hexoとやらを試してみた

hexo

hexo.io

githubのアカウントあれば誰でもブログを公開できる

まずはリポジトリ作成

[username].github.io というリポジトリを作成

hexoの準備

公式通りに hexoをグローバルにインストール

$ npm install hexo-cli -g

以下のコマンドでディレクトリを作成

$ hexo init blog

作成されたディレクトリに移動して、モジュールをインストール

$ cd blog
$ npm install

インストールできたら、以下のコマンドで起動

$ hexo server

http://localhost:4000/にアクセスすると雛形ができている

githubで公開

作成されたディレクトリ配下にあるconfig.ymlを弄る config.ymlではサイトのタイトル等を変更可能

deploy:
  type: git
  repo: https://github.com/[username]/[username].github.io.git
  branch: master

編集したら、以下のコマンドでデプロイ

hexo deploy -g

エラーがでた
どうやら、hexo-deployer-gitというモジュールをインストールしないといけないよう
ってことでインストール

$ npm install hexo-deployer-git --save

改めてデプロイ

$ hexo deploy -g

https:[username].github.io/にアクセスすると先程http://localhost:4000/でみたページにアクセス可能

※反映にそれなりに時間が掛かる

テーマの導入

hexo.io

こちらのサイトから気に入ったプラグインclone

例えば、これなら github.com READMEにあるようにコマンドを実行

$ git clone https://github.com/mkkhedawat/clexy themes/clexy
$ git clone https://github.com/mkkhedawat/clexy themes/clexy
$ yarn remove hexo-renderer-ejs
$ yarn add hexo-renderer-jade
$ yarn add hexo-prism-plugin

_config.ymlを編集

prism_plugin:
  mode: 'preprocess'    # realtime/preprocess
  theme: 'default'
  line_number: false    # default false
theme: clexy

デプロイ

hexo deploy -g

記事の投稿

以下のコマンドを実行

$ hexo new post 新規ページ

source/post/新規ページ.mdが作成されているので弄ってpushすれば記事が投稿できる

ところで、hexoってなんて読むんだろう・・・?