作業中のメモ

よく「計算機」を使って作業をする.知らなかったことを中心にまとめるつもり.

Vim と Emacs の設定ファイル

どうも,筆者です.

個人的に使っている VimEmacs の設定ファイルを載せておく.

Vim

" === 基本設定 ===
" グループの初期化
augroup myvimauto
    autocmd!
augroup END

syntax on

" 文字コードを UTF-8 に設定
set fenc=utf-8

" 入力中のコマンドをステータスに表示
set showcmd

" 保存時に行末のスペースを削除
autocmd myvimauto BufWritePre * %s/\s\+$//e

" 色の設定
highlight StatusLine ctermbg=none ctermfg=grey
highlight Comment ctermfg=LightGreen
highlight Constant ctermfg=DarkRed
highlight Identifier ctermfg=Cyan
highlight Statement ctermfg=Brown
highlight SpecialKey ctermbg=none ctermfg=darkgray
highlight Directory ctermfg=grey

" 入力モードに入ったら,その行を太字に,
" 入力モードから出ると underline にするように設定
autocmd myvimauto VimEnter,ColorScheme * highlight CursorLine cterm=underline
autocmd myvimauto InsertEnter * highlight CursorLine cterm=bold
autocmd myvimauto InsertLeave * highlight CursorLine cterm=underline

" === 見た目系 ===
" 行番号を表示
set number

" ルーラーの表示
set ruler

" 現在の行を強調表示
set cursorline

" スマートインデント
set smartindent

" オートインデント
set autoindent

" スマートタブ
set smarttab

" 括弧入力時に対応する括弧を表示
set showmatch

" ステータスラインを常に表示
set laststatus=2

" コマンドラインの高さ
set cmdheight=1

" コマンドラインの補完
set wildmode=list:longest

" 折り返し時に表示業単位で移動
nnoremap j gj
nnoremap k gk
nnoremap <Down> gj
nnoremap <Up> gk
nnoremap $ g$
nnoremap ^ g^
nnoremap <Home> g^
nnoremap <End> g$
nnoremap gj j
nnoremap gk k
nnoremap g$ $
nnoremap g^ ^

" 行末スペースをハイライト
autocmd myvimauto VimEnter,WinEnter * match Error /\s\+$/

" ファイル名の表示
set statusline=%<%t\ %m%r%h%w\ [position=%04l,%04v][%p%%]\ [length=%L]\ %{'['.(&fenc!=''?&fenc:&enc).']\ ['.&fileformat.']'}

" === TAB 系 ===
" 不可視文字を可視化
set list listchars=tab:>~

set backspace=indent,eol,start

" 行頭以外の TAB の表示幅
set tabstop=4

" 行頭での TAB の表示幅
set shiftwidth=4
set softtabstop=4

" === 検索系 ===
" 検索文字列が小文字の場合は,大文字小文字を区別なく検索
set ignorecase

" 検索文字に大文字が含まれている場合は区別して検索
set smartcase

" 文字列入力時に,順次対象文字列にヒットさせる
set incsearch

" 検索時に最後まで行ったら最初に戻る
set wrapscan

" 検索語をハイライト
set hlsearch

" コマンドラインの補完をするときに強化されたものを使う
set wildmenu

" ESC 連打でハイライト解除
nmap <Esc><Esc> :nohlsearch<CR><Esc>

Emacs

;; Emacs-Lisp
(require 'cl)

;;------------------------------------
;; 標準機能の設定
;;------------------------------------
;; Welcome message の非表示
(setq inhibit-startup-message t)

;; TAB の表示幅
(setq default-tab-width 4)

;; インデントのオフセット
(setq c-basic-offset 4)

;; メニューバーにファイルのフルパスを表示
(setq frame-title-format (format "%%f"))

;; 対応する括弧を表示
(show-paren-mode 1)

;; 現在の行に色を付ける
(global-hl-line-mode t)

;; 行番号,列番号を表示
(line-number-mode t)
(column-number-mode t)

;; 行番号表示
(require 'linum)
(global-linum-mode t)

;; スクロールは 1 行ずつ
(setq scroll-step 1)

;; 行末の空白を強調表示
(setq-default show-trailing-whitespace t)
(set-face-background 'trailing-whitespace "#b14770")

;; 行末の空白の自動削除
(add-hook 'before-save-hook 'delete-trailing-whitespace)

;; 予約語の色分け
(global-font-lock-mode t)

;;------------------------------------
;; ファイル関連の設定
;;------------------------------------
;; バックアップファイル作成の無効化
(setq make-backup-files nil)

;; 自動保存ファイル作成の無効化
(setq auto-save-default nil)

;;------------------------------------
;; 補完の設定
;;------------------------------------
;; 補完時に大文字小文字を区別しない
(setq completion-ignore-case t)
(setq read-file-name-completion-ignore-case t)

;; 補完可能なものを随時表示
(icomplete-mode 1)

;;------------------------------------
;; インデントの一括修正
;;------------------------------------
(defun all-indent ()
    (interactive)
    (save-excursion
        (indent-region (point-min) (point-max))
    )
)
(defun electric-indent ()
    "Indent specified region.
  When resion is active, indent region.
  Otherwise indent whole buffer."

    (interactive)
    (if (use-region-p)
        (indent-region (region-beginning) (region-end))
        (all-indent)
    )
)
;; インデントの一括修正を行うショートカット(Ctrl + Alt + ])
(global-set-key (kbd "C-M-]") 'electric-indent)