関連情報
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。忘れない内にメモメモ。。。
Vim Bootstrapというサイトを知りました。
vimrcを出力してくれるみたいですねー。
試してみた
言語はGoで、Monokaiで、Vimの設定で出力お願いしてみたら、以下のような出力になりました。
" vim-bootstrap 2023-11-13 07:41:41 "***************************************************************************** "" Vim-Plug core "***************************************************************************** let vimplug_exists=expand('~/.vim/autoload/plug.vim') if has('win32')&&!has('win64') let curl_exists=expand('C:\Windows\Sysnative\curl.exe') else let curl_exists=expand('curl') endif let g:vim_bootstrap_langs = "go" let g:vim_bootstrap_editor = "vim" " nvim or vim let g:vim_bootstrap_theme = "molokai" let g:vim_bootstrap_frams = "" if !filereadable(vimplug_exists) if !executable(curl_exists) echoerr "You have to install curl or first install vim-plug yourself!" execute "q!" endif echo "Installing Vim-Plug..." echo "" silent exec "!"curl_exists" -fLo " . shellescape(vimplug_exists) . " --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" let g:not_finish_vimplug = "yes" autocmd VimEnter * PlugInstall endif " Required: call plug#begin(expand('~/.vim/plugged')) "***************************************************************************** "" Plug install packages "***************************************************************************** Plug 'scrooloose/nerdtree' Plug 'jistr/vim-nerdtree-tabs' Plug 'tpope/vim-commentary' Plug 'tpope/vim-fugitive' Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' Plug 'airblade/vim-gitgutter' Plug 'vim-scripts/grep.vim' Plug 'vim-scripts/CSApprox' Plug 'Raimondi/delimitMate' Plug 'majutsushi/tagbar' Plug 'dense-analysis/ale' Plug 'Yggdroot/indentLine' Plug 'editor-bootstrap/vim-bootstrap-updater' Plug 'tpope/vim-rhubarb' " required by fugitive to :GBrowse Plug 'tomasr/molokai' if isdirectory('/usr/local/opt/fzf') Plug '/usr/local/opt/fzf' | Plug 'junegunn/fzf.vim' else Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --bin' } Plug 'junegunn/fzf.vim' endif let g:make = 'gmake' if exists('make') let g:make = 'make' endif Plug 'Shougo/vimproc.vim', {'do': g:make} "" Vim-Session Plug 'xolox/vim-misc' Plug 'xolox/vim-session' "" Snippets Plug 'SirVer/ultisnips' Plug 'honza/vim-snippets' "***************************************************************************** "" Custom bundles "***************************************************************************** " go "" Go Lang Bundle Plug 'fatih/vim-go', {'do': ':GoInstallBinaries'} "***************************************************************************** "***************************************************************************** "" Include user's extra bundle if filereadable(expand("~/.vimrc.local.bundles")) source ~/.vimrc.local.bundles endif call plug#end() " Required: filetype plugin indent on "***************************************************************************** "" Basic Setup "*****************************************************************************" "" Encoding set encoding=utf-8 set fileencoding=utf-8 set fileencodings=utf-8 set ttyfast "" Fix backspace indent set backspace=indent,eol,start "" Tabs. May be overridden by autocmd rules set tabstop=4 set softtabstop=0 set shiftwidth=4 set expandtab "" Map leader to , let mapleader=',' "" Enable hidden buffers set hidden "" Searching set hlsearch set incsearch set ignorecase set smartcase set fileformats=unix,dos,mac if exists('$SHELL') set shell=$SHELL else set shell=/bin/sh endif " session management let g:session_directory = "~/.vim/session" let g:session_autoload = "no" let g:session_autosave = "no" let g:session_command_aliases = 1 "***************************************************************************** "" Visual Settings "***************************************************************************** syntax on set ruler set number let no_buffers_menu=1 colorscheme molokai " Better command line completion set wildmenu " mouse support set mouse=a set mousemodel=popup set t_Co=256 set guioptions=egmrti set gfn=Monospace\ 10 if has("gui_running") if has("gui_mac") || has("gui_macvim") set guifont=Menlo:h12 set transparency=7 endif else let g:CSApprox_loaded = 1 " IndentLine let g:indentLine_enabled = 1 let g:indentLine_concealcursor = '' let g:indentLine_char = '┆' let g:indentLine_faster = 1 if $COLORTERM == 'gnome-terminal' set term=gnome-256color else if $TERM == 'xterm' set term=xterm-256color endif endif endif if &term =~ '256color' set t_ut= endif "" Disable the blinking cursor. set gcr=a:blinkon0 set scrolloff=3 "" Status bar set laststatus=2 "" Use modeline overrides set modeline set modelines=10 set title set titleold="Terminal" set titlestring=%F set statusline=%F%m%r%h%w%=(%{&ff}/%Y)\ (line\ %l\/%L,\ col\ %c)\ " Search mappings: These will make it so that going to the next one in a " search will center on the line it's found in. nnoremap n nzzzv nnoremap N Nzzzv if exists("*fugitive#statusline") set statusline+=%{fugitive#statusline()} endif " vim-airline let g:airline_theme = 'powerlineish' let g:airline#extensions#branch#enabled = 1 let g:airline#extensions#ale#enabled = 1 let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tagbar#enabled = 1 let g:airline_skip_empty_sections = 1 "***************************************************************************** "" Abbreviations "***************************************************************************** "" no one is really happy until you have this shortcuts cnoreabbrev W! w! cnoreabbrev Q! q! cnoreabbrev Qall! qall! cnoreabbrev Wq wq cnoreabbrev Wa wa cnoreabbrev wQ wq cnoreabbrev WQ wq cnoreabbrev W w cnoreabbrev Q q cnoreabbrev Qall qall "" NERDTree configuration let g:NERDTreeChDirMode=2 let g:NERDTreeIgnore=['node_modules','\.rbc$', '\~$', '\.pyc$', '\.db$', '\.sqlite$', '__pycache__'] let g:NERDTreeSortOrder=['^__\.py$', '\/$', '*', '\.swp$', '\.bak$', '\~$'] let g:NERDTreeShowBookmarks=1 let g:nerdtree_tabs_focus_on_files=1 let g:NERDTreeMapOpenInTabSilent = '<RightMouse>' let g:NERDTreeWinSize = 50 set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*.pyc,*.db,*.sqlite,*node_modules/ nnoremap <silent> <F2> :NERDTreeFind<CR> nnoremap <silent> <F3> :NERDTreeToggle<CR> " grep.vim nnoremap <silent> <leader>f :Rgrep<CR> let Grep_Default_Options = '-IR' let Grep_Skip_Files = '*.log *.db' let Grep_Skip_Dirs = '.git node_modules' " terminal emulation nnoremap <silent> <leader>sh :terminal<CR> "***************************************************************************** "" Commands "***************************************************************************** " remove trailing whitespaces command! FixWhitespace :%s/\s\+$//e "***************************************************************************** "" Functions "***************************************************************************** if !exists('*s:setupWrapping') function s:setupWrapping() set wrap set wm=2 set textwidth=79 endfunction endif "***************************************************************************** "" Autocmd Rules "***************************************************************************** "" The PC is fast enough, do syntax highlight syncing from start unless 200 lines augroup vimrc-sync-fromstart autocmd! autocmd BufEnter * :syntax sync maxlines=200 augroup END "" Remember cursor position augroup vimrc-remember-cursor-position autocmd! autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif augroup END "" txt augroup vimrc-wrapping autocmd! autocmd BufRead,BufNewFile *.txt call s:setupWrapping() augroup END "" make/cmake augroup vimrc-make-cmake autocmd! autocmd FileType make setlocal noexpandtab autocmd BufNewFile,BufRead CMakeLists.txt setlocal filetype=cmake augroup END set autoread "***************************************************************************** "" Mappings "***************************************************************************** "" Split noremap <Leader>h :<C-u>split<CR> noremap <Leader>v :<C-u>vsplit<CR> "" Git noremap <Leader>ga :Gwrite<CR> noremap <Leader>gc :Git commit --verbose<CR> noremap <Leader>gsh :Git push<CR> noremap <Leader>gll :Git pull<CR> noremap <Leader>gs :Git<CR> noremap <Leader>gb :Git blame<CR> noremap <Leader>gd :Gvdiffsplit<CR> noremap <Leader>gr :GRemove<CR> " session management nnoremap <leader>so :OpenSession<Space> nnoremap <leader>ss :SaveSession<Space> nnoremap <leader>sd :DeleteSession<CR> nnoremap <leader>sc :CloseSession<CR> "" Tabs nnoremap <Tab> gt nnoremap <S-Tab> gT nnoremap <silent> <S-t> :tabnew<CR> "" Set working directory nnoremap <leader>. :lcd %:p:h<CR> "" Opens an edit command with the path of the currently edited file filled in noremap <Leader>e :e <C-R>=expand("%:p:h") . "/" <CR> "" Opens a tab edit command with the path of the currently edited file filled noremap <Leader>te :tabe <C-R>=expand("%:p:h") . "/" <CR> "" fzf.vim set wildmode=list:longest,list:full set wildignore+=*.o,*.obj,.git,*.rbc,*.pyc,__pycache__ let $FZF_DEFAULT_COMMAND = "find * -path '*/\.*' -prune -o -path 'node_modules/**' -prune -o -path 'target/**' -prune -o -path 'dist/**' -prune -o -type f -print -o -type l -print 2> /dev/null" " The Silver Searcher if executable('ag') let $FZF_DEFAULT_COMMAND = 'ag --hidden --ignore .git -g ""' set grepprg=ag\ --nogroup\ --nocolor endif " ripgrep if executable('rg') let $FZF_DEFAULT_COMMAND = 'rg --files --hidden --follow --glob "!.git/*"' set grepprg=rg\ --vimgrep command! -bang -nargs=* Find call fzf#vim#grep('rg --column --line-number --no-heading --fixed-strings --ignore-case --hidden --follow --glob "!.git/*" --color "always" '.shellescape(<q-args>).'| tr -d "\017"', 1, <bang>0) endif cnoremap <C-P> <C-R>=expand("%:p:h") . "/" <CR> nnoremap <silent> <leader>b :Buffers<CR> nnoremap <silent> <leader>e :FZF -m<CR> "Recovery commands from history through FZF nmap <leader>y :History:<CR> " snippets let g:UltiSnipsExpandTrigger="<tab>" let g:UltiSnipsJumpForwardTrigger="<tab>" let g:UltiSnipsJumpBackwardTrigger="<c-b>" let g:UltiSnipsEditSplit="vertical" " ale let g:ale_linters = {} " Tagbar nmap <silent> <F4> :TagbarToggle<CR> let g:tagbar_autofocus = 1 " Disable visualbell set noerrorbells visualbell t_vb= if has('autocmd') autocmd GUIEnter * set visualbell t_vb= endif "" Copy/Paste/Cut if has('unnamedplus') set clipboard=unnamed,unnamedplus endif noremap YY "+y<CR> noremap <leader>p "+gP<CR> noremap XX "+x<CR> if has('macunix') " pbcopy for OSX copy/paste vmap <C-x> :!pbcopy<CR> vmap <C-c> :w !pbcopy<CR><CR> endif "" Buffer nav noremap <leader>z :bp<CR> noremap <leader>q :bp<CR> noremap <leader>x :bn<CR> noremap <leader>w :bn<CR> "" Close buffer noremap <leader>c :bd<CR> "" Clean search (highlight) nnoremap <silent> <leader><space> :noh<cr> "" Switching windows noremap <C-j> <C-w>j noremap <C-k> <C-w>k noremap <C-l> <C-w>l noremap <C-h> <C-w>h "" Vmap for maintain Visual Mode after shifting > and < vmap < <gv vmap > >gv "" Move visual block vnoremap J :m '>+1<CR>gv=gv vnoremap K :m '<-2<CR>gv=gv "" Open current line on GitHub nnoremap <Leader>o :.GBrowse<CR> "***************************************************************************** "" Custom configs "***************************************************************************** " go " vim-go " run :GoBuild or :GoTestCompile based on the go file function! s:build_go_files() let l:file = expand('%') if l:file =~# '^\f\+_test\.go$' call go#test#Test(0, 1) elseif l:file =~# '^\f\+\.go$' call go#cmd#Build(0) endif endfunction let g:go_list_type = "quickfix" let g:go_fmt_command = "goimports" let g:go_fmt_fail_silently = 1 let g:go_highlight_types = 1 let g:go_highlight_fields = 1 let g:go_highlight_functions = 1 let g:go_highlight_methods = 1 let g:go_highlight_operators = 1 let g:go_highlight_build_constraints = 1 let g:go_highlight_structs = 1 let g:go_highlight_generate_tags = 1 let g:go_highlight_space_tab_error = 0 let g:go_highlight_array_whitespace_error = 0 let g:go_highlight_trailing_whitespace_error = 0 let g:go_highlight_extra_types = 1 autocmd BufNewFile,BufRead *.go setlocal noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 augroup completion_preview_close autocmd! if v:version > 703 || v:version == 703 && has('patch598') autocmd CompleteDone * if !&previewwindow && &completeopt =~ 'preview' | silent! pclose | endif endif augroup END augroup go au! au Filetype go command! -bang A call go#alternate#Switch(<bang>0, 'edit') au Filetype go command! -bang AV call go#alternate#Switch(<bang>0, 'vsplit') au Filetype go command! -bang AS call go#alternate#Switch(<bang>0, 'split') au Filetype go command! -bang AT call go#alternate#Switch(<bang>0, 'tabe') au FileType go nmap <Leader>dd <Plug>(go-def-vertical) au FileType go nmap <Leader>dv <Plug>(go-doc-vertical) au FileType go nmap <Leader>db <Plug>(go-doc-browser) au FileType go nmap <leader>r <Plug>(go-run) au FileType go nmap <leader>t <Plug>(go-test) au FileType go nmap <Leader>gt <Plug>(go-coverage-toggle) au FileType go nmap <Leader>i <Plug>(go-info) au FileType go nmap <silent> <Leader>l <Plug>(go-metalinter) au FileType go nmap <C-g> :GoDecls<cr> au FileType go nmap <leader>dr :GoDeclsDir<cr> au FileType go imap <C-g> <esc>:<C-u>GoDecls<cr> au FileType go imap <leader>dr <esc>:<C-u>GoDeclsDir<cr> au FileType go nmap <leader>rb :<C-u>call <SID>build_go_files()<CR> augroup END " ale :call extend(g:ale_linters, { \"go": ['golint', 'go vet'], }) "***************************************************************************** "***************************************************************************** "" Include user's local vim config if filereadable(expand("~/.vimrc.local")) source ~/.vimrc.local endif "***************************************************************************** "" Convenience variables "***************************************************************************** " vim-airline if !exists('g:airline_symbols') let g:airline_symbols = {} endif if !exists('g:airline_powerline_fonts') let g:airline#extensions#tabline#left_sep = ' ' let g:airline#extensions#tabline#left_alt_sep = '|' let g:airline_left_sep = '▶' let g:airline_left_alt_sep = '»' let g:airline_right_sep = '◀' let g:airline_right_alt_sep = '«' let g:airline#extensions#branch#prefix = '⤴' "➔, ➥, ⎇ let g:airline#extensions#readonly#symbol = '⊘' let g:airline#extensions#linecolumn#prefix = '¶' let g:airline#extensions#paste#symbol = 'ρ' let g:airline_symbols.linenr = '␊' let g:airline_symbols.branch = '⎇' let g:airline_symbols.paste = 'ρ' let g:airline_symbols.paste = 'Þ' let g:airline_symbols.paste = '∥' let g:airline_symbols.whitespace = 'Ξ' else let g:airline#extensions#tabline#left_sep = '' let g:airline#extensions#tabline#left_alt_sep = '' " powerline symbols let g:airline_left_sep = '' let g:airline_left_alt_sep = '' let g:airline_right_sep = '' let g:airline_right_alt_sep = '' let g:airline_symbols.branch = '' let g:airline_symbols.readonly = '' let g:airline_symbols.linenr = '' endif
参考情報
おすすめ書籍
過去の記事については、以下のページからご参照下さい。
いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。