Skip to content

Instantly share code, notes, and snippets.

@buty4649
Created September 11, 2013 10:07
Show Gist options
  • Save buty4649/6521675 to your computer and use it in GitHub Desktop.
Save buty4649/6521675 to your computer and use it in GitHub Desktop.
" ---------------------------------------------------------
" GUI設定
" ---------------------------------------------------------
" メニューの文字化け対策
source $VIMRUNTIME/delmenu.vim
set langmenu=ja_JP.utf-8
source $VIMRUNTIME/menu.vim
" カラースキーム設定
set t_Co=256
"set background=light
"colorscheme solarized
colorscheme sakura
" フォント設定
set guifont=Ricty_Meiryo_for_Powerline:h10:cSHIFTJIS
" ツールバーを非表示
set guioptions-=T
" カーソル行に下線を表示する
set cursorline
" タブのラベルにタブ番号を表示する+ファイル名のみ表示
set guitablabel=%N:\ %{GuiTabLabel()}
" コマンド行を1行にする
set cmdheight=1
" 折り返しを無効化
set textwidth=0
" ハイライト設定(ToDo:後でカラースキームに追加)
"highlight CursorLine gui=underline guifg=NONE guibg=NONE guisp=NONE
"highlight SpecialKey guifg=LightGray
"highlight NonText guifg=Blue
hi SpecialKey guifg=#d4eff2 guibg=bg
" ---------------------------------------------------------
" コマンド設定
" ---------------------------------------------------------
" ドラッグ&ドロップを新しいタブに開く
"autocmd VimEnter * tab all
"autocmd BufAdd * exe 'tablast | tabe "' . expand( "<afile") .'"'
" ウインドウの位置とサイズを記憶する
let g:save_window_file = expand('$HOME/.vimwinpos')
augroup SaveWindow
autocmd!
autocmd VimLeavePre * call s:save_window()
function! s:save_window()
let options = [
\ 'set columns=' . &columns,
\ 'set lines=' . &lines,
\ 'winpos ' . getwinposx() . ' ' . getwinposy(),
\ ]
call writefile(options, g:save_window_file)
endfunction
augroup END
if filereadable(g:save_window_file)
execute 'source' g:save_window_file
endif
" ---------------------------------------------------------
" キーマップ設定
" ---------------------------------------------------------
" タブ操作
nnoremap <silent> gf :tabfirst<CR>
nnoremap <silent> gl :tablast<CR>
nnoremap <silent> tt :call <SID>TabNewLast()<CR>
nnoremap <silent> tT :tabclose<CR>
nnoremap <silent> H gT
nnoremap <silent> L gt
" Powerlineを読み込み
NeoBundleSource vim-powerline
" ---------------------------------------------------------
" 関数の定義
" ---------------------------------------------------------
" 新しいタブを最後に開く
function! s:TabNewLast()
let tabcount = tabpagenr('$')
if (tabcount > 1)
execute ":tablast"
endif
execute ":tabnew"
endfunction
" 個別のタブの表示設定をします
function! GuiTabLabel()
" タブで表示する文字列の初期化をします
let l:label = ''
" タブに含まれるバッファ(ウィンドウ)についての情報をとっておきます。
let l:bufnrlist = tabpagebuflist(v:lnum)
" 表示文字列にバッファ名を追加します
" パスを全部表示させると長いのでファイル名だけを使います 詳しくは help fnamemodify()
let l:bufname = fnamemodify(bufname(l:bufnrlist[tabpagewinnr(v:lnum) - 1]), ':t')
" バッファ名がなければ No title としておきます。ここではマルチバイト文字を使わないほうが無難です
let l:label .= l:bufname == '' ? 'No title' : l:bufname
" タブ内にウィンドウが複数あるときにはその数を追加します(デフォルトで一応あるので)
let l:wincount = tabpagewinnr(v:lnum, '$')
if l:wincount > 1
let l:label .= '[' . l:wincount . ']'
endif
" このタブページに変更のあるバッファがるときには '[+]' を追加します(デフォルトで一応あるので)
for bufnr in l:bufnrlist
if getbufvar(bufnr, "&modified")
let l:label .= '[+]'
break
endif
endfor
" 表示文字列を返します
return l:label
endfunction
" vim: set ft=vim et
set nocompatible
" ---------------------------------------------------------
" 前処理
" ---------------------------------------------------------
" Windowsの場合のみ.vimに変更
if has('win32')
set runtimepath^=$HOME/.vim
endif
" NeoBundleの初期化
let g:neobundle#types#git#default_protocol = 'https'
if has('vim_starting')
set runtimepath+=$HOME/.vim/bundle/neobundle.vim
endif
filetype plugin indent off
call neobundle#rc()
" プラグインの定義 ------------------------------------------------------------
NeoBundle 'altercation/vim-colors-solarized.git'
"NeoBundle 'basyura/mduem.vim'
NeoBundle 'itchyny/lightline.vim'
NeoBundle 'itchyny/thumbnail.vim'
NeoBundle 'jtratner/vim-flavored-markdown.git'
"NeoBundle 'kien/ctrlp.vim.git'
NeoBundle 'LeafCage/unite-recording'
NeoBundle 'motemen/git-vim.git'
NeoBundle 'mru.vim'
NeoBundle 'Shougo/neobundle.vim'
NeoBundle 'Shougo/neocomplcache.git'
NeoBundle 'Shougo/unite.vim'
NeoBundle 'thinca/vim-fontzoom'
NeoBundle 'thinca/vim-singleton'
NeoBundle 'thinca/vim-quickrun'
"NeoBundle 'Lokaltog/vim-powerline.git'
"NeoBundle 'tyru/open-browser.vim'
NeoBundle 'vim-jp/vimdoc-ja'
NeoBundle 'vimwiki'
" 非同期通信を可能にする
" 'build'が指定されているのでインストール時に自動的に
" 指定されたコマンドが実行され vimproc がコンパイルされる
"NeoBundle "Shougo/vimproc", {
" \ "build": {
" \ "windows" : "make -f make_mingw32.mak",
" \ "cygwin" : "make -f make_cygwin.mak",
" \ "mac" : "make -f make_mac.mak",
" \ "unix" : "make -f make_unix.mak",
" \ }}
filetype plugin indent on
" 多重起動チェック
call singleton#enable()
" プラグインのインストールチェック
if neobundle#exists_not_installed_bundles()
echomsg 'Not installed bundles : ' .
\ string(neobundle#get_not_installed_bundle_names())
echomsg 'Please execute ":NeoBundleInstall" command.'
endif
" ---------------------------------------------------------
" 基本設定
" ---------------------------------------------------------
" デフォルト文字コードはUTF-8
set enc=utf-8
set termencoding=utf-8
" see also: http://lambdalisue.hatenablog.com/entry/2013/06/23/071344
" 検索関連 ------------------------------------------------------------------
set ignorecase " 大文字小文字を区別しない
set smartcase " 検索文字に大文字がある場合は大文字小文字を区別しない
set incsearch " インクリメンタルサーチ
set hlsearch " 検索結果をハイライト
" 編集関連 ------------------------------------------------------------------
set shiftround " インデントをshiftwidthで丸める
set infercase " 補完時に大文字小文字を区別しない
"set virtualedit=all " カーソルを文字が存在しない部分でも動けるようにする
set hidden " バッファを閉じる代わりに隠す(Undo履歴を残すため)
set switchbuf=useopen " 新しく開く代わりにすでに開いてあるバッファを開く
set showmatch " 対応する括弧などをハイライト表示する
set modeline " モードラインを有効化
" Tabの設定
set tabstop=3
set shiftwidth=4
set softtabstop=0
" 対応括弧に'<'と'>'のペアを追加
set matchpairs& matchpairs+=<:>
" バックスペースでなんでも消せるようにする
set backspace=indent,eol,start
" ヤンクでクリップボードにコピー
set clipboard=unnamed
" スワップ・バックアップファイルを無効化
set noswapfile
set nobackup
set nowritebackup
" 表示関連 ------------------------------------------------------------------
set number " 行番号を表示
set showtabline=2 " タブラインを常時表示
set cursorline " カーソル行をハイライト
set wrap " 折り返し表示
set textwidth=0 " 自動改行の禁止
set colorcolumn=80 " 80文字目に線を入れる
set splitright " 垂直分割を右側にする
" 特殊文字を可視化
set list
set listchars=tab:»\ ,eol:↲,extends:»,precedes:«,nbsp:%
" 再描画を抑止
set lazyredraw
" カラースキームの設定
syntax enable
"set background=dark
"colorscheme solarized
colorscheme sakura
" Windowsのみテンポラリを変更する
if has('win32') || has('win64')
"環境変数$TMPを使用する場合
set directory=$TMP
set backupdir=$TMP
endif
" ---------------------------------------------------------
" キーマップ設定
" ---------------------------------------------------------
" Leaderを,に設定
let mapleader=","
" カーソル移動
nnoremap j gj
nnoremap k gk
nnoremap <C-d> 10gj
nnoremap <C-u> 10gk
" ウインドウ移動
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
" 新規タブ作成
nnoremap <silent> <S-t> :tabnew<CR>
" 検索時に\vを追加
nnoremap / /\v
vnoremap / /\v
" 検索時のハイライトを無効化
nnoremap <silent> <Leader><Space> :noh<CR>
nnoremap <silent> <ESC><ESC> :noh<CR>
" ; を :にマッピング
nnoremap ; :
" バッファ選択
nnoremap b <ESC>:ls<CR>b
" T + ? で各種設定をトグル
nnoremap [toggle] <Nop>
nmap T [toggle]
nnoremap <silent> [toggle]s :setl spell!<CR>:setl spell?<CR>
nnoremap <silent> [toggle]l :setl list!<CR>:setl list?<CR>
nnoremap <silent> [toggle]t :setl expandtab!<CR>:setl expandtab?<CR>
nnoremap <silent> [toggle]w :setl wrap!<CR>:setl wrap?<CR>
" 折りたたみ(HTMLタグ)
nnoremap <Leader>zt vatzf
" 折りたたみ(カッコ)
nnoremap <Leader>z( va(zf
nnoremap <Leader>z{ va{zf
nnoremap <Leader>z[ va[zf
" カーソル下の単語を * で検索
nmap <silent> * "vy/\V<C-r>=substitute(escape(@v, '\/'), "\n", '\\n', 'g')<CR><CR>
vnoremap <silent> * "vy/\V<C-r>=substitute(escape(@v, '\/'), "\n", '\\n', 'g')<CR><CR>
" 検索後にジャンプした際に検索単語を画面中央に持ってくる
nnoremap n nzz
nnoremap N Nzz
nnoremap * *zz
nnoremap # #zz
nnoremap g* g*zz
nnoremap g# g#zz
" バッファ選択
nnoremap b <ESC>:ls<CR>:b
" インサートモード: Ctrl+Vを貼付けにする
imap <C-v> <MiddleMouse>
" インサートモード: Ctrl+cをESCキーと同等にする
imap <C-c> <ESC>
" F1キーを無効化
nmap <F1> <nop>
imap <F1> <nop>
" F3で検索履歴を開く
nnoremap <F3> <CR>q/
" q:,q/,q?は無効化
nnoremap q: <nop>
nnoremap q/ <nop>
nnoremap q? <nop>
" Shift + 矢印でウィンドウサイズを変更
nnoremap <S-Left> <C-w><<CR>
nnoremap <S-Right> <C-w>><CR>
nnoremap <S-Up> <C-w>-<CR>
nnoremap <S-Down> <C-w>+<CR>
" .vimrc, .gvimrcの再読み込み
nnoremap <Leader>. :source ~/.vimrc<cr>:source ~/.gvimrc<cr>
" Fontzoom!(フォントの大きさを元に戻す)
nnoremap <silent> <C-@> :Fontzoom!<cr>
" インサートモードの設定
inoremap <silent> <C-d> <Del>
inoremap <silent> <C-f> <Right>
inoremap <silent> <C-b> <Left>
inoremap { {}<Left>
inoremap [ []<Left>
inoremap ( ()<Left>
inoremap " ""<Left>
inoremap ' ''<Left>
inoremap < <><Left>
" コマンドモードの設定
" Bash風のキーバインドにする
cnoremap <C-a> <C-f>
cnoremap <C-b> <Left>
cnoremap <C-d> <Del>
cnoremap <C-f> <Right>
cnoremap <C-h> <BackSpace>
cnoremap <C-p> <ESC>q:
" Unite呼び出し
nnoremap [unite] <Nop>
nmap <Space>u [unite]
nnoremap [unite]u <Esc>:Unite<Space>
nnoremap <silent> [unite]r <Esc>:Unite recording<CR>
" ---------------------------------------------------------
" 自動コマンド設定
" ---------------------------------------------------------
" リサイズ時に分割ウインドウを調整する
autocmd VimResized * :wincmd =
" markdown シンタックスを内部的にGFMへ変更する
augroup markdown
au!
au BufNewFile,BufRead *.md,*.markdown setlocal filetype=ghmarkdown
augroup END
" ---------------------------------------------------------
" プラグインの設定
" ---------------------------------------------------------
" neocomplcacheを有効化する
let g:neocomplcache_enable_at_startup = 1
" lightlineの設定(GUIのみ)
if has('gui_running')
let g:lightline = {
\ 'colorscheme' : 'wombat',
\ 'active' : {
\ 'left' : [
\ ['mode', 'paste'],
\ ['readonly', 'absolutepath', 'modified']
\ ]
\ },
\ 'inactive' : {
\ 'left' : [ ['readonly', 'absolutepath', 'modified'] ]
\ },
\ 'separator' : { 'left': '⮀', 'right': '⮂' },
\ 'subseparator': { 'left': '⮁', 'right': '⮃' },
\ }
endif
" vim-quickrunの設定
let g:quickrun_config = {}
if has('win32') || has('win64')
let g:quickrun_config.ghmarkdown = {
\ 'outputter' : 'null',
\ 'command' : 'cygstart',
\ 'exec' : '%c %s',
\ }
endif
" vimwikiのGUIメニューを無効化
let g:vimwiki_menu = ''
" vimwikiをmarkdownにする
let g:vimwiki_list = [{'syntax': 'markdown', 'ext': '.txt'}]
" アンダーライン見出しのシンタクスを追加
" 見出し1
" =======
"
" 見出し2
" -------
let s:bundle = neobundle#get("vimwiki")
function! s:bundle.hooks.on_source(bundle)
autocmd vimwiki BufEnter *.txt syntax match VimwikiHeader1 ".\+\n=\+$" contains=VimwikiTodo,VimwikiHeaderChar,VimwikiNoExistsLink,VimwikiCode,VimwikiLink,VimwikiWeblink1,VimwikiWikiLink1,@Spell
autocmd vimwiki BufEnter *.txt syntax match VimwikiHeader2 ".\+\n-\+$" contains=VimwikiTodo,VimwikiHeaderChar,VimwikiNoExistsLink,VimwikiCode,VimwikiLink,VimwikiWeblink1,VimwikiWikiLink1,@Spell
endfunction
unlet s:bundle
" ---------------------------------------------------------
" ローカルコマンドの定義
" ---------------------------------------------------------
function! s:get_syn_id(transparent)
let synid = synID(line("."), col("."), 1)
if a:transparent
return synIDtrans(synid)
else
return synid
endif
endfunction
function! s:get_syn_attr(synid)
let name = synIDattr(a:synid, "name")
let ctermfg = synIDattr(a:synid, "fg", "cterm")
let ctermbg = synIDattr(a:synid, "bg", "cterm")
let guifg = synIDattr(a:synid, "fg", "gui")
let guibg = synIDattr(a:synid, "bg", "gui")
return {
\ "name": name,
\ "ctermfg": ctermfg,
\ "ctermbg": ctermbg,
\ "guifg": guifg,
\ "guibg": guibg}
endfunction
function! s:get_syn_info()
let baseSyn = s:get_syn_attr(s:get_syn_id(0))
echo "name: " . baseSyn.name .
\ " ctermfg: " . baseSyn.ctermfg .
\ " ctermbg: " . baseSyn.ctermbg .
\ " guifg: " . baseSyn.guifg .
\ " guibg: " . baseSyn.guibg
let linkedSyn = s:get_syn_attr(s:get_syn_id(1))
echo "link to"
echo "name: " . linkedSyn.name .
\ " ctermfg: " . linkedSyn.ctermfg .
\ " ctermbg: " . linkedSyn.ctermbg .
\ " guifg: " . linkedSyn.guifg .
\ " guibg: " . linkedSyn.guibg
endfunction
command! SyntaxInfo call s:get_syn_info()
" ---------------------------------------------------------
" 環境依存ファイルの読み込み
" ---------------------------------------------------------
if filereadable(expand('~/.vimrc.local'))
source ~/.vimrc.local
endif
" vim: set ft=vim et
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment