計算物理屋の研究備忘録

Linux, Cygwin, Mac, zsh, emacs等の使い方、設定などのメモ

mykieを使った便利技

mykie

一つのキーバインドに状況によって幾つかのコマンドを割りあてることができるパッケージ

github.com

MELPAからパッケージをインストールして設定は

(require 'mykie)
(setq mykie:use-major-mode-key-override t)
(mykie:initialize)

参考

mykieを使った便利技がここで紹介されていた
この二つの技がかなり使用頻度も高く便利なのでおすすめ

masakinpo.hatenablog.com

qiita.com

そのまま使わせてもらう

1行カット、コピー

通常C-wはリージョンのカットだが、リージョンを選択してない状態でC-wとすることでカーソル位置の1行を丸ごとカットできるようにする。リージョン選択時はいつも通りにリージョンのカット。
同じようにM-wで1行コピーも可能に。

(mykie:set-keys nil
  "C-w"
  :default     (kill-region (line-beginning-position)(line-end-position))
  :region      kill-region
  "M-w"
  :default     (kill-ring-save (line-beginning-position)(line-end-position))
  :region      kill-ring-save 
  )

1行 or リージョンの上下移動

リージョン選択時は選択範囲を、そうでない時はカーソル位置の1行を上下に移動させる設定。
M-P(M+shift+p)で上へ、M-N(M+shift+n)で下へ移動するキーバインド

(defun move-line-down ()
  (interactive)
  (let ((col (current-column)))
    (save-excursion
      (forward-line)
      (transpose-lines 1))
    (forward-line)
    (move-to-column col)))

(defun move-line-up ()
  (interactive)
  (let ((col (current-column)))
    (save-excursion
      (forward-line)
      (transpose-lines -1)
      )
    (forward-line -1)
    (move-to-column col)))

(defun move-region-down ()
  (interactive)
  (let ((col (current-column)))
    (kill-region (region-beginning) (region-end))
    (forward-line 1)
    (yank)
    (set-mark  (region-beginning) (region-end))
    (move-to-column col)))

(defun move-region-up ()
  (interactive)
  (let ((col (current-column)))
    (kill-region (region-beginning) (region-end))
    (forward-line -1)
    (yank)
    (set-mark (region-beginning) (region-end))
    (move-to-column col)))

(mykie:set-keys nil
  "M-P" ;; ここでキーバインドを設定 上へ移動
  :default     move-line-up
  :region      move-region-up
  "M-N" ;; ここでキーバインドを設定 下へ移動
  :default     move-line-down
  :region      move-region-down
  )

Jupyter notebook のフォントを変える

Jupyter notebookのデフォルトのフォントは等幅じゃないので、プログラムを書くのに適していない。

フォントを変更するには .jupyter/custom/custom.css(デフォルトではホームディレクトリに作成されるはず。無ければ作る。)に以下のように書き加える

.CodeMirror pre, .output pre {
  font-family: Ricty;
  font-size: 13.5pt;
}

プログラムということでおなじみのRictyに変更した

zshではなく、bashを使わざるを得ない時の設定

chshコマンドがなぜか使えないサーバー、bashで固定されているようなところでの設定。

shoptで、cdと打つのを省略できるautocdと、./*/ と打てばサブディレクトリまで含めてファイルを指定できるglobstarを有効にする

# ---------- shopt
shopt -s autocd
shopt -s globstar

ディレクトリを移動したら自動でlsする設定。 参考はここ qiita.com

.bashrc

# ---------- ディレクトリ移動したら自動でls
autols(){
  [[ $AUTOLS_DIR != $PWD ]] && ls
  AUTOLS_DIR="${PWD}"
}

export PROMPT_COMMAND="autols"

シンボリックリンクにcdで移動するときは実体のパスに移動する。cd -Pオプションを使うのでalias

alias cd='cd -P'

大文字小文字の区別をせずに補完できるようにする。
.bashrcではなく~/.inputrcに書く

set completion-ignore-case on

起動済みJupyter Notebookにターミナルからディレクトリを開く

Jupyter Notebookは起動したディレクトリから下に潜ることはできても、上に登ることはできない。
ターミナルから複数のJupyterを起動すると鬱陶しくなる。
一つJupyterを起動しておいて、ターミナルのカレントディレクトリをサクッと開きたいと思っていたのだがやり方がわからなかった。

ちょうどいい記事を見つけた

オレオレJupyter運用法 ~常にJupyter Notebookを開きつつ任意のディレクトリをターミナルから開く · Wolftail Bounds

まさにこれがやりたいことだったのでこの設定を少し変えて、.zshrcに登録しておく。

alias jn='PWDPATH=`pwd`;open "http://localhost:8888/tree${PWDPATH/#$HOME}"'

コマンドはjnにしておいた。

使い方

  1. ホームディレクトリからjupyter notebook > /dev/null 2>&1 &でjupyterを起動しっぱなしに
  2. ホームディレクトリ以下の任意のディレクトリからjn

Ubuntu 16.04 LTS に最新のLibreOffice (5.4.x) をインストール

Ubuntu 16.04 LTS にデフォルトで入っているLibreOfficeのバージョンは5.1.xとかなので、最新のバージョンをインストールする。ここでは5.4.4

LibreOfficeチームが管理しているらしいppaから入れる。

launchpad.net

$ sudo add-apt-repository ppa:libreoffice/libreoffice-5-4
$ sudo apt update
$ sudo apt upgrade

バージョン確認

$ soffice --version
LibreOffice 5.4.4.2 40m0(Build:2)

5.4.4がインストールされた

パワーポイントにおける数式の挿入のショートカットキー

Macのパワーポイントで数式を挿入する際、マウスでぽちぽちするのが面倒なのでショートカットキーを覚えておくと便利。

alt + ^

Office 2016。パワポのバージョンは15.32

Windowsの場合は

alt + ;

らしい。

ace-isearchでバッファ内検索

ace-isearchを導入して、C-s, C-rで行うデフォルトのisearchを強力にして、簡単にカーソル移動する環境を作る。

ace-isearchの詳細などは次を参考に。

qiita.com

emacs.rubikitch.com

インストール

下記をpackage機能を使ってインストールする。

  • avy
  • helm-swoop
  • ace-isearch

helm-swoopには当然helmも必要。

avyではなくace-jump-modeを使ってもいいが、同様の機能で最近はavyのほうが人気らしいのでavyにする。

設定

init.elなどに次のように書いておく

(require 'ace-isearch)
(global-ace-isearch-mode +1)

(custom-set-variables
 '(ace-isearch-function 'avy-goto-char)
 '(ace-isearch-use-jump 'printing-char))

使い方

いつものようにC-s, C-rを使うだけなのでものすごく便利。

検索が1文字のときは自動的にavy-goto-charを用いてジャンプできる。
2文字から5文字のときは通常のisearch。
6文字以上になるとhelm-swoopで絞り込み検索してジャンプできる。