ハードウェア言語(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 件のコメント:
コメントを投稿