Emacsに切り替えました&init.el晒し
プログラミングを始めてからvimと一緒に戦ってきましたが、 やっぱり対抗馬を知った上でじゃないとvimと仲良くなれないと思ってemacsを試した結果 見事に切り替えました^^; 理由はいろいろありますが、 キーバインドが好みなのが一番ですかね。 これからemacsと仲良くやっていきます。(まずアイコン変えたい
init.el
せっかくなので現状のinit.elをば githubにもおいてあります。
https://github.com/fnwiya/dotfiles/tree/master/.emacs.d
フォルダ構成がぐだぐだなのでそこを綺麗にしたいですね。 基本は先人の知恵をお借りして、わけわからないものは省いてます。 必要に応じて増やすのが正解ですね。
;;; -*- Mode: Emacs-Lisp; Coding: utf-8 -*- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; @ load-path ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; load-path: (defun add-to-load-path (&rest paths) (let (path) (dolist (path paths paths) (let ((default-directory (expand-file-name (concat user-emacs-directory path)))) (add-to-list 'load-path default-directory) (if (fboundp 'normal-top-level-add-subdirs-to-load-path) (normal-top-level-add-subdirs-to-load-path)))))) ;; load-pathに追加するフォルダ ;; 2つ以上フォルダを指定する場合の引数 => (add-to-load-path "elisp" "xxx" "xxx") (add-to-load-path "elisp") (require 'package) (setq package-user-dir "~/.emacs.d/elisp") (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/")) (package-initialize) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; General ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ユーザー情報 (setq user-full-name "fnwiya") ;; 警告音もフラッシュも全て無効 (setq ring-bell-function 'ignore) ;; バックアップファイルを作らないようにする (setq make-backup-files nil) ;;; 終了時にオートセーブファイルを消す (setq delete-auto-save-files t) ;;; デフォルトのタブ幅を 4 に設定 (setq-default tab-width 4) ;; タブをスペースで扱う (setq-default indent-tabs-mode nil) ;; C-Ret で矩形選択 ;; 詳しいキーバインド操作:http://dev.ariel-networks.com/articles/emacs/part5/ (cua-mode t) (setq cua-enable-cua-keys nil) ;; yes or noをy or n (fset 'yes-or-no-p 'y-or-n-p) ;; emacsclientを使えるようにする (server-start) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; 言語設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;日本語環境 (set-language-environment "Japanese") (set-default-coding-systems 'utf-8) (set-terminal-coding-system 'utf-8) (set-keyboard-coding-system 'utf-8) (set-buffer-file-coding-system 'utf-8) (prefer-coding-system 'utf-8) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; 見た目 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 透過 (set-frame-parameter (selected-frame) 'alpha '(95 90)) ;; スタートアップ画面 (setq inhibit-startup-screen t) ;; scratchの初期メッセージ消去 (setq initial-scratch-message "") ;; メニューバー (when window-system (menu-bar-mode +1)) ;; ツールバー (when window-system (tool-bar-mode -1)) ;; スクロールバー (when window-system (scroll-bar-mode -1)) ;; タイトルバーにファイルのフルパス表示 (setq frame-title-format (format "%%f - Emacs@%s" (system-name))) ;; 行番号を表示 (require 'linum) (global-linum-mode) (setq linum-format "%04d|") ;; 対応するカッコを強調表示 (show-paren-mode t) (setq show-paren-style 'mixed) ;; リージョンを色付きにする (transient-mark-mode 1) ;; 行ハイライト (global-hl-line-mode t) ;; 行間 (setq-default line-spacing 0) ;;; カーソルの位置が何文字目かを表示する (column-number-mode t) ;;; カーソルの位置が何行目かを表示する (line-number-mode t) ;;; カーソルの場所を保存する (require 'saveplace) (setq-default save-place t) ;;;カラースキーム (color-theme-initialize) (color-theme-ld-dark) (when (require 'color-theme) (color-theme-initialize) (when (require 'color-theme-solarized) (color-theme-solarized))) ;; cursor の blink を止める (blink-cursor-mode 0) ;; 予約語を色分けする(~21) ;; (global-font-lock-mode t) ;; Ricty フォントの利用 (create-fontset-from-ascii-font "Ricty-14:weight=normal:slant=normal" nil "ricty") (set-fontset-font "fontset-ricty" 'unicode (font-spec :family "Ricty" :size 14) nil 'append) (add-to-list 'default-frame-alist '(font . "fontset-ricty")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; 操作 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 1行づつスクロールする (setq scroll-conservatively 1) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; KeyMapping ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-key global-map [?¥] [?\\]) (keyboard-translate ?\C-h ?\C-?) ;; C-k 1回で行全体を削除する (setq kill-whole-line t) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Packages ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Auto Complete (require 'auto-complete-config) (ac-config-default) (add-to-list 'ac-modes 'text-mode) ;; text-modeでも自動的に有効にする (add-to-list 'ac-modes 'fundamental-mode) ;; fundamental-mode (add-to-list 'ac-modes 'org-mode) (add-to-list 'ac-modes 'yatex-mode) (ac-set-trigger-key "TAB") (setq ac-use-menu-map t) ;; 補完メニュー表示時にC-n/C-pで補完候補選択 (setq ac-use-fuzzy t) ;; 曖昧マッチ (require 'magit) (add-hook 'after-init-hook #'global-flycheck-mode) (when (require 'helm-config nil t) (helm-mode 1) (define-key global-map (kbd "M-x") 'helm-M-x) (define-key global-map (kbd "C-x C-f") 'helm-find-files) (define-key global-map (kbd "C-x C-r") 'helm-recentf) (define-key global-map (kbd "M-y") 'helm-show-kill-ring) (define-key global-map (kbd "C-c i") 'helm-imenu) (define-key global-map (kbd "C-x b") 'helm-buffers-list) (define-key helm-map (kbd "C-h") 'delete-backward-char) (define-key helm-find-files-map (kbd "C-h") 'delete-backward-char) (define-key helm-find-files-map (kbd "TAB") 'helm-execute-persistent-action) (define-key helm-read-file-map (kbd "TAB") 'helm-execute-persistent-action) ;; Disable helm in some functions (add-to-list 'helm-completing-read-handlers-alist '(find-alternate-file . nil)) ;; Emulate `kill-line' in helm minibuffer (setq helm-delete-minibuffer-contents-from-point t) (defadvice helm-delete-minibuffer-contents (before helm-emulate-kill-line activate) "Emulate `kill-line' in helm minibuffer" (kill-new (buffer-substring (point) (field-end)))) (defadvice helm-ff-kill-or-find-buffer-fname (around execute-only-if-exist activate) "Execute command only if CANDIDATE exists" (when (file-exists-p candidate) ad-do-it)) (defadvice helm-ff-transform-fname-for-completion (around my-transform activate) "Transform the pattern to reflect my intention" (let* ((pattern (ad-get-arg 0)) (input-pattern (file-name-nondirectory pattern)) (dirname (file-name-directory pattern))) (setq input-pattern (replace-regexp-in-string "\\." "\\\\." input-pattern)) (setq ad-return-value (concat dirname (if (string-match "^\\^" input-pattern) ;; '^' is a pattern for basename ;; and not required because the directory name is prepended (substring input-pattern 1) (concat ".*" input-pattern))))))) (require 'undo-tree) (global-undo-tree-mode t) (global-set-key (kbd "M-/") 'undo-tree-redo) (require 'volatile-highlights) (volatile-highlights-mode t) ;;; init.el ends here