恥は/dev/nullへ by 初心者

プログラミング初心者がのろのろと学んだことをつづっています♪

.vimrc on Linux

vimで日本語を含むファイルを開いたら文字化けしていたので、新たにDebian11をインストールしたサブマシンではvimの設定をしていないことを思い出しました。

そこで、ひとまず最低限のことだけ.vimrcに記述しました。

(以下、.vimrcの内容)

set nocompatible           " vi互換モードではなくvimとして使用
filetype plugin indent on

" 作成しておくディレクトリ
" .vim/undo
" .vim/vim_plug_box
" .vim/vimbackup

"---------------------------------------------------------------
" インライン入力に関するメモ
"---------------------------------------------------------------
" fcitxを使いgvimで日本語入力をしようとするとインライン
" 入力ができないケースがある。この場合、vim -g で gvim
" を起動すればよい。
"    -> .bashrcに以下の記述を追加
"          alias vimg='vim -g'

"---------------------------------------------------------------
" エンコーディング設定
"---------------------------------------------------------------
set encoding=utf-8
" set encoding=utf-8 bomb
set fileencodings=utf-8,cp932,sjis,utf-16le,euc-jp,iso-2022-jp
set fileformats=unix,dos,mac
scriptencoding utf-8

"---------------------------------------------------------------
" フォント設定
"---------------------------------------------------------------
set guifont=HackGen\ 13 guifontwide=HackGen\ 13
"    set guifont=MonoSpaceRegular\ 13
"        Windowsの場合は MonoSpaceRegular:h13

"---------------------------------------------------------------
" 文字に色をつける
"---------------------------------------------------------------
syntax enable
colorscheme torte

"---------------------------------------------------------------
" ステータスラインの設定
"---------------------------------------------------------------
set laststatus=2                         " ステータスラインを常に表示
set statusline=%r%h\                     " 読込専用か表示 + ヘルプなら[help]と表示 
set statusline+=%m                       " 変更があれば+を表示
set statusline+=[Buf=%n]\                " バッファNo + スペース
set statusline+=%f                       " ファイル名(カレントディレクトリから見た相対パス。なお、フルパス表示は%F)
set statusline+=%=                       " ここから下は右寄せパート
set statusline+=%<                       " 表示が長すぎたらここから切り捨て
set statusline+=[ENC=%{&fileencoding!=''?&fileencoding:&encoding}]
set statusline+=\ [EOL=%{&fileformat}] " スペース + ファイルフォーマット
set statusline+=\ [TYPE=%Y]              " スペース + ファイルタイプ
set statusline+=\ [COL:%v\ LINE:%l/%L]   " 桁数、行数、全行数
"[memo1] ENCの行
" %{}で、波括弧内の式を評価、
" 三項演算子を使い、fileencodingが設定されているか否かで条件分岐
" 短縮して書くと  set statusline+=[ENC3=%{&fenc!=''?&fenc:&enc}]
"[memo2] EOLの行
" fileformatはEOLを表す。dosは<CR><NL>、unixは<NL>、macは<CR>。

"---------------------------------------------------------------
" リマップ設定
"---------------------------------------------------------------
" ESCを Ctrl + L に割り当てる
nnoremap <C-L> <ESC>
vnoremap <C-L> <ESC>gV
onoremap <C-L> <ESC>
cnoremap <C-L> <C-C><ESC>
inoremap <C-L> <ESC>`^
tnoremap <C-L> <ESC>
lnoremap <C-L> <ESC>

" カーソルを表示行で移動
nnoremap j gj
nnoremap k gk

" ショートカット
nnoremap <C-F11> :set wrap<CR>                       " 折返しモード
nnoremap <Leader>ev :e ~/.vimrc <CR>                 " .vimrcを開く
nnoremap <F8> :bo terminal "python3.9" "%"<CR>
" nmap <F8> :bo terminal "python3.9" "%"<CR>

"---------------------------------------------------------------
" その他
"---------------------------------------------------------------
set clipboard=unnamedplus      " クリップボードを共有する
set number                     " 行番号を表示
set nowrap                     " 折返し表示をしない
set title                      " ウィンドウにタイトルを表示
set guioptions-=T              " ツールバーを非表示にする
set guioptions-=m              " メニューバーを非表示にする
set showmode                   " コマンドを画面下部に表示

set hidden                     " 編集中のファイルを保存しなくても別のファイルを開けるようにする
set autoread                   " ファイル内容が変更された場合に自動読み込み
set wildmenu                   " TABキーによる補完入力を有効化

set backup                     " バックアップファイルを作る
set backupdir=~/.vim/vimbackup " バックアップ先
set noswapfile                 " swpファイルを作らない

set noignorecase               " 検索時に大文字と小文字を区別する
set hlsearch                   " 検索結果をハイライトする

set whichwrap=h,l,[,],<,>,~    " 行頭や行末を超えてカーソル移動

set shiftwidth=4 softtabstop=0 tabstop=4 expandtab
set listchars=eol:£,tab:»_     " 制御文字の表示

"---------------------------------------------------------------
" UNDOファイルの作成
"---------------------------------------------------------------
" 通常はファイルを閉じると変更履歴も消えるため、Undo/Redoができ
" なくなる。
" 以下の設定で~/.vim/undoディレクトリ配下に変更履歴を保存してお
" き、ファイルを閉じても変更履歴が残るようにする。
if has('persistent_undo')
    set undodir=~/.vim/undo
    set undofile
endif
" set noundofile  "Undoファイルを作らない

"--------------------------------------------------------
" 検索時にマッチした件数を表示する
"-------------------------------------------------------
" <この設定は以下のページから引用したもの>
" https://qiita.com/akira-hamada/items/eb46ef02fabfdd418449
nnoremap <expr> / _(":%s/<Cursor>/&/gn")
function! s:move_cursor_pos_mapping(str, ...)
    let left = get(a:, 1, "<Left>")
    let lefts = join(map(split(matchstr(a:str, '.*<Cursor>\zs.*\ze'), '.\zs'), 'left'), "")
    return substitute(a:str, '<Cursor>', '', '') . lefts
endfunction
function! _(str)
    return s:move_cursor_pos_mapping(a:str, "\<Left>")
endfunction

"-------------------------------------------------
" vim-plugの設定
"-------------------------------------------------
" システム上にgitがインストールされていないと動か
" ないので、gitを先にインストールしておく。
call plug#begin('~/.vim/vim_plug_box')
    Plug 'https://github.com/cocopon/vaffle.vim'
    Plug 'https://github.com/tyru/open-browser.vim'
    Plug 'https://github.com/Yggdroot/indentLine'
    Plug 'https://github.com/cohama/lexima.vim'
    Plug 'https://github.com/simeji/winresizer'
    Plug 'junegunn/goyo.vim'
    Plug 'tpope/vim-surround'
    Plug 'chrisbra/csv.vim'
"    Plug 'yuttie/comfortable-motion.vim'
"    Plug 'alvan/vim-closetag'
"    Plug 'junegunn/vim-easy-align'
"    Plug 'https://github.com/Shougo/neocomplete.vim'
call plug#end()

"-------------------------------------------------
" indentLineの設定
"-------------------------------------------------
" インデントを可視化するプラグイン
let g:indentLine_color_term = 111
let g:indentLine_color_gui = '#708090'
let g:indentLine_char = '¦' "use ¦, ┆ or │

"-------------------------------------------------
" surround.vimの設定
"-------------------------------------------------
let g:surround_{char2nr("=")} = "[code] \r [/code]"
let g:surround_{char2nr("+")} = "[info] \r [/info]"
let g:surround_{char2nr("-")} = "/* \r */"
" 範囲選択する → 大文字の S → =   (これで[code] [/code]で囲まれる)
" 範囲選択する → 大文字の S → +   (これで[info] [/info]で囲まれる)
"    <カスタマイズ方法は以下のサイトがわかりやすい>
"     https://spirits.appirits.com/doruby/10811/?amp

"-------------------------------------------------
" Vaffleの設定
"-------------------------------------------------
let g:vaffle_auto_cd = 1           " working directoryを自動変更
let g:vaffle_show_hidden_files = 1 " 隠しファイルを表示する
" let g:vaffle_force_delete = 1    " 空でないディレクトリを消す(便利だがRisky)

" <vaffleのコマンド一覧>
"  ~        ホームディレクトリを開く
"  h        親ディレクトリに移動
"  l        カーソル位置ディレクトリに移動
"  t        新規タブで開く
"
"  *        全選択・解除
"  .        隠しファイルの表示・非表示
"  <Space>  選択・解除
"
"  <CR>     選択したもの(ファイルやディレクトリ)を開く
"  m        選択したものを移動
"  d        選択したものを削除
"  r        選択したものをrename
"
"  q        Vaffleを終了
"  o        ディレクトリ作成
"  R        バッファをリフレッシュ
"  i        新規ファイルを作成
"  x        選択したファイルをコマンドラインに挿入

"-------------------------------------------------
" Goyoの設定
"-------------------------------------------------
let g:goyo_width = 90

"-------------------------------------------------
" EasyAlignの設定 
"-------------------------------------------------
vmap <Enter> <Plug>(EasyAlign)

"--------------------------------------------------------------------------
" open-browserの設定
"--------------------------------------------------------------------------
nmap <F2> <Plug>(openbrowser-smart-search)   " [注意] nnoremapにすると動作しない
vmap <F2> <Plug>(openbrowser-smart-search)   " [注意] vnoremapにすると動作しない
" https://dev.classmethod.jp/articles/vim-open-browser/

"-------------------------------------------------
" closetagの設定
"-------------------------------------------------
" let g:closetag_filenames = '*.html,*.xhtml,*.phtml'
" let g:closetag_filetypes = 'html,xhtml,phtml'