こんにちは。iQeda [@iQeeeda] です。
当時 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 "<tab>") 'helm-execute-persistent-action) ;; </tab>
(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 "<tab>") 'helm-execute-persistent-action) ;; </tab>
;; 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」の最新記事
コメント