
こんにちは。タクマ™ [@suwaru_blog] です。
当時 Emacs レベル 1 の僕はネットで調べながらそう思いました。
ググってもアカデミックな記事が多くてなにがなんだか…って感じでしたね。
※ Emacs の使い勝手をよくする Helm というパッケージインストールを実践します
パッケージインストールつまづきポイント

ただでさえ Emacs の入力方法に慣れておらず、手探り状態。
そんな僕がパッケージインストールで分からなかったことは 2 つ。
- まともに動く
init.el
のリポジトリ設定が分からない 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
の使い方がよく分からない」を解決します。
以下がパッケージインストールの流れです。順に解説していきます。
M-x package-refresh-contents
M-x package-list-packages
- パッケージ名を検索してインストールする
init.el
に設定を書く
1. M-x package-refresh-contents
これやらないと、最初はほとんどパッケージが表示されません!
まず最新のパッケージ情報をとってきましょう。
M-x
を押してpackage-refresh-contents
と入力- もし 443 エラーが出たら…
init.el
のリポジトリ URL がhttps://
になっていないか確認http://
なのにエラーが出るなら、そのリポジトリ行は削除するかコメントアウト
443 エラーについて
フリーズしたら Terminal を再起動してください…

そのときはその行をコメントアウトすれば 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
) と入力するとインストール開始


4. init.el に設定を書く
インストールしたパッケージを利用するには設定を書かないといけません。
~/.emacs.d/init.el
を開いて helm の設定を追加してください
;; ;; 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 です。
M-x package-refresh-contents
M-x package-list-packages
- パッケージ名を検索してインストールする
init.el
に設定を書く
慣れるとそんなに複雑ではないと思います。
便利なパッケージをどんどん入れて、快適な Emacs ライフを送ってください!
え?Helm の使い方は説明しないの?
僕自身、Helm についてあまり調べたことはありません。
普段どおり Emacs を使ってみるだけで Helm の利便性を感じられると思います。
C-x C-f
や M-x
でファイル名やコマンド検索をしてみましょう。上下移動で選択できるようになったり、名前の部分一致でも検索できるようになります。
詳しい M-x package-list-packages の使い方
今回は話を簡単にするため、シンプルなパッケージインストール方法を紹介しました。
パッケージリストの機能はもうすこし奥が深く、たとえば「フラグ」という機能があります。
対象パッケージに「インストールフラグ」を立てておくことができます。
そして、あとでフラグ実行という形でまとめてインストールできます。
フラグをつかったインストール方法についても解説しています。
興味があれば以下の記事をご覧ください。
関連記事
Emacs ロードマップ
Emacs 操作方法
お仕事ください!
僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。 なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。
カテゴリ「Develop」の最新記事
コメント