ラベル emacs の投稿を表示しています。 すべての投稿を表示
ラベル emacs の投稿を表示しています。 すべての投稿を表示

2016年4月29日金曜日

【Emacs】diredの履歴もrecentfに表示させる


筆者はEmacsでファイル開くときなどC-x C-fを使うよりもC-x dでdiredを経由の方が好きです。
recentf (helm-mini)にもdiredの履歴が表示されたら便利だなと思ったのでその設定をしました。



2016年4月7日木曜日

【Emacs】find-fileの小技



C-x C-fもしくはM-x find-fileでファイル選択するときの小技を紹介します。



2016年3月4日金曜日

【Emacs】flycheckでエラー、警告をソースコード中に表示する


Emacs上でシンタックスチェックするパッケージとしてはflymakeが有名ですが、より設定が簡単かつ柔軟にできるflycheckがその役割を台頭してきています。

こんな感じです。

まだflymakeも未導入の方はflycheckの方がおすすめですし、既にflymake導入済みの方もflycheckへの移行をおすすめします。

筆者がflycheckをおすすめする3つの理由



2015年4月9日木曜日

[Emacs]view-mode を駆使して横着にカーソルを移動させる

 はじめに

他人のコードとかを読むとき楽してカーソル移動させたいなと感じて、Evil mode などを使ってみたんですが vi のコマンドをあんまり知らないので不便でした。
Emacs 内蔵の view-mode を上手く利用すると hjkl キーでのカーソル移動できたりページのスクロールなども 1 キーでできたりすることを知ったので紹介します。
ちなみにここで紹介するやり方を使えば view-mode の有効化・無効化が瞬時にできるのでコードリーディングのときだけでなく編集にも役立てます。



2015年4月2日木曜日

EmacsとSkimの連携 Part.2

まえがき

以前こういった記事がありました。
Ochiailab Tips: Emacs と Skim の連携
Skim という PDF ビューアは使ったことなかったのと、導入コストに比べて作業効率の向上は微々たるものなんじゃないかと思ってずっとやっていなかったのですが、先日該当記事を書いてくれた著者のデモを見て、「これこそ風だ」と思ったので導入を決意しました。
ただ、該当記事に Xtexshop というのが出てくるのですが、僕の Mac にはそんなもの入っておらず何それという感じなので少しだけ違う方法を取ることにしました。
latexmk というコマンドを使います。



2015年3月31日火曜日

Emacsとシェルのパスを共有

.zshrcなんかで設定しているパスの変数をEmacs側でインポートしてEmacsからでも通るようにするlispがあります。
これです。
purcell/exec-path-from-shell

MELPAに登録されているので簡単にダウンロードできます。
以下のように設定しておくと好みの変数を持ってきてこれます。
;; load environment variables -------------------------------
(let ((envs '("PATH" "C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH" "TEXINPUTS" "BSTINPUTS" "BIBINPUTS")))
(exec-path-from-shell-copy-envs envs))
これで.zshrcの方だけで管理しておくことができます。
以下の記事の後半の設定とかいらなくなります。
Ochiailab Tips: LaTeXのsty, bst, bibファイルなどを単一フォルダで管理する方法

便利なので使え。

参考サイト: Emacsでの環境変数の設定に exec-path-from-shellを使うようにした - Life is very short

2015年2月25日水曜日

【YASnippet強化】 auto-complete-clangのご紹介



Emacsで関数とかforとかの補完をする定番といえばYASnippetですが,自作関数のスニペットは自分で作らないといけないのがすこし面倒です.
そこで今日は自作含めてあらゆる関数をyasnippetで入力できるようになる神プラグイン,auto-complete-clang を紹介します.


2014年4月24日木曜日

[Emacs]C-oの挙動についての考察


Hi.

デフォルトのEmacsの挙動だとC-jにnewline-and-indent、C-mにnewline、C-oにopen-lineが割り当てられてて、結構頻繁に使うコマンドだと思います。
僕はopen-lineがカーソル以降の文章を改行した後にそれらをインデントしてくれないのがずっと納得できなくて悩んでいました。
そんなときにsmart-newlineが周りで話題になってたので入れてみました。
EmcasのC-mを便利にするsmart-newline.elを公開した - ainameの日記
とても便利っぽいけど、カーソル位置によって挙動が変わるのが僕のスタイルには合いませんでした。

で、結局自分で関数を自作することにしました。
(defun open-line-next-indent ()
  "Open a line and indent the next line."
  (interactive)
  (save-excursion
  (newline)
  (indent-for-tab-command))
  )
(global-set-key "\C-o" 'open-line-next-indent)
めっちゃ簡単な関数ですけどこれが僕にとって理想のC-oの挙動だと思いました。
一度にnewline-and-indentせずに、newlineしてからindent-for-tab-commandでインデントするのがミソだと思ってます。
newline-and-indentにしたら変な挙動になるので試したらいいと思います。

そんな感じで、C-oが最終的に満足のいく挙動になって良かったと思います(笑)。
みなさんも理想のC-oの挙動に出会ってくださいね。

2014年4月6日日曜日

[Emacs] org-modeでメモ取ったりする


Emacsにはorg-modeという機能があって、簡単なメモとか取るのに便利です。
最近自分の中で設定が充実してきたのでご紹介します。

この記事はorg-modeのバージョン8以降の設定方法について書いています。
org-modeのバージョンは
M-x org-version
で調べられます。 最近のEmacsではpackage-list-packageから最新版が入れられるはずです。

作業中に瞬時にメモ取る設定

プログラムとか論文とか書いてるときに、ふと新しいアイデアとかTODOリストとか思い付いたりするでしょう?
そんなときにいちいち他のアプリに切り替えずに、Emacs上でその場で書くための設定がこちら。

(require 'org-install)
(setq org-startup-truncated nil)
(setq org-return-follows-link t)
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
;; (org-remember-insinuate)
(setq org-directory "~/Dropbox/memo/")
(setq org-default-notes-file (concat org-directory "agenda.org"))
(setq org-capture-templates
      '(("t" "Todo" entry
         (file+headline nil "Inbox")
         "** TODO %?\n   %i\n   %a\n   %t")
        ("b" "Bug" entry
         (file+headline nil "Inbox")
         "** TODO %?   :bug:\n   %i\n   %a\n   %t")
        ("i" "Idea" entry
         (file+headline nil "New Ideas")
         "** %?\n   %i\n   %a\n   %t")))

(setq org-agenda-files (list org-directory)) ;agendaを使うため
;; ショートカットキー
(global-set-key "\C-cl" 'org-store-link)
(global-set-key "\C-co" 'org-capture)
(global-set-key "\C-ca" 'org-agenda)
(global-set-key "\C-cb" 'org-iswitchb)

(add-hook 'org-mode-hook 'turn-on-font-lock)
この設定しておくと、どんな作業中でもC-c oorg-capture起動した後にtでTODO、iでアイデアとかをメモできます。
org-directoryで設定したフォルダのorg-default-notes-fileのファイルに全部保存されていきます。
これが今TODOを追加しようとしている画面で、下のバッファがorg-captureの作業バッファになります。 この状態でC-c C-c押すと保存され、C-c C-kでキャンセルになります。
今まで書いたTODOとかアイデアとかをまとめて見たいときはC-c aです。
ここまでの設定は以下の参考サイトほぼパクりです。
 org-mode 初挑戦。 - 日々、とんは語る。

org-captureのバッファは、org-modeというメジャーモードになってて、上の設定やると.orgの拡張子のファイルは全てorg-modeで起動されます。
多分初めてorg-mode触る人は意味分からないと思うし、僕も未だによく分かっていませんが、最後の節で簡単な操作方法を紹介します。

orgファイルをLaTeX経由でpdfに変換する

僕はこれをやりたくてorg-mode使い始めました。
新しいプログラム書くときとか論文書くときとか、今まで裏紙なんかに雑に仕様を書いたりアウトライン書いたりしてたんですが、org-mode使うと何か良さそうです。
まず設定です。

(setq org-latex-classes
      '(("IEEEdouble"
         "\\documentclass[11pt,twocolumn,twoside]{IEEEtran}
\\usepackage{newenum}
\\usepackage{times,amsmath,amssymb}
\\usepackage{amsthm}
\\usepackage{cite,subfigure,bm}
\\usepackage{multicol,multirow}
\\usepackage{array}
\\usepackage[dvipdfmx,hiresbb]{graphicx}
\\usepackage[dvipdfmx]{color}"
         ("\\section{%s}" . "\\section*{%s}")
         ("\\subsection{%s}" . "\\subsection*{%s}")
         ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
         ("\\paragraph{%s}" . "\\paragraph*{%s}")
         ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
        ("IEEEsingle"
         "\\documentclass[11pt,draftcls,onecolumn]{IEEEtran}
\\usepackage{newenum}
\\usepackage{times,amsmath,amssymb}
\\usepackage{amsthm}
\\usepackage{cite,subfigure,bm}
\\usepackage{multicol,multirow}
\\usepackage{array}
\\usepackage[dvipdfmx,hiresbb]{graphicx}
\\usepackage[dvipdfmx]{color}"
         ("\\section{%s}" . "\\section*{%s}")
         ("\\subsection{%s}" . "\\subsection*{%s}")
         ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
         ("\\paragraph{%s}" . "\\paragraph*{%s}")
         ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
        ("thesis"
         "
        \\documentclass{jsarticle}
        \\usepackage[dvipdfmx]{graphicx}
        \\usepackage[utf8]{inputenc}
        \\usepackage[T1]{fontenc}
        "
         ("\\chapter{%s}" . "\\chapter*{%s}")
         ("\\section{%s}" . "\\section*{%s}")
         ("\\subsection{%s}" . "\\subsection*{%s}")
         ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
         ("\\paragraph{%s}" . "\\paragraph*{%s}")
         ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
        ))

(setq org-latex-default-class "IEEEdouble")

;;; LaTeX 形式のファイル PDF に変換するためのコマンド
(setq org-latex-pdf-process
      '("platex %f"
        "bibtex %b"
        "platex %f"
        "platex %f"
        "dvipdfmx %b.dvi"))
長いですけど大半はLaTeXのヘッダ部分の設定で、ここではorg-latex-classesに3つのパターンを追加しています(インデントぐちゃってますが気にしない)。
3つのパターンにはそれぞれ"IEEEdouble"、"IEEEsingle"、"thesis"という名前が付いてて、pdfに変換するときにorgファイル内でこれらを指定することで、IEEEdoubleとかIEEEsingleのスタイルをスムーズに切り替えることができます。
具体的なorgファイルの先頭部分は以下のような感じになります。
#+TITLE: Title
#+AUTHOR: Author
#+LATEX_CLASS: IEEEsingle
#+OPTIONS: toc:nil timestamp:nil
TITLEがタイトル、AUTHORが著者、LATEX_CLASSがさっきの3つのパターンのどれかが入ります。
他に設定できるオプションは以下。
Export settings - The Org Manual

これ以降にLaTeX本文を書きますが、普通のtexファイルの形式ではなくてアスタリスク(*)の数で章とか節を分けます。
具体的なソースと出力はこんな感じです。
めんどくさいんで画像だけにしときます。
\begin{...}\end{...}などの普通のLaTeXコマンドも使えます。
orgファイルからpdfへの変換方法は次の節で説明しますが、その前に数式の扱いでちょっとだけ困ってしまったことがあったので報告しときます。

文中に数式を挿入する際に\$(ドルマーク)を使いますが、日本語の文章書いててなぜか数式に変換されずに\$がそのまま表示されました。
どうやら、数式と認識させるためには終わり(2つ目)の方の\$の後には空白か句読点を入れなければいけないらしいです。
参考サイト↓
Org-Mode の組み込み LaTeX 和訳部分 {= 宇田川浩行 {= 希哲館*月庭 {KTK}

 org-modeでの簡単な操作方法

さっきも書いたように、アスタリスク(*)が重要で、その数が増えるごとに章、節、小説と細かいランク分けになります。
以下よく使うショートカットキー。
C-c C-n,
C-c C-p,
C-c C-f,
C-c C-b
節間の移動。各々の挙動はめんどくさいから各自確かめて。
M-<ENTER>同じランクを追加。
<TAB>文章の折り畳み。
M-[→], M-[←]ランク変え。
C-c C-tTODO項目の状態変化。
C-c C-e l opdfに変換して開く。C-c C-e押した時点でその他のガイドがあるので色々試してみると良い。
あとは参考サイトなりを見て徐々に覚えていくと良さそうです。
箇条書きなんかも簡単にできます。
参考サイト:
org-mode による論文作成入門 - 勉強日記
Emacs org-modeを使ってみる: (1) インストール - 屯遁のパズルとプログラミングの日記
org-mode 8.0で変わった変数など - Qiita

通常のTeXモードかorg-modeどっちを使うべきか

僕としては、以前書いたAUCTeX+RefTeXの組み合わせの方がショートカットキーが充実しているし、さらにYASnippetも使いこなすとかなり楽にtexのソースの編集ができます。
Ochiailab Tips: AUCTex + RefTexで快適論文作成
Ochiailab Tips: 最強テンプレート補完機能: YASnippet

ただメモ書きにtexモードを使うにはちょっと大袈裟だなという感じがしてて、orgモードだとアスタリスクでアウトラインが見易いというのが利点だと思うので、大したドキュメントではないときにはorgモード使えばいいのじゃないかと思っています。
Markdownへの出力も対応しているので、GitHubに上げるReadmeファイルもこれで書くと良さそうです。

では。
many many returns of the day.........

2013年12月1日日曜日

Webページで戻るボタンを押すように過去をやりなおしたいエディタはEmacs









おはようございます。

ココアなどを飲みながらEmacsで作業してると、bufferが増えてきます。

2つか3つbufferにタブがたまると僕はストレスがたまるので、それ以上は出ないようにしていました。

でもタブから消えたファイルをもう一度編集閲覧したとき、もう一度探して開くのは面倒です。

そこで、Webブラウンジングのように戻せる方法があったので、紹介します。

historyf.elでブラウザの「戻る」ボタン的なバッファ移動を実現する


上記からhistoryf.elを設定ファイル保管庫においてください。


 (require 'historyf)
(global-set-key (kbd "M-[") 'historyf-back);;shortcut key
(global-set-key (kbd "M-]") 'historyf-forward);;上に同じ


ではー



2013年11月17日日曜日

【完全版】buffer移動の便利な方法






おはようございます

Emacsで画面分割をしてると初期設定だと移動がめんどくさいです。

便利なやーつをみつけました。

bufferの移動にはbuffer-moveがいい感じ Life is very short.


【インストール方法】


 M-x package-install buffer-move
【キーバインド】
~/.emacs.elなどに以下を記入。

 
(global-set-key (kbd "M-") 'buf-move-right)
(global-set-key (kbd "M-") 'buf-move-left)
(global-set-key (kbd "M-") 'buf-move-down)
(global-set-key (kbd "M-") 'buf-move-up)


【追記】こっちの方が便利かも。設定は以下をinit.elなどに記入するだけ。

(global-set-key (kbd "C-c ")  'windmove-left)
(global-set-key (kbd "C-c ")  'windmove-down)
(global-set-key (kbd "C-c ")    'windmove-up)
(global-set-key (kbd "C-c ") 'windmove-right)


2013年9月19日木曜日

あんずもーど


emacsで検索する時、全ヒットのうち今何番目の検索文字列にいるか、
どこから検索はじめたか、みたいなことがわからなくなる時があります。

これを解決するべく、全部で対象文字列が何個あるか、今何番目のところか、
などをモードラインに表示してくれるanzu.elが開発されました。
vim用プラグインの移植らしいですが便利なのでお役立て下さい。
(require 'anzu)
(global-anzu-mode 1)
・作者様ブログ


2013年8月1日木曜日

Emacsユーザーなら日本語入力はSKK使うっしょ!


日本語入力のソフトウェアとして有名なのはことえり、ATOK、Google日本語入力がありますが、EmacsユーザーならEmacs用に作られたSKKという日本語入力システムを使えばタイピングがもっと快適になる期待値が上がります。
SKK - Wikipedia
現在はMacのシステム全体で使う場合はAquaSKKというものがあり、Cocoa Emacs上で動くものにDDSKKがあります。

大衆向けの日本語入力システムとの大きな違いは
  • ひらがなの確定にエンターキー押さなくていい
  • 漢字と送りがなの境界を変換時ではなく入力時に決められる
  • Emacs風のショートカットキー
などが挙げられます。
具体的な使い方は後ほど説明します。

 インストール方法

AquaSKKは以下のサイトから最新版をダウンロードしましょう。
ダウンロード - AquaSKK - SourceForge.JP
インストーラ通りに進めればできます。

Emacs上のDDSKKは少し手間がかかります。
といってもほとんど以下の記事の通りにやればうまくいきます。
DDSKK 14.1 がリリースされたので、早速 .emacs.d へインストールしよう。 - 日々、とんは語る。
ただし、 DDSKKは既に15.1が出ていますしソースが置いてある場所も変わってるみたいです。
Apelは以下にあります。
Index of /elisp/dist/apel
DDSKKは以下にあります。
Index of /skk/maintrunk
なのでcurlの部分はこれらのURLにするか直ダウンロードしてください。

ここで追記

コメントでいただいたのですが、DDSKK14.2からはApelがいらないみたいです。
公式にも載ってました。

設定

以下のサイトの通りにやると幸せになれます。
Mac OSXにおける幸せなSKK環境を作る手順ひと通り - tagomorisのメモ置き場

僕はこれくらいしかまだ設定していません。

使い方

AquaSKK プロジェクト::インストールと初期設定にあるようにまずは動作確認をしましょう。
キーはC-jでひらがな入力方式になり、この状態から以下のキーを押すことで様々な入力方式に変わります。
  • q --- カタカナ
  • l --- 半角英数字
  • L --- 全角英数字
/や\も使えるみたいですが、僕はまだ使ってません。

動作確認やってみれば分かりますが、 漢字に変換する単語を大文字のアルファベットで始めます。
送りがなも含んだ変換を行う場合、送りがなの先頭も大文字にします。
以下はDDSKKの使い方ですが参考にしてみてください。
tips for skk -- skkの覚書

変換でスペース押しすぎて行きすぎた場合はバックスペースキーで戻れたりします。
辞書にない単語もその都度登録できたりします。
間違えて辞書に登録してしまったら、変換でその単語が出てきたら"X"(大文字)で削除できます。
C-gがキャンセルのコマンドになってるのでEmacsっぽいです。

SKKはこんな感じです!
シフトキーを酷使するので以下の設定をおすすめします!
Mac OS X で SandS (Space and Shift) を使う

追記

iTermとAquaSKKの相性が悪いのですが、以下のものを使えば問題ないです。
iTerm2 version 1.0 with AquaSKK support - ドレッシングのような

2013年7月30日火曜日

EmacsのDockアイコンを変えるわああああ







おはようございます。

Dockのアイコンは自由に変更できます。

つまり、Emacsのアイコンも自分の好きなものに変更できます。(上の画像が、私のEmacsアイコンです)

まず、アイコンにする画像の拡張子はicnsなのでこのフリーソフト をダウンロードして、画像をicnsファイルに変更してください。

次に、Finderで、/Applications からEmacsを探し、クリックで「パッケージの中を表示」を実行してください。

Contents << Resources << Emacs.icnsがあるので、自分の好きな画像とチェンジしましょう。

あとは、再起動するだけです。
では。

参考画像集

(追記)
再起動しなくても、「情報を見る」で左上隅の画像にD&Dすればできるようです。


2013年7月9日火曜日

Emacs: e2wmでAV時計を表示する

男子諸君に朗報です.
以前の記事で紹介されていたe2wm.elをEmacsに導入している人はC-c ; C (大文字のC)で美人時計が表示されるのはご存知でしょうか?
トップ画のような可愛いお姉さんが毎分出てきて作業が捗らない人も多いのではないかと思います.

このe2wm.elのソースをちょっといじると,AV時計の画像を表示させることができます.
やり方は簡単で画像取得のURLの部分を以下のように書き換えるだけです.
(defvar e2wm:def-plugin-clock-url "http://www.avtokei.jp/images/clocks/%H/%H%M.jpg\?1277461066" "URL pattern.")
(defvar e2wm:def-plugin-clock-referer "http://www.avtokei.jp/index.html" "referer URL")
元々のバイトコンパイル済みのe2wm.elcが存在しているとそっちが読み込まれるのであらかじめ削除するかもしくはコンパイルし直してください.
これで毎分ムフフできますね.

※注意事項として,もはや時計の意味がありません.

2013年7月7日日曜日

Emacsの設定ファイルを短くする


おはようございます。

.emacs.elとか.emacs.d/init.elは,便利そうなのどんどん追加していくと長くなっていきがちです.
これを複数のファイルに分割して管理する方法を紹介します.
やり方は簡単で,例えば今設定ファイル内のflymake関連の部分を他のファイルに移すことを想定します.
この場合,flymake関連の設定部分を丸々カット&ペーストでsetup-flymake.elなどというファイルに移します.
setup-flymake.elはもちろんパスの通ったところに置いてください.
で,setup-flymake.elの末尾に以下を追記します.
(provide 'setup-flymake)
そしたらinit.el(もしくは.emacs.el)に以下を書きます.
(require 'setup-flymake)
これだけです.

もしくはprovideの部分とか書かずに, 以下のやり方でいけるのかもしれません.
(load "setup-flymake")
この場合の"setup-flymake"はファイル名を意味しています.
僕は前者のやり方です.

こんな感じです.

追記:

Emacs起動時に全ての設定を読み込むんじゃなくて,ある特定のメジャーモードの時に設定ファイルを読み込むっていうこともできます.
例えばcc-modeを使うときだけsetup-cc-modeを読み込むには以下のようにします.
(eval-after-load 'cc-mode '(require 'setup-cc-mode))
tex-modeとかのメジャーモードごとに設定すればいいと思います.
この方がEmacsの起動時間が早くなることが期待できます.

さらに追記:

各セットアップファイルがお互い依存していると,eval-after-load使ったやり方では上手く動かないことがあるので注意が必要です.(例えばsetup-cc-mode.elでflymakeの呼び出しがあったりとか )
僕もそうですが,lispあんまり分からない人は最初のやり方でやっておくのが無難かもしれません.

2013年6月20日木曜日

Emacsでめっちゃパージする

Emacsでpurgeする関数を自作してみました。
;; 自作のpurgeする関数
(defun purge ()
  (interactive)
  (message "purging...")
  (shell-command
   (format "purge"))
  (message "Finished."))
(global-set-key "\C-c\C-p" 'purge)
C-c C-pでパージ出来ます。

2013年6月17日月曜日

Emacsの起動時間

M-x emacs-init-time
で起動までにかかった時間が調べられます。

2013年5月24日金曜日

emacsでカーソルを固定したまま画面をスクロール


皆さんはemacsで画面上部、または下部の見切れてる部分を見たいときどうしてますか?
マウスホイールや2本指スクロールを使って狙った場所よりも行き過ぎちゃう、そこのあなた。
そしてわざわざカーソルを動かして見ようとしている、そこのあなた。
そんな情弱にあなたに朗報です。 
emacsでカーソルを動かさずに画面だけスクロールさせる方法があります!!

(global-set-key "\M-n" (lambda () (interactive) (scroll-up 1)))
(global-set-key "\M-p" (lambda () (interactive) (scroll-down 1)))

これをemacs.elに書き加えれば、M-pで上へ、M-nで下へカーソルを固定したままスクロールさせることができます。
ぜひ使ってみてください。