Neovimのメモ

はじめに
普段は前のように Changelog(もはや Markdown) にメモしているがとりあえずまとめておこうと思い書いた。メモなので項目もバラバラで訳には立たない。
とりあえず init.vim
"Vim Plug """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""call plug#begin('~/.local/share/nvim/plugged')
Plug 'dense-analysis/ale'Plug 'ayu-theme/ayu-vim'Plug 'rbgrouleff/bclose.vim'Plug 'neoclide/coc.nvim', {'branch': 'master'}Plug 'junegunn/fzf', {'dir': '~/.fzf_bin', 'do': './install --all'}Plug 'yuki-yano/fzf-preview.vim', { 'branch': 'release/rpc' }Plug 'lambdalisue/fern.vim', {'branch': 'main'}Plug 'lambdalisue/gina.vim'Plug 'sainnhe/gruvbox-material'Plug 'itchyny/lightline.vim'Plug 'yegappan/mru'Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}Plug 'nvim-lua/plenary.nvim'Plug 'mechatroner/rainbow_csv'Plug 'nvim-telescope/telescope.nvim'Plug 'osyo-manga/vim-anzu'Plug 'airblade/vim-gitgutter'Plug 'bronson/vim-trailing-whitespace'Plug 'prettier/vim-prettier'
call plug#end()"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" SETTINGS
" controlset autochdirset backspace=eol,indent,startset belloff=allset clipboard=unnamedplusset hiddenset history=5000set mouse-=aset wildmenu
" filesset noswapfileset nobackupset noundofile
" formatset formatoptions+=mMset noautoindentset smartindentset textwidth=0
" searchset hlsearchset incsearchset ignorecaseset smartcaseset wrapscan
" display"set ambiwidth=doubleset cmdheight=2set colorcolumn=80set cursorlineset laststatus=2set nolistset noshowmodeset numberset rulerset signcolumn=yesset showtabline=2set shortmess+=cset showmatchset showcmdset termguicolorsset titleset wrap
" TABset expandtabset tabstop=2set shiftwidth=2set smarttabset softtabstop=2
" color"colorscheme gruvbox-material"colorscheme ayucolorscheme desert
"ESCを二回押すことでハイライトを消すnmap <silent> <Esc><Esc> :nohlsearch<CR>
" vを二回で行末まで選択vnoremap v $h
" TABにて対応ペアにジャンプnnoremap <Tab> %vnoremap <Tab> %
" j, k による移動を折り返されたテキストでも自然に振る舞うように変更nnoremap j gjnnoremap k gknnoremap <down> gjnnoremap <up> gk
" H, L で先頭と最後に移動noremap H 0noremap L $
" 検索後にジャンプした際に検索単語を画面中央に持ってくるnnoremap n nzznnoremap N Nzznnoremap * *zznnoremap # #zznnoremap g* g*zznnoremap g# g#zz
" ショートカット ,q バッファを閉じるnnoremap <silent>,q :bd<CR>
" バッファー操作nnoremap <silent>> :bnext<CR>nnoremap <silent>< :bprevious<CR>nnoremap <silent>bb :b#<CR>nnoremap <silent>bc :Bclose<CR>
" タブ操作nnoremap <silent><C-t> :tabnew <Enter>nnoremap <silent>tc :tabnew<CR>nnoremap <silent>tp :tabprevious<CR>nnoremap <silent>tn :tabnext<CR>nnoremap <silent>tx :tabclose<CR>nnoremap <C-q> :tabclose<CR>
" ターミナル表示nnoremap <silent>,t :T<CR>
" ターミナルの設定:tnoremap <Esc> <C-\><C-n>command! -nargs=* T split | wincmd j | resize 10 | terminal <args>autocmd TermOpen * startinsert
""" <Tab>で候補をナビゲートfunction! s:check_back_space() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~ '\s'endfunction
inoremap <silent><expr> <Tab> \ pumvisible() ? "\<C-n>" : \ <SID>check_back_space() ? "\<Tab>" : \ coc#refresh()
""" <Tab>で次、<S+Tab>で前inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
" map prefixlet g:mapleader = "\<Space>"nnoremap <Leader> <Nop>xnoremap <Leader> <Nop>nnoremap <Plug>(lsp) <Nop>xnoremap <Plug>(lsp) <Nop>nmap m <Plug>(lsp)xmap m <Plug>(lsp)nnoremap <Plug>(ff) <Nop>xnoremap <Plug>(ff) <Nop>nmap , <Plug>(ff)xmap , <Plug>(ff)
" ightline """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""let g:lightline = {'colorscheme' : 'wombat'}"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" fern.vim """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""nnoremap <silent> <Leader>e <Cmd>Fern . -drawer<CR>nnoremap <silent> <Leader>E <Cmd>Fern . -drawer -reveal=%<CR>"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" telescope """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Find files using Telescope command-line sugar.nnoremap <leader>ff <cmd>Telescope find_files<cr>nnoremap <leader>fg <cmd>Telescope live_grep<cr>nnoremap <leader>fb <cmd>Telescope buffers<cr>nnoremap <leader>fh <cmd>Telescope help_tags<cr>
" Using Lua functionsnnoremap <leader>ff <cmd>lua require('telescope.builtin').find_files()<cr>nnoremap <leader>fg <cmd>lua require('telescope.builtin').live_grep()<cr>nnoremap <leader>fb <cmd>lua require('telescope.builtin').buffers()<cr>nnoremap <leader>fh <cmd>lua require('telescope.builtin').help_tags()<cr>"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" COC """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" coc.nvimlet g:coc_global_extensions = ['coc-tsserver', 'coc-eslint', 'coc-prettier', 'coc-git', 'coc-fzf-preview', 'coc-lists']
inoremap <silent> <expr> <C-Space> coc#refresh()
nnoremap <silent> K <Cmd>call <SID>show_documentation()<CR>nmap <silent> <Plug>(lsp)rn <Plug>(coc-rename)nmap <silent> <Plug>(lsp)a <Plug>(coc-codeaction-cursor)
function! s:coc_typescript_settings() abort nnoremap <silent> <buffer> <Plug>(lsp)f :<C-u>CocCommand eslint.executeAutofix<CR>:CocCommand prettier.formatFile<CR>endfunction
augroup coc_ts autocmd! autocmd FileType typescript,typescriptreact call <SID>coc_typescript_settings()augroup END
function! s:show_documentation() abort if index(['vim','help'], &filetype) >= 0 execute 'h ' . expand('<cword>') elseif coc#rpc#ready() call CocActionAsync('doHover') endifendfunction
" fzf-previewlet $BAT_THEME = 'gruvbox-dark'let $FZF_PREVIEW_PREVIEW_BAT_THEME = 'gruvbox-dark'
nnoremap <silent> <Plug>(ff)l :<C-u>FzfPreviewMruFilesRpc<CR>nnoremap <silent> <Plug>(ff)F :<C-u>FzfPreviewOldFilesRpc<CR>nnoremap <silent> <Plug>(ff)B :<C-u>CocCommand fzf-preview.AllBuffers<CR>
nnoremap <silent> <Plug>(ff)r <Cmd>CocCommand fzf-preview.ProjectFiles<CR>nnoremap <silent> <Plug>(ff)s <Cmd>CocCommand fzf-preview.GitStatus<CR>nnoremap <silent> <Plug>(ff)gg <Cmd>CocCommand fzf-preview.GitActions<CR>nnoremap <silent> <Plug>(ff)b <Cmd>CocCommand fzf-preview.Buffers<CR>nnoremap <Plug>(ff)f :<C-u>CocCommand fzf-preview.ProjectGrep --add-fzf-arg=--exact --add-fzf-arg=--no-sort<Space>
nnoremap <silent> <Plug>(lsp)q <Cmd>CocCommand fzf-preview.CocCurrentDiagnostics<CR>nnoremap <silent> <Plug>(lsp)rf <Cmd>CocCommand fzf-preview.CocReferences<CR>nnoremap <silent> <Plug>(lsp)d <Cmd>CocCommand fzf-preview.CocDefinition<CR>nnoremap <silent> <Plug>(lsp)t <Cmd>CocCommand fzf-preview.CocTypeDefinition<CR>nnoremap <silent> <Plug>(lsp)o <Cmd>CocCommand fzf-preview.CocOutline --add-fzf-arg=--exact --add-fzf-arg=--no-sort<CR>"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""" ALE """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 各ツールをFixerとして登録let g:ale_fixers = {\ 'typescript': ['prettier'],\ 'typescriptreact': ['prettier'],\ 'javascript': ['prettier'],\ 'javascriptreact': ['prettier'],\ 'css': ['prettier'],\}let g:ale_sign_error = 'P>'let g:ale_sign_warning = 'P-'let g:ale_echo_msg_format = '[%linter%] %code: %%s'let g:ale_statusline_format = ['E%d', 'W%d', 'OK']
nmap <silent> <C-w>j <Plug>(ale_next_wrap)nmap <silent> <C-w>k <Plug>(ale_previous_wrap)nmap <silent>,x <Plug>(ale_fix)
let g:ale_fix_on_save = 1let g:ale_javascript_prettier_use_local_config = 1let g:ale_javascript_prettier_options = '--single-quote --trailing-comma all'"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"" treesitter """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" :TSInstall 言語名 でシンタックスハイライトファイルをインストール"lua <<EOFrequire'nvim-treesitter.configs'.setup { auto_install = true, sync_install = false, highlight = { enable = true, disable = { 'lua', 'c_sharp' }, ensure_installed = { "astro", "python", "go", "js", "ts", "json", "toml", "yml", "hcl" }, indent = { enable = true }, autotag = { enable = true } }}EOF"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""" markdown """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""set syntax=markdownau BufRead,BufNewFile *.md set filetype=markdown
let g:markdown_timeformat = "%Y-%m-%d %H:%M:%S"if has("autocmd") autocmd FileType markdown \ map ,w :call InsertMarkdownEntry()<CR>aendif
if has("autocmd") autocmd FileType markdown \ map ,o :call InsertChangeLogEntry(" ubanis")<CR>aendif
function! InsertMarkdownEntry() if strpart(getline(1), 0, 10) == "---" else let s:header = strftime("%Y-%m-%d %H:%M:%S") execute "normal gg0i---\<CR>layout: \"@layouts\/BlogPost.astro\"\<CR>title: \"メッセージレス\"\<CR>date: \"" . s:header . "\"\<CR>tags: [\"メッセージレス\"]\<CR>description: \"description\"\<CR>featured: \"/img/res.jpg\"\<CR>heroImage: \"\"\<CR>---\<CR>\<CR>" endifendfunction
function! InsertChangeLogEntry(name) if strpart(getline(1), 0, 13) == "## " . strftime("%Y-%m-%d") execute "normal ggo\<CR>\### []\<ESC>3h" else let s:header = "## " . strftime("%Y-%m-%d") execute "normal ggi\<CR>\<CR>\<ESC>kki" . s:header . "\<CR>\<CR>\### []\<ESC>3h" endifendfunction"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
config.json
{ "suggest.triggerAfterInsertEnter": true, "suggest.noselect": false, "suggest.minTriggerInputLength": 2, "suggest.acceptSuggestionOnCommitCharacter": true, "suggest.snippetIndicator": " ►", "suggest.enablePreview": true, "coc.preferences.hoverTarget": "float", "coc.preferences.formatOnType": true, "coc.preferences.formatOnSaveFiletypes": [ "css", "html", "markdown", "typescriptreact", "typescript", "javascriptreact", "javascript", "json", "graphql" ], "tsserver.formatOnType": true, "eslint.autoFixOnSave": true, "eslint.filetypes": [ "javascript", "javascriptreact", "typescript", "typescriptreact" ],}
Fern の操作方法
現状では Space + e
で開く。以下操作方法の一部
コマンド | 動作 |
---|---|
l | フォルダを開く |
h | フォルダを閉じる |
Return | フォルダに潜る |
Ctr-h | フォルダを 1 階層上に戻る |
o | ファイル若しくはフォルダを開く |
? | コマンドのヘルプを開く |
nvim coc で yarn install しろとか言われた場合
Neovim の coc があるフォルダ ~/.local/share/nvim/plugged/coc.nvim
以下などに行き
coc フォルダへ移動してから以下のコマンドを実行する。
npx yarn install --frozen-lockfile
windows 用 Neovim
powershell で以下を実行
iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim | ni "$(@($env:XDG_DATA_HOME, $env:LOCALAPPDATA)[$null -eq $env:XDG_DATA_HOME])/nvim-data/site/autoload/plug.vim" -Force
mkdir %USERPROFILE%\AppData\Local\nvim
以下のファイルを編集する
call plug#begin('~/.vim/plugged')
フォント設定
Guifont! Cica:h18
以下を init.vim に書いても良い
set guifont=Cica:h18
pipenv 内での pylint
neovim で pylint が no module を返すときは pipenv install pylint をしていないため なので pipenv install pylint をそのフォルダ内で行うこと