かゆいとこログ

あと少しなのに届かないかゆいところに効きます

spacemacs

Keys

  • C-o : ミスってどこかへ飛んでいってしまった場合,前回の選択位置に戻る

  • g-c, g-C: リージョン選択時のコメントのトグル

  • g c c : カーソル行のコメントトグル
  • SPC e v : syntax checkerの確認
  • SPC x l d : duplicate lines
  • [ SPC, ] SPC : visual mode のまま前後に行を挿入
  • dab, dib : カッコ内の文字列を削除,カッコごと削除
  • di", di': シングルクオート(')もしくはダブルクオート(")の中の文字列を削除

Python layer

以下に重要なコマンド書いてある.

spacemacs/layers/+lang/python at master · syl20bnr/spacemacs · GitHub

置換について

  • :.,$s/hoge/fuga/g : 現在行以降を置換

現在のディレクトリで検索

  • helm-ag

インデント

  • = = : カーソル行のインデント自動調整
  • shift->, shift-< : 選択範囲のインデント手動調整

TODO

powerlineについて

powerlineの設定一覧 - spacemacs/DOCUMENTATION.org at develop · syl20bnr/spacemacs · GitHub

all-the-iconsとかいうものがあるらしい - GitHub - domtronn/spaceline-all-the-icons.el: A Spaceline Mode Line theme using All The Icons for Emacs

続・音速でGitHub Pagesを設定する(MacOS)

こちらの記事の続きです.

GitHubにデプロイする

まずは,GitHubリポジトリを作る.

  • リポジトリの名前はユーザ名.github.ioとすること.
  • README.mdなどは要らないのでチェック外しておく

リポジトリを作ったら,gitのリンク(git@github.com:ユーザ名/ユーザ名.github.io.git) をコピー.

サイトのディレクトリへ移動し,gitの管理下に置く

$ cd jekyll-blog
$ git init
$ git add .
$ git commit -m "Initial Commit"

git remotegithub pagesのリポジトリを追加し,push

$ git remote add origin git@github.com:ユーザ名/ユーザ名.github.io.git
$ git push -u origin master

完了!!

自分のページ(https://ユーザ名.github.io/)を見てみよう. サイトが表示されるはず.

参考

https://jekyllrb.com/docs/

音速でGitHub Pagesを設定する(MacOS)

以下を順番にやればGitHub Pagesの公開ができます.

rubyの環境構築

まずはbrewrubyrbenvをインストール

$ brew install ruby
$ brew install rbenv

rbenvを初期化 & 正しくインストールされたかチェック

$ rbenv init
$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
Checking for `rbenv' in PATH: /usr/local/bin/rbenv
Checking for rbenv shims in PATH: OK
Checking `rbenv install' support: /usr/local/bin/rbenv-install (ruby-build 20180618)
Counting installed Ruby versions: 2 versions
Checking RubyGems settings: OK
Auditing installed plugins: OK

バージョンを指定(ここでは2.5.1)してインストール

$ rbenv install 2.5.1
$ rbenv global 2.5.1

Jekyllの設定とサイト作成

gemでjekyllをインストール

$ gem install bundler jekyll

jekyll-blogという名前のサイトを作成

$ jekyll new jekyll-blog

サイトのディレクトリへ移動してビルド

$ cd jekyll-blog
$ jekyll build

(自分の環境では,minimaに関するエラーが出た. その場合はgem install minimaで解決.)

これで静的サイトが_siteディレクトリ以下に生成される.

$ jekyll serve

すると,http://localhost:4000からサイトが見られるようになる.

続編

ソース

Welcome | Jekyll • Simple, blog-aware, static sites

Dockerfileについて

エラーを無視する

コマンドsomethingが失敗する場合,

RUN something; exit 0

とすると無視できる. (参考: docker - Dockerfile build - possible to ignore error? - Stack Overflow )

ENTRYPOINT, CMD, RUNの違い?

RUN

新しいレイヤーでコマンドを実行し,新しいイメージを作る. ソフトウェアをインストールするのによく用いられる.

CMD

"デフォルト"のコマンドやパラメータを設定する. コマンドラインからdocker runする際に上書きできる.

ENTRYPOINT

CMDと似ているけど,コマンドラインから上書きできない.

(参考: Docker RUN vs CMD vs ENTRYPOINT)

Docker上での作業を快適にする設定

lsをカラフルにする

/root/.bashrcに以下を追記する

export LS_OPTIONS='--color=auto'
alias ls='ls $LS_OPTIONS'

docker内の行数とターミナルの行数が合ってないとき

docker run -it -e COLUMNS=$COLUMNS -e LINES=$LINES -e TERM=$TERM -it /bin/bash

でいける (参考: https://github.com/moby/moby/issues/25450 )

Ctrl-Pを2度押ししたくないとき

以下を~/.docker/config.jsonに追記

{
    "detachKeys": "ctrl-w,q"
}

spacemacsで行番号を表示

基本の設定

.spacemacsにおいて,dotspacemacs-line-numbersが書かれている部分を検索し,値をnilからtに変える.

dotspacemacs-line-numbers t

行番号とコードとの間にスペースが欲しい場合

.spacemacsuser-config部分に以下を記述する.

(unless (display-graphic-p)
  (setq linum-format "%3s "))

;; Alternatively
(unless (display-graphic-p)
  (setq linum-format (concat linum-format " ")))

参考:

Line Number layout too close when using spacemacs in iTerm(and OSX terminal) · Issue #5609 · syl20bnr/spacemacs · GitHub

gitによる変更履歴の確認関連

特定ファイルの変更履歴を見る

git log -p /path/to/file

特定ディレクトリの変更履歴も同様に行ける

Gitで特定ファイルの変更履歴をみる - Bye Bye Moore

man git-log してみると,full-diff optionの説明があり,そこにpオプションの動作についての記述が出てくる.

--full-diff
           Without this flag, git log -p <path>...  shows commits that touch the specified paths, and diffs about the same specified paths. With this, the full diff is shown for commits that touch
           the specified paths; this means that "<path>..." limits only commits, and doesn’t limit diff for those commits.

--full-diffを付けない場合は特定のファイル(ディレクトリでも良いのでパスと呼んでる)にtouchしたコミットとそのファイルに関するdiffを表示し, 付ける場合はファイルにtouchしたコミットと,そのコミットに関するdiffを表示する.

つまり,後者の場合は指定したファイル以外に関するdiffも表示される(指定されたファイルが含まれるcommitにある,他のファイルに関するdiffも表示される)

細かすぎるなこれは・・・ ここまで調べる必要無かったかもだが,深追いするクセでまたやってしまった.