2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

vim の hjkl って左から順に ←↓↑→ ですね。DanceDanceRevolution1 と同じですね!
使い始めの頃から特に迷わなかった理由が判明しました。

小話はさておき、neovim に移行してしばらく経ったので init.vim を晒しておく。

init.vim 全体は後ろの方に記載。

nvim の init.vim は普通にインストールしていれば ~/.config/nvim/init.vim にあるはず。

使用イメージ

以下の操作を行った時の録画。

  • ファイルを開いて、関連ファイルを隣に開く
  • README.md のコマンドを実行する

タブ・ウインドウ分割とターミナルモードの使用感がこんな感じになる。

nvim_1.gif

詳細な動きとしては

  • nvim を開く
    • ファイルツリーからファイルを開く
    • 画面分割
    • 右側に関連ファイルを開く
    • 適当に文字列を検索
    • 右側でも検索
  • タブを増やす
    • README を開く
    • ターミナルを出してディレクトリ移動
    • README を開く
    • コマンドをコピペして実行

をやっている。

お気に入りポイント

タブとウィンドウ分割を多用するので、<space> + h/j/k/l でウィンドウ移動、
<space> + y/u/i/o でタブ操作ができるようにしている。

以前は <space> + h/j/k/l でウィンドウ移動だけ設定していたが、
「指を一個上にしたらタブ移動になると嬉しいな」でタブ操作のリマップを増やした。とても快適。

ウィンドウ分割は :vs:sp で、もともと短いのでそのまま使用。

その他便利設定

よくある設定

  • <leader> キーを設定する
    • <space> に設定している
  • ターミナルモードから <esc> でノーマルモードに戻れるようにする
    • デフォルトのコマンドはなんであんなに複雑なんだろうか
  • コメントアウトのリマップ (プラグインの機能)
    • 他のエディタだと ctrl + / が多いので、それに近い <leader> + / に設定。
    • ただし、一行でもビジュアルモードで選択が必要。

その他には、<space> + v でタブ文字を探しやすくしたり、
全角スペースを色付けしたり、業務上ちょっと必要だったバイナリ編集用のコマンドとかを
入れたりしている。

最近知ったが、環境変数が使える。

お気に入りポイント抜粋

" ウィンドウ移動
nnoremap <leader>h <c-w>h
nnoremap <leader>j <c-w>j
nnoremap <leader>k <c-w>k
nnoremap <leader>l <c-w>l

" タブ移動
nnoremap <leader>y gT
nnoremap <leader>o gt
nnoremap <leader>i :tabnew<enter>
nnoremap <leader>u :-tabnew<enter>

" プラグイン関係
nnoremap <leader>n :NvimTreeToggle<enter>
map <leader>/ gc

" 保存
nnoremap <leader>s :w<enter>

" ターミナルモード設定
command! -nargs=* Term split | terminal <args>
nnoremap <leader>t :Term<enter>
tnoremap <Esc> <c-\><c-n>

lua ファイルでの設定について

vim の設定ファイルが .vimrc で、nvim では init.vim になるが、nvim では
lua 言語がサポートされていて init.lua で設定することもできる。

.vim から .lua を読み込むことも、 .lua で vim コマンドを使うこともできるので、無理やり変換する必要はない。

筆者は init.vim を .vimrc からほぼそのまま移行して、一部のプラグインだけ lua ファイルで設定している。

init.vim から .vimrc を呼び出して vim と neovim の設定を共通化することもできるが、vim は素のままにしておくことにした。

init.vim 全体

syntax on
filetype plugin indent on
set autoindent
set expandtab
set tabstop=4
set softtabstop=4
set shiftwidth=4
set backspace=2
set belloff=all
set listchars=eol:$,tab:>.,trail:_
set mouse=
" set number
" set list
" set bin noeol
" set ambiwidth=double

" let g:loaded_netrw = 1
" let g:loaded_netrwPlugin = 1

scriptencoding utf-8

" packer settings
luafile ~/.config/nvim/plugins/packer.lua

" load plugin settings
luafile ~/.config/nvim/plugins/settings/nvim-tree.lua

let mapleader="\<space>"
nnoremap U <c-r>

nnoremap H ^
nnoremap J 10j
nnoremap K 10k
nnoremap L $
vnoremap H ^
vnoremap J 10j
vnoremap K 10k
vnoremap L $

nnoremap <leader>h <c-w>h
nnoremap <leader>j <c-w>j
nnoremap <leader>k <c-w>k
nnoremap <leader>l <c-w>l

nnoremap <leader>y gT
nnoremap <leader>o gt
nnoremap <leader>i :tabnew<enter>
nnoremap <leader>u :-tabnew<enter>

nnoremap <leader>J :vs<enter>
nnoremap <leader>L :sp<enter>
nnoremap <leader>wh <c-w><
nnoremap <leader>wj <c-w>-
nnoremap <leader>wk <c-w>+
nnoremap <leader>wl <c-w>>
nnoremap <leader>ww <c-w>=

nnoremap <leader>s :w<enter>
nnoremap <c-s> :w<enter>
nnoremap <leader>n :NvimTreeToggle<enter>
map <leader>/ gc

nnoremap <leader>v :set fileformat=unix<enter>:set list!<enter>
nnoremap <leader>x :%!xxd
" nnoremap <leader>X :%!xxd -r
nnoremap <leader>z zi

" terminal settings
command! -nargs=* Term split | terminal <args>
nnoremap <leader>t :Term<enter>
tnoremap <Esc> <c-\><c-n>

" TIPS: command to replace with check: :%s/<object>/<target>/gc

" for tqdm in python. (vim version >= 8.2)
call setcellwidths([[0x2588, 0x258f, 1]])

" plugins

" ale
let g:ale_sign_column_always = 0
let g:ale_lint_on_text_changed = 'never'
let g:ale_lint_on_insert_leave = 0
let g:ale_lint_on_enter = 0

" github copilot
" let g:copilot_node_command = '/home/ubuntu/.asdf/shims/node'
let g:copilot_proxy = $HTTP_PROXY
let g:copilot_filetypes = {
    \ '*': v:true,
    \ }

" settings for vscode-neovim
if exists('g:vscode')
    let g:copilot_filetypes = {
        \ '*': v:false,
        \ }
else
    " orginary neovim
endif

" each setting for filetype could be moved to another file.
augroup fileTypeIndent
    autocmd!
    autocmd BufNewFile,BufRead *.yaml setlocal tabstop=2 softtabstop=2 shiftwidth=2 foldmethod=indent
    autocmd BufNewFile,BufRead *.yml setlocal tabstop=2 softtabstop=2 shiftwidth=2 foldmethod=indent
    autocmd BufNewFile,BufRead *.sh setlocal tabstop=2 softtabstop=2 shiftwidth=2 foldmethod=indent
    autocmd BufNewFile,BufRead *.ts setlocal tabstop=2 softtabstop=2 shiftwidth=2
    autocmd BufNewFile,BufRead *.tf set filetype=terraform
    autocmd BufNewFile,BufRead *.sql setlocal filetype=sql commentstring=--\ %s
augroup END

" colorize ideographic space
augroup highlightIdegraphicSpace
    autocmd!
    autocmd Colorscheme * highlight IdeographicSpace term=underline ctermbg=DarkGreen guibg=DarkGreen
    autocmd VimEnter,WinEnter * match IdeographicSpace / /
augroup END

colorscheme desert

packer.lua

ついでにプラグインマネージャー packer の設定も。こちらはあまりカスタマイズしていない。

local ensure_packer = function()
  local fn = vim.fn
  local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim'
  if fn.empty(fn.glob(install_path)) > 0 then
    fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
    vim.cmd [[packadd packer.nvim]]
    return true
  end
  return false
end

local packer_bootstrap = ensure_packer()

return require('packer').startup(function(use)
  use 'wbthomason/packer.nvim'
  use 'tpope/vim-commentary'
  use 'tpope/vim-fugitive'
  use 'dense-analysis/ale'
  use 'github/copilot.vim'
  use 'hashivim/vim-terraform'
  use {
      'nvim-tree/nvim-tree.lua',
      requires = 'nvim-tree/nvim-web-devicons',
      wants = 'nvim-web-devicons',
      config = function()
          require('nvim-web-devicons').setup {}
          require('nvim-tree').setup({
          })
      end
  }

  -- Automatically set up your configuration after cloning packer.nvim
  -- Put this at the end after all plugins
  if packer_bootstrap then
    require('packer').sync()
  end
end)
  1. 通称DDR またはダンレボ。1999年に一世を風靡した、リズムに合わせてパネルを踏むアーケードゲーム。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?