🔥

neovim使いこなす

2022/07/23に公開

※以下macのcommand をctrlに設定しているため海原雄山以外は考慮が必要

windowの操作

やりたいこと 操作
現在のウィンドウを最小化 window + 矢印↓

iterm2,Windows Terminalの画面分割

やりたいこと iterm2(mac) Windows Terminal(windows)
新規タブの作成 ctrl + t ctrl + shift + t
タブの複製 -(別途設定) ctrl + shift + d
タブを閉じる ctrl + w ctrl + shift + w
タブの切り替え ctrl + [ ctrl + tab
タブの切り替え(逆方向) ctrl + ] ctrl + shift + tab
タブを指定して切り替え - ctrl + alt + 数値
画面を横方向に分割 ctrl + d alt + shift + +
画面を縦方向に分割 ctrl + shift + d alt + shift + –
分割画面の移動 ctrl + [ alt + 矢印キー
分割画面の幅調整 - alt + shift + 矢印キー
カーソル位置をいい感じに真ん中へ zz -

新規メモテキストファイル作成から保存の流れ

nvim > i mode > 文字打ち込む > esc > :w <textfilename.拡張子 >エンター

基本操作

やりたいこと 操作
v ビジュアルモード複数行選択等
i インサートモード(カーソルの1つ前から挿入開始
a インサートモード(カーソルの1つ後ろの箇所から挿入開始
: コマンドモード
:w 保存
:!! ひとつ前のコマンドと同じコマンドを行う
view <FileName> 閲覧モードで開く
.(ドット) ノーマルモードで前にやった作業を繰り返してくれる

削除系・置換

やりたいこと 操作
r 一文字置換
R エスケープ押すまで順に置換していく
x 一文字削除
dd 1行削除
u 操作取り消し(control+zみたいな
command + r uの取り消し
dw 単語の削除
2dd 2行削除
rm FileName ファイルの削除

コピー&ペースト

やりたいこと 操作
yy 一行コピー
p カーソル下にペースト
P(大文字) 現在行にペースト

ファイル実行(コマンドモード)

やりたいこと 操作
:!<実行したいコマンド> (例:python3 test.pyやlsも可能)insertモードでコマンド実行
:!! ひとつ前のコマンドももう一度実行

移動

やりたいこと 操作
:set number 行番号表示
:10 10行目に移動
$ 行末
0 先頭移動
gg ファイルの先頭に移動
G ファイルの最後に移動
command + G 移動前に戻る
^ インデントの先頭
{ 段落ごとに移動
[ セクション毎に移動

検索と置換

やりたいこと 操作
:/<検索文字> 該当したものがハイライトされる
n nextとしてハイライトかかった物モノに順にカーソルがかかる
R 一括置換
:%s/<変換したい文字>/<変換後の文字>/g 一括置換
:%s/<変換したい文字>/<変換後の文字>/gc 一括置換を確認しながら行う
:noh ハイライトを消す

インデント

やりたいこと 操作
o 選択行の下に空白行追加
O(大文字) 選択行に空白行追加
J 連結したい行にカーソルで下の行と連結
shift + > インデントの追加

Vimでフォルダ構成一覧表示

やりたいこと 操作
:NERDTREE フォルダ構成一覧階層表示
command + w w ファイルに入ってからフォルダ階層に戻る
command + n NERDTreeが開く(ショートカットキー登録済み)

ファイルの曖昧検索

やりたいこと 操作
vim > FZF 直下のディレクトリのファイルを曖昧検索できる

gitコマンドを使う

やりたいこと 操作
:Git blame ※blameは誰が変更したか確認できるcommand(その他commandも可能)

gitの差分(+_)を表示

vim-gitgutter入れて保存(:w)するだけで表示される

言語気にせず複数行コメントアウト

やりたいこと 操作
v > gc 複数行言語に合わせてコメントアウトされる

tmuxで画面分割(iterm2のみ設定済み)

やりたいこと 操作
tmux 起動
TMUX='' tmux セッションの追加(tsnで可能にzshのエイリアス設定済み)
tns TMUX='' tmuxのエイリアスを登録済み
command + b d デタッチ
tmux ls セッションの一覧
tmux a -t session名 アタッチ
command+b s 0 or 1 セッションの一覧から選択
tumux kill-server tmuxのシャットダウン
command + b % 画面横分割
command + b " 画面上下分割
command + b x ペイン(画面)の破壊(command dでもok)
command + b o ペイン移動

※tmuxをビジュアルモードにしてコピペするは断念(macならいらないね)

zsh

やりたいこと 操作
cat 対象のファイル >> 追記対象のファイル ファイルの中身を別ファイルへ追記
mv 対象ファイル 変換後の名前 ファイル名を変更
cp 対象のファイル 複製後のファイル名 ファイルの複製
ls -t -1 lsでファイル表示を更新日時順に1つずつ並べて表示

参考

https://www.udemy.com/course/vim-tmux-zsh/learn/lecture/27876468#overview

今後のタスク

Linuxのフォルダ構成(/tmpには再起動したら消えてもいいファイル入れるとか(一時的メモとか

設定ファイル(mac2022-07-23時点)

neovimインストール
vimplugインストール
oh-my-zshのインストール
は同一環境を作るのには必須

zshの設定変更反映
source ~/.zshrc

neovim設定ファイル

view ~/.config/nvim/init.vim
set shell=/bin/zsh
set shiftwidth=4
set tabstop=4
set expandtab
set textwidth=0
set autoindent
set clipboard=unnamed
syntax on

call plug#begin()
Plug 'preservim/nerdtree'
Plug 'ntk148v/vim-horizon'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'neoclide/coc.nvim', {'branch': 'release'}
call plug#end()

" let g:gitgutter_highlight_lines = 1

nnoremap <C-n> :NERDTree<CR>
" 練習としてvim-horizon入れてみた(色変わるだけ)
" if you don't set this option, this color might not correct
" set termguicolors
" colorscheme horizon
" lightline
" let g:lightline = {}
" let g:lightline.colorscheme = 'horizon'

zshの設定ファイル

view ~/.zshrc
alias vi="nvim"
alias vim="nvim"
alias view="nvim -R"
alias tsn="TMUX='' tmux"

setopt no_beep

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

※windows(WSL2>ubuntu-20.04)のみoh-my-zsh入れている(入れてカレントディレクトリ表示
※windowsのwsl2のマウント元のユーザーディレクトリ直下にzshrc設置
※zshrcでailasまとめてる source zshrcで反映
/mnt/c/Users/username/zshrc
/home/username/zshrc
両方に設定済み
※oh-my-zshの影響でディレクトリが表示されなくなることもある(rm -rf .oh-my-zshで手順にそって再インストール)

文字化け対応

windowsでvisual studioで編集したテキストファイルを、wsl2の/home/KaibaraYuuzanに配置したい際に文字化け発生

  1. :set fenc?
    対象のファイルの文字コードを確認(Shift_JISの場合はfileencoding=latin1)
  2. :e ++enc=shift-jis
    shift-jisでファイルを開き直す
  3. :set fenc=utf-8
    文字コードをutf-8に変更する
  4. :wq
    上書き保存してvimを終了する
    hacknote参考

Discussion