ハードウェア言語(Verilog,VHDL)を書くテキストエディタとしてEmacsを良く使う。
別に秀丸くんでも良いのだが、Linux OSで編集する場合も良くあるので昔からEmacsだ。
また、入力支援(verilogmode.elやVHDLはEmacsデフォルトで持つ)があり、もう離れられない。
最近はWindows 7(自分は32bit)上で普通にEmacs24.1がインストール出来るのでWindowsでも使える。(Mule for winやMeadowのころから使えていたのだが)
Windowsで使う場合は同時にMinGWなどのUnix計コマンドが使えるターミナルも一緒にインストールしておくと便利。
但し、Lisp言語が分からないので、カスタマイズには苦しむ。
特に、自動インデントやタブ辺りが未だに思い通りにならないのだが、、
まぁ、大半のエンジニアはググって真似しての繰り返し・・だと思います^^;
ちなみに、Windws環境では ESC- を Alt で代用出来る。(そもそも最近は ESCキーを使ったことない)
例えば、goto-lineコマンド M-g は Alt-g となる。(Altキーを押しながら g を押す)
注意するのは、M-% などで、% はシフトキーが必要なので、AltとShiftを押しながら5キー(シフトで%)を押す。当たり前ですが。
Emacsはとにかくショートカットキーが多く、忘れた場合などはヘルプでキーとコマンドの対応を確認出来る。
Help (このヘルプは情報量が多すぎてこれまた大変^^)
C-h ? ヘルプ
C-h b キーバインド表示(自分でバインドしたものも表示される)
これがあるからEmacsから離れられない一つにディレクトリエディタがある。
C-x d
C dired-do-copy
^ dired-up-directory
d dired-flag-file-deletion
q quit-window
u dired-unmark
v dired-view-file
~ dired-flag-backup-files
あとは、良く使うキーをさらっとメモしておくことにしよう・・(とても全部は書けないので)
■カーソル移動
C-a move-beginning-of-line
C-e move-end-of-line
M-b backward-word
M-c capitalize-word
C-v scroll-up-command
M-v scroll-down-command
M-< beginning-of-buffer
M-> end-of-buffer
■矩形処理(まだ他にいっぱいあります)
C-x r k kill-rectangle
C-x r y yank-rectangle
C-x r c clear-rectangle (空白にする)
C-x r o open-rectangle (空白を挿入)
■置換
M-% query-replace
→ 対話形式になって、y,nで置換をするしない
. で置換して終了
! で以降全てを置換 など
■キーボードマクロ
C-x ( kmacro-start-macro
C-x ) kmacro-end-macro
■繰り返し
C-u 80 - universal-argument(80個の - で線を引く)
■ウィンドウ分割
C-x 0 delete-window
C-x 1 delete-other-windows
C-x 2 split-window-below
C-x 3 split-window-right
C-x 5 0 delete-frame
C-x 5 1 delete-other-frames
C-x 5 2 make-frame-command
ちなみに .emacs.d/init.el に追加したキーバインドは以下の通り
~~~~~~~~~~
・F9で行番号を左横に表示
(global-set-key [f9] 'linum-mode)
・M-g で指定行へ移動
(global-set-key "\M-g" 'goto-line)
・キーボードマクロ呼び出し (Shift+7キーで繰り返し実行)
(global-set-key [?\C-'] 'call-last-kbd-macro)
・C-, と C-. を画面の1行スクロールにバインドする
(global-set-key [?\C-,] 'scroll-up-one-line)
(defun scroll-up-one-line () (interactive) (scroll-up 1))
(global-set-key [?\C-.] 'scroll-down-one-line)
(defun scroll-down-one-line () (interactive) (scroll-down 1))
・C-iでリージョンインデント
(global-set-key "\C-i" 'indent-region)
~~~~~~~~~~
あと、Emacs環境設定ファイル init.el ファイルはこんな感じ(emacs24.1用)
;; 初期フレームの設定(コメントアウトすればデフォルト設定)
(setq default-frame-alist
(append (list '(foreground-color . "black")
; '(background-color . "lightgray")
'(border-color . "black")
'(mouse-color . "white")
'(cursor-color . "black")
'(width . 115)
'(height . 56)
'(top . 10)
'(left . 100))
default-frame-alist))
;;; ***************************************
;;; 使用言語のカスタマイズ
;;; ***************************************
;; タブではなくスペースを使う
(setq-default indent-tabs-mode nil)
(setq indent-line-function 'indent-relative-maybe)
;;インデント幅
(setq c-basic-offset 2)
;; タブ幅を 2 に設定
(setq-default tab-width 2)
;; Cの字下げ
(add-hook 'c-mode-common-hook
'(lambda () (c-set-style "GNU") (setq c-basic-offset 4)))
;;; verilog modeの設定(VHDLやCはデフォルトでハイライトするためverilogのみ追加)
;; ダウンロード( http://www.verilog.com/ )した verilog-mode.el を Meadow\site-lisp にコピーする
(autoload 'verilog-mode "verilog-mode" "Verilog mode" t )
(setq auto-mode-alist (cons '("\\.v\\'" . verilog-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.sv\\'" . verilog-mode) auto-mode-alist))
;; User customization for Verilog mode
(setq verilog-indent-level 2
verilog-indent-level-module 2
verilog-indent-level-declaration 2
verilog-indent-level-behavioral 2
verilog-indent-level-directive 2
verilog-case-indent 2
verilog-auto-newline nil
verilog-auto-indent-on-newline nil
verilog-tab-always-indent t
verilog-auto-endcomments nil
verilog-minimum-comment-distance 40
verilog-indent-begin-after-if t
verilog-auto-lineup '(case declaration))
;;; 自分のローカル Lisp ファイルを読み込む
(setq load-path (append' ("~/.elisp") load-path))
;; ツールバーを表示しない
(tool-bar-mode 0)
;;; 対応する括弧をハイライトする
(show-paren-mode t)
;;; カラム番号表示
(column-number-mode t)
;; 行番号を左横に表示(F9でトグルをキーバインドに追加)
(global-linum-mode 1)
;;; カーソルが画面から出たときにスクロールするステップ
(setq scroll-step 1)
;;; マウスホイールで3行スクロール(デフォルトで5行くらいなので小くする)
(defun scroll-down-with-lines () "" (interactive) (scroll-down 3))
(defun scroll-up-with-lines () "" (interactive) (scroll-up 3))
(global-set-key [wheel-up] 'scroll-down-with-lines)
(global-set-key [wheel-down] 'scroll-up-with-lines)
;;; モード行フォントを変える
;(set-face-font 'modeline "MS 明朝-12")
;;; @ 配色
; モードライン
(set-face-foreground 'modeline "White" )
(set-face-background 'modeline "Black")
; 非アクティブ モードライン
(set-face-foreground 'mode-line-inactive "White")
(set-face-background 'mode-line-inactive "gray40")
;;; キーバインド
;; F9で行番号を左横に表示
(global-set-key [f9] 'linum-mode)
; M-g で指定行へ移動
(global-set-key "\M-g" 'goto-line)
; キーボードマクロ呼び出し(F3->***->F4,以降F4 に割り当てられているようだ)
(global-set-key [?\C-'] 'call-last-kbd-macro)
; C-, と C-. を画面の一行スクロールにバインドする
(global-set-key [?\C-,] 'scroll-up-one-line)
(defun scroll-up-one-line () (interactive) (scroll-up 1))
(global-set-key [?\C-.] 'scroll-down-one-line)
(defun scroll-down-one-line () (interactive) (scroll-down 1))
; C-iでリージョンインデント
(global-set-key "\C-i" 'indent-region)
;;; ***************************************
;;; 以下、Save Optionで自動追加
;;; ***************************************
(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.
'(default ((t (:family "Courier New" :foundry "outline" :slant normal :weight normal :height 90 :width normal)))))
(custom-set-variables)
0 件のコメント:
コメントを投稿