MSYS2でemacs生活開始


MSYS2とは

Windowsではコマンドプロンプトを使ってターミナル生活をすることができますが、Linuxに慣れてたりしてるとコマンドプロンプトのコマンドとか混乱するし、bashのコマンドのコマンドに慣れておく方が良い気がするので、MSYS2をWindowsにインストールをしましょう!
Gitなどのパッケージの管理もpacmanというパッケージ管理ツールで簡単にインストールできます。

emacsとは


emacsは最近はVSCodeやAtom、Sublime Textとか優秀なエディタが増えてきてて、こんなエディタ使い始めようって人は少ないとは思います。1970年ぐらいから使われている比較的歴史のあるエディタですが、悪く言えば古臭いというのだろうか。私は大学時代にFortranをemacsを使って書いていた経験があるので、emacsのキーバインドが大好きになっている。VSCOdeで何とかemacsのキーバインドが使えないか?とかを探ってみたりして、拡張機能を入れたりするのだが、何かイマイチな印象。そこで、emacsにもっとどっぷりのめり込んで行こうと決心したのです。Rubyの父である「まつもと ひろゆき さん」が使用していたり、Silicon Valley(海外ドラマ)の主人公リチャードが使っていたり、知っている人は知っているかもしれない。

写真にある通り、emacsとVimはエディタ戦争が行われるぐらいの間柄。最近はVimの方が勢いが強いのではと個人的には感じている。

MSYS2のインストール

下記のサイトを参考にmsys2をインストールしよう。

参考サイト
「MSYS2で快適なターミナル生活」
https://qiita.com/Ted-HM/items/4f2feb9fdacb6c72083c

msys2-i686-20190524.exeを下記サイトから入手。
http://www.msys2.org/
インストーラーを起動し、インストールを完了すると通常ならCドライブ直下にインストールされます。

.minttyrcファイルをCドライブ直下に作成し、下記のように記入する。
参考サイトだと透過度をglassにしているのだが、黒背景じゃないと文字が見えなかったり非常に困ることが多かったので透過度は20に設定しています。

BoldAsFont=no
Font=Ricty Diminished
FontHeight=11

Columns=115
Rows=58
CursorType=block
Scrollbar=none
Transparency=20
BackgroundColour=0,0,0
ForegroundColour=243,243,243

Locale=ja_JP
Charset=UTF-8
Term=xterm-256color

CopyOnSelect=yes
RightClickAction=paste
BackspaceSendsBS=yes

IMECursorColour=255,0,0

上記の設定のままmingw32.exeを起動するとフォントがインストールされていないというエラーが表示される。
Rictyのフォントを下記のサイトからダウンロードしよう。
https://www.rs.tus.ac.jp/yyusa/ricty_diminished.html
ダウンロードしてきたファイルを解凍し、下図のように選択状態にして右クリックでインストールができる。

コントロール パネル>デスクトップのカスタマイズ>フォント
を確認し、使用できるフォントを調べる。

mingw32.exeを起動し、下記のコマンドでパッケージを更新する。

pacman -Su

※エラーが生じる場合は下記を実行する。
http://nekoyukimmm.hatenablog.com/entry/2016/07/12/114759

32bit環境だけしか使わないので、64bit環境はコメントアウトしよう。
/etc/pacman.confというファイルを開き、下記をコメントアウトすればよい。
ついでに#Colorという行をアンコメントしておくとpacmanのメッセージがカラー表示となる。

[mingw64]
#Include = /etc/pacman.d/mirrorlist.mingw64

Color

ツールチェインをインストールする

pacman -S mingw-w64-i686-toolchain

17個のパッケージがあると表示されるが、デフォルトのallで進行する。

emacsのインストール

pacman -S mingw-w64-i686-emacs

この時点でmingw32で

emacs

を実行するとemacsが開く。

emacsの設定は、ホームディレクトリ直下の.emacs.dフォルダ内のファイルで行う。
私はinit.elを編集して変更を行う。下記が最初に書くと良いinit.elかと思います。

;;; package.el
(require 'package)

;;; MELPA
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
;;; MELPA-stable
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/"))
;;; Marmalade
(add-to-list 'package-archives '("maralade" . "https://marmalade-repo.org/packages/"))
;;; Org
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/"))

(package-initialize)

;;; mozc
(require 'mozc)
(set-language-environment "Japanese")
(setq default-input-method "japanese-mozc")
(prefer-coding-system 'utf-8)

;; font
(add-to-list 'default-frame-alist '(font . "ricty-12"))

;; color theme
(load-theme 'monokai t)

;; alpha
(if window-system 
    (progn
      (set-frame-parameter nil 'alpha 95)))

;; tabサイズ
(setq default-tab-width 4)

;; メニューバーを非表示
(menu-bar-mode 0)

;; ツールバーを非表示
(tool-bar-mode 0)

;; default scroll bar消去
(scroll-bar-mode -1)

;; 現在ポイントがある関数名をモードラインに表示
(which-function-mode 1)

;; 対応する括弧をハイライト
(show-paren-mode 1)

;; リージョンのハイライト
(transient-mark-mode 1)

;; タイトルにフルパス表示
(setq frame-title-format "%f")

;;current directory 表示
(let ((ls (member 'mode-line-buffer-identification
                  mode-line-format)))
  (setcdr ls
    (cons '(:eval (concat " ("
            (abbreviate-file-name default-directory)
            ")"))
            (cdr ls))))

;; スタートアップメッセージを表示させない
(setq inhibit-startup-message 1)

;; バックアップファイルを作成させない
(setq make-backup-files nil)

;; 終了時にオートセーブファイルを削除する
(setq delete-auto-save-files t)

;; ターミナルで起動したときにメニューを表示しない
(if (eq window-system 'x)
    (menu-bar-mode 1) (menu-bar-mode 0))
(menu-bar-mode nil)

;; scratchの初期メッセージ消去
(setq initial-scratch-message "")

;; スクロールは1行ごとに
(setq mouse-wheel-scroll-amount '(1 ((shift) . 5)))

;; スクロールの加速をやめる
(setq mouse-wheel-progressive-speed nil)

;; bufferの最後でカーソルを動かそうとしても音をならなくする
(defun next-line (arg)
  (interactive "p")
  (condition-case nil
      (line-move arg)
    (end-of-buffer)))

;; メニューバーを消す
(menu-bar-mode -1)

;; エラー音をならなくする
(setq ring-bell-function 'ignore)

;; カーソルの点滅をやめる
(blink-cursor-mode 0)

;; カーソル行をハイライトする
(global-hl-line-mode t)

;; 対応する括弧を光らせる
(show-paren-mode 1)

上記をinit.elに書き込むと、下記のような見た目となる。

monokaiテーマとmozcのパッケージはemacsにインストールする必要があります。
これらのインストールはemacsを起動し、下記を実行する。
Alt+X(M-X) : package-install [Enter]
Install package : mozc [Enter]

Alt+X(M-X) : package-install [Enter]
Install package : color-theme-monokai [Enter]

emacsでは下記のようなキーバインドがデフォルトで設定されている。C-pのCはCtrlキーのこと、M-vのMはAltキーのことを指している。慣れるまで非常に大変だと思いますが、慣れると気持ちいいのです。

キー 動作内容
C-p カーソルを上に移動(previous)
C-n カーソルを下に移動(next)
C-b カーソルを左に移動(back)
C-f カーソルを右に移動(forward)
C-a カーソルを行頭に移動
C-e カーソルを行末に移動
M-v 1ページ前に移動
C-v 1ページ先に移動
M-< バッファの先頭に移動
M-> バッファの末尾に移動
C-x C-f ファイルを開く(find file)
C-x C-s バッファの内容をファイルに保存(save file)
C-x C-w バッファの内容をファイル名を指定して保存(write file)
C-x i バッファにファイルの内容を挿入(insert file)
C-x k 現在のバッファを閉じる(kill buffer)
C-x C-b バッファの一覧を表示
C-x b 表示するバッファを切り替える
C-x 2 表示するバッファを2つに分割する
C-x 1 表示するバッファを1つにする
BS カーソルの左にある文字を削除
C-d カーソル位置にある文字を削除
C-k カーソル位置から行末までを削除
C-x u 元に戻す(Undo)
C-SPC 現在のカーソル位置をマーク(mark)
C-w マークした位置から現在のカーソル位置までを切り取り
M-w マークした位置から現在のカーソル位置までをコピー
C-y 貼り付け

最近知ったWindows10の便利ショートカットキー

Win+Shift+S : スクリーンショット機能。現在のWindowにおいて任意の範囲を指定してクリップボードに保存できる。おまけです