Emacs

ある文字で始まっている行を一度に複数削除する方法:Emacs

バッファ(ファイル)の先頭にカーソルを移動し

M-x delete-matching-lines

でミニバッファーに正規表現入力を求められるので、下記のように入力してエンターすると消すことが出来る。

^あ

(「あ」は消したい文字)

^は正規表現で文章の先頭を示すので、その正規表現が一致する行が全て削除されます。

同様にdelete-non-matching-linesで一致しないものを消すことも出来る。

正規表現を工夫すれば、種々のパターンで応用できる。

Debianにemacs-26.1-rc1をInstallする

私の場合は、ThinkpadのWindows10にVirtualBoxをInstallし、Vbox上でEmacs on Debianを動かしています。 もう一台メインマシンのmacbookにもEmacsを導入し、設定ファイルはDropboxで共用しています。

最近Macの方をemacs26.1にアップデートしたら、なぜかDebianのEmacs25.3で一部の設定ファイルが読み込みエラーになり起動しません。 やむなく、まだ安定版ではないけれどDebianのほうにもemacs26.1をインストールすることにしました。

Installの手順

  • apt-getでのパッケージインストールはまだ出来ないのでソースをダウンロードしてビルドします。
  • ソースがすぐに見つからず探すのに苦労したがようやく下記にありました。
$ wget https://alpha.gnu.org/gnu/emacs/pretest/emacs-26.1-rc1.tar.xz
$ unar emacs-26.1-rc1.tar.xz
$ cd emacs-26.1
$ ./configure --with-x-toolkit=gtk3 --with-sound=no --with-x
$ make
$ sudo make install
$ sudo reboot 
$ emacs --version
$ GNU Emacs 26.1
  • 今回 configure での --with-xwidgets オプションがエラーになりましたので諦めました。
  • emacs26.1のインストールによって設定ファイル読み込みエラーは出なくなりました。原因は不明です。

hydraをミニメニューとして使う

hydraは、関連するコマンドを複数定義して、 それらのコマンドを連続して簡単に呼び出せるようにするツールです。基本的にはsmartrepの機能と同じですが、パラメーターによっていろいろ応用できるようなので試してみました。メニュー内容をエコーエリアに表示させることもできるのでGUIとしても優れています。

easy-hugoでマルチブログライフを愉しむ

easy-hugo の作者 masasam さんが、我儘な私のリクエストに応えて数々のアップデートをしてくださいましたので、感謝の気持ちをこめて紹介させていただきます。 easy-hugo は、package-install できますが、頻繁に更新されているので、作者のページ で最新情報をチェックされるといいです。

Emacsのスタート画面をイケメンにする

100分の1秒でもemacsの起動を早くしようと試行錯誤している一方、起動のたびに真黒なScratch画面と向きあっていると気分も暗くなってくる。せめて初期画面くらいは、ホットするようなものにしたい…ということで、dashbord.elを導入してみた。

DebianにEmacs25.3をInstallする

私の場合は、ThinkpadのWindows10にVirtualBoxをInstallし、Vbox上でDebianを動かしています。

Installの手順

  • apt-getでインストールできるのは、Emacs25.1までなので、dawnloadしたsourceを直接コンパイルしてインストールします。
  • 幸い、もともとEmacs25.2がInstallしたあったので、すんなり成功しました。
$ wget http://public.p-knowledge.co.jp/gnu-mirror/emacs/emacs-25.3.tar.xz 
$ unar emacs-25.3.tar.xz
$ cd emacs-25.3
$ ./configure --with-x-toolkit=gtk3 --with-sound=no --with-x --with-xwidgets
$ make
$ sudo make install
$ sudo reboot 
$ emacs --version
$ GNU Emacs 25.3.1
  • emacs25.2はインストールしたままで上書きしましたが、まったく問題ありませんでした。

xwidgetsが動いた(^o^)v

  • Emacs25で採用されたxwidgetsですが、Mac環境では動きませんでした。
  • Linuxでは動くとの情報だったので試しました。

open-junk-file+howmでサンプルコードテスト環境を構築

ぼくはプログラマーではないけど、作業の自動化などを図るためにときどきパッチワークコードを試すことがある。 この目的のために多くの人は、open-junk-file.elを使っているみたいなので素直に見習う。

サンプルコードの場合、うまく動くことが確認できたらあとは使い捨てになるので保存場所にはさほど神経質にならなくても良いが、あとからの検索を用意にするためにぼくの場合は、howmフォルダーに置いている。検索は、helm-agでもいいのだけどhowmの一覧機能や検索機能がとても使いやすく優れているからだ。

open-junk-file.el

メモのファイル名は、[timestamp.拡張子]という使い方が多いみたいだけど、ちょっと判りにくいので、ぼくの場合は、20170717.hoghoge.plという感じにしてる。

;;--------------------------------------------------------------------------------
;; open-junk-file.el                                      last updated: 2017/07/17
;;--------------------------------------------------------------------------------
(use-package open-junk-file
  :bind ("C-c j" . open-junk-file)
  :config (setq open-junk-file-format "~/Dropbox/howm/junk/%Y/%Y%m%d."))

;; Automatically insert tags according to extension
(defvar open-junk-ext-tags-alist
  '(("el" ";;" "ELISP")
    ("pl" "#" "PERL")
    ("py" "#" "PYTHON")
    ("rb" "#" "RUBY")))
(defadvice open-junk-file
  (after open-junk-file-insert-howm-comment-advice activate)
  "After open-junk-file, insert a tag into the opened buffer
to be searched by howm."
  (let* ((ext (replace-regexp-in-string "^.*\\.\\([^\\.]+\\)$" "\\1" buffer-file-name))
         (asc (assoc ext open-junk-ext-tags-alist))
         (prefix (cadr asc))
         (tag (caddr asc)))
    (insert prefix)
    (insert " %" tag)))

quickrun.el

コードを試運転したりデバッグするときに quickrun.el を入れて併用すると最強となる。

;;-------------------------------------------------------------------------
;; 20_quicrun.el                                   last updated: 2017/07/05
;;-------------------------------------------------------------------------
(use-package quickrun
  :bind ("C-c q" . quickrun) ;; ファイルを実行する
        ("C-c c" . quickrun-compile-only))

whitespace-modeでjaspace風に表示させる設定

Emacs24以降は、内包されたWhitespaceで全角スペースなどを明示的に表示できることは知っていたけれど、長い間使い馴染んだjaspaceのそれと同じような表示にするための設定がわからず挫折していた。

今回、emacs設定ファイルを全体的に見直すことになり、Tipsをググっていて表題のものを見つけたので試してみた。

(use-package whitespace
  :diminish global-whitespace-mode
  :config
  (setq whitespace-style
    '(face
      tabs spaces newline space-mark tab-mark newline-mark))
  (let ((dark (eq 'dark (frame-parameter nil 'background-mode))))
    (set-face-attribute 'whitespace-space nil
    		:foreground (if dark "pink4" "azure3")
    		:background 'unspecified)
    (set-face-attribute 'whitespace-tab nil
    		:foreground (if dark "gray20" "gray80")
    		:background 'unspecified
    		:strike-through t)
    (set-face-attribute 'whitespace-newline nil
    		:foreground (if dark "darkcyan" "darkseagreen")))
  (setq whitespace-space-regexp "\\( +\\)")
  (setq whitespace-display-mappings
        '((space-mark   ?     [?]    [?_]) ; full-width space - square
          (newline-mark ?\n    [?\xAB ?\n])))   ; eol - right quote mark
  (setq whitespace-global-modes '(not dired-mode tar-mode))
  (global-whitespace-mode 1))