Emacsを超便利にする「Helm」のパッケージインストール方法

  • このエントリーをはてなブックマークに追加
  • Pocket

こんにちは。タクマ™ [@suwaru_blog] です。

Emacs のパッケージの使い方がなにひとつ分からない…

当時 Emacs レベル 1 の僕はネットで調べながらそう思いました。
ググってもアカデミックな記事が多くてなにがなんだか…って感じでしたね。

今回、初心者向けに「パッケージインストールの方法」について解説します!
※ Emacs の使い勝手をよくする Helm というパッケージインストールを実践します

パッケージインストールつまづきポイント

ただでさえ Emacs の入力方法に慣れておらず、手探り状態。
そんな僕がパッケージインストールで分からなかったことは 2 つ。

  1. まともに動く init.el のリポジトリ設定が分からない
  2. M-x package-list-packages の使い方がよく分からない

このあたりを重点的に説明しようと思います。

パッケージインストールの前準備 (リポジトリ設定)

「①まともに動く init.el のリポジトリ設定が分からない」を解決します。

パッケージを使うためには ~/.emacs.d/init.el に適切なリポジトリ設定が必要です。
ファイル冒頭に下記を追加してください。

(require 'package)
 
;; HTTP
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t)
(add-to-list 'package-archives '("melpa-stable" . "http://stable.melpa.org/packages/") t)
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t)
(add-to-list 'package-archives '("ELPA" . "http://tromey.com/elpa/") t)
 
(package-initialize)

~/.emacs.d/init.el の詳しい解説は以下の記事を参考にしてください。

たまに init.el のリポジトリ設定で https://リポジトリ名 となっているものがあります。
セキュアな通信方法ですが、環境設定によってはうまく動きません。
http://リポジトリ名 にする方がトラブルが少ないので、僕はこのように設定しています。

Helm をパッケージインストール 〜 たった 4 STEP 〜

「②M-x package-list-packages の使い方がよく分からない」を解決します。

以下がパッケージインストールの流れです。順に解説していきます。

  1. M-x package-refresh-contents
  2. M-x package-list-packages
  3. パッケージ名を検索してインストールする
  4. init.elに設定を書く

1. M-x package-refresh-contents

これやらないと、最初はほとんどパッケージが表示されません!
まず最新のパッケージ情報をとってきましょう。

  • M-x を押して package-refresh-contents と入力
  • もし 443 エラーが出たら…
    • init.el のリポジトリ URL が https:// になっていないか確認
    • http:// なのにエラーが出るなら、そのリポジトリ行は削除するかコメントアウト

443 エラーについて

以下のようなメッセージが出たら 443 エラーです。(下手するとフリーズ)
フリーズしたら Terminal を再起動してください…
443 エラーメッセージは複数パターンあるが「443」と書いているので分かりやすい
リポジトリの URL に問題がなくても一時的にこのようなエラーが出る場合があります。
そのときはその行をコメントアウトすれば OK です。
動かないリポジトリをコメントアウトする例

2. M-x package-list-packages

インストールできるパッケージを一覧表示しましょう。

  • M-x を押したあとに package-list-packages と入力
  •  先ほどの M-x package-refresh-contents ができていないと Helm もないと思います
最新のパッケージリストが取得できている

3. パッケージ名を検索してインストールする

パッケージの探し方・インストール方法を説明します。

  • C-s を押して helm と入力。その後 C-s を何度か押して helm パッケージを見つける
  • helm パッケージ名の上にカーソルを動かして Enter キー
    • リポジトリを複数登録していると、複数の helm が表示されます
    • 好みのバージョンを選んで大丈夫です
  • helm のインストール画面が表示されるので [Install] の上にカーソルを動かして Enter キー
    • yes (設定によっては y ) と入力するとインストール開始
文字列検索で helm を発見する
僕は見た目がバグって [Install] ボタンが 2 つ表示されますが、下の [Install] で Enter を押します

4. init.el に設定を書く

インストールしたパッケージを利用するには設定を書かないといけません。

  • ~/.emacs.d/init.el を開いて helm の設定を追加してください
~/.emacs.d/init.el
;;
;; helm
;;

(require 'helm)
(require 'helm-config)

(global-set-key (kbd "C-c h") 'helm-command-prefix)
(global-unset-key (kbd "C-x c"))

(define-key helm-map (kbd "") 'helm-execute-persistent-action) ;; 
(define-key helm-map (kbd "C-i") 'helm-execute-persistent-action)
(define-key helm-map (kbd "C-z")  'helm-select-action)

(when (executable-find "curl")
  (setq helm-google-suggest-use-curl-p t))

(setq helm-split-window-in-side-p           t
      helm-move-to-line-cycle-in-source     t
      helm-ff-search-library-in-sexp        t
      helm-scroll-amount                    8
      helm-ff-file-name-history-use-recentf t
      helm-echo-input-in-header-line t)

(defun spacemacs//helm-hide-minibuffer-maybe ()
  "Hide minibuffer in Helm session if we use the header line as input field."
  (when (with-helm-buffer helm-echo-input-in-header-line)
    (let ((ov (make-overlay (point-min) (point-max) nil nil t)))
      (overlay-put ov 'window (selected-window))
      (overlay-put ov 'face
                   (let ((bg-color (face-background 'default nil)))
                     `(:background ,bg-color :foreground ,bg-color)))
      (setq-local cursor-type nil))))


(add-hook 'helm-minibuffer-set-up-hook
          'spacemacs//helm-hide-minibuffer-maybe)

(setq helm-autoresize-max-height 0)
(setq helm-autoresize-min-height 20)
(helm-autoresize-mode 1)

(helm-mode 1)

;; helm: helm-M-x 有効
(global-set-key (kbd "M-x") 'helm-M-x)

;; helm: あいまい検索有効
(setq helm-M-x-fuzzy-match t)

;; helm: persistent action リバインド
(define-key helm-map (kbd "") 'helm-execute-persistent-action) ;; 

;; helm: make TAB works in terminal リバインド
(define-key helm-map (kbd "C-i") 'helm-execute-persistent-action)

;; helm: list actions リバインド
(define-key helm-map (kbd "C-z")  'helm-select-action)

;; helm: バッファのサイズを候補の数に応じて自動的にリサイズ
(helm-autoresize-mode t)

;; helm: キルリングの表示
(global-set-key (kbd "M-y") 'helm-show-kill-ring)

;; helm: いろいろなソースを包括的に扱えるようにする
(global-set-key (kbd "C-x b") 'helm-mini)
(setq helm-buffers-fuzzy-matching t
      helm-recentf-fuzzy-match    t)

;; helm: ファイル あいまい検索
(global-set-key (kbd "C-x C-f") 'helm-find-files)

;; helm: Semantic と Imenuのあいまい検索
(setq helm-semantic-fuzzy-match t
      helm-imenu-fuzzy-match    t)

;; helm: マニュアルページに素早く飛ぶ。ミニバッファにpatternを入力可能、カーソルの指すシンボルをそのまま検索可能
(add-to-list 'helm-sources-using-default-as-input 'helm-source-man-pages)

;; helm: helm-locate あいまい検索
(setq helm-locate-fuzzy-match t)

;; helm: helm-occur のリバインド
(global-set-key (kbd "C-c h o") 'helm-occur)

;; helm: apropos あいまい検索
(setq helm-apropos-fuzzy-match t)

;; helm: Emacs Lisp の関数あいまい検索
(setq helm-lisp-fuzzy-completion t)

;; helm: helm-all-mark-rings リバインド
;; (global-set-key (kbd "C-h SPC") 'helm-all-mark-rings)

;; helm: Web 検索を有効
 (setq helm-surfraw-default-browser-function 'browse-url-generic
       browse-url-generic-program "google-chrome")

;; helm: Google 検索のサジェスト有効
(global-set-key (kbd "C-c h g") 'helm-google-suggest)

(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )

これで Helm が使える状態になりました!

パッケージインストールの流れは理解できましたか?
繰り返しになりますが、手順は 4 STEP です。

  1. M-x package-refresh-contents
  2. M-x package-list-packages
  3. パッケージ名を検索してインストールする
  4. init.elに設定を書く

慣れるとそんなに複雑ではないと思います。
便利なパッケージをどんどん入れて、快適な Emacs ライフを送ってください!

え?Helm の使い方は説明しないの?

僕自身、Helm についてあまり調べたことはありません。
普段どおり Emacs を使ってみるだけで Helm の利便性を感じられると思います。

たとえば C-x C-fM-x でファイル名やコマンド検索をしてみましょう。
上下移動で選択できるようになったり、名前の部分一致でも検索できるようになります。

詳しい M-x package-list-packages の使い方

今回は話を簡単にするため、シンプルなパッケージインストール方法を紹介しました。
パッケージリストの機能はもうすこし奥が深く、たとえば「フラグ」という機能があります。

複数のパッケージをインストールしたい場合、
対象パッケージに「インストールフラグ」を立てておくことができます。
そして、あとでフラグ実行という形でまとめてインストールできます。

フラグをつかったインストール方法についても解説しています。
興味があれば以下の記事をご覧ください。

関連記事

Emacs ロードマップ

Emacs 操作方法

お仕事ください!

僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。
なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。

コメント

コメントを残す

*