動機 (2021-03-14)
- VSCodeを使っているとコマンド操作できることでも覚えるのがめんどくさくてついマウスでポチポチしてしまうので自分を律したい
- Vimってなんかかっこいいよね!
環境 (2021-03-14)
- Windows 10
インストール
scoop便利~
ターミナルはwindows terminalを使うことにした
shellとしてpowershell core(pwsh)を使う
ちなみにneovimはnightly(5.x)を使わないとwindows terminalをリサイズしたときに表示が滅茶苦茶になる
shellとしてpowershell core(pwsh)を使う
ちなみにneovimはnightly(5.x)を使わないとwindows terminalをリサイズしたときに表示が滅茶苦茶になる
設定ファイル (2021-03-14)
指定位置にinit.vimを配置するとその設定が読み込まれるらしい。Windowsでのデフォルトは
powershellなら
neovimはXDG?というものに対応していてXDG_CONFIG_HOMEを設定すれば簡単に変えられるので環境変数を設定
%LOCALAPPDATA%\nvim
のようだがなんか深くて嫌だったのでLinuxと同じ~/.config/nvim以下に設定ファイルを配置することにした。powershellなら
~
を普通にユーザーディレクトリとして認識してくれてよい。neovimはXDG?というものに対応していてXDG_CONFIG_HOMEを設定すれば簡単に変えられるので環境変数を設定
プラグインマネージャを入れる (2021-03-14)
いろいろプラグインを入れることになりそうなのでプラグインマネージャを入れる
vim-plug
https://github.com/junegunn/vim-plug
と
dein.vim
https://github.com/Shougo/dein.vim
の記事が多いように感じた
vim-plug
https://github.com/junegunn/vim-plug
と
dein.vim
https://github.com/Shougo/dein.vim
の記事が多いように感じた
なんとなくdein.vimを使ってみることにする
READMEの通りにしてインストール
READMEの通りにしてインストール
READMEの通りにinit.vimを書き換える
Vimの操作に慣れてなさ過ぎてVSCodeで編集したのは内緒
Vimの基本操作を覚える (2021-03-14)
順番が間違ってる気がするけどまあいい
Vimにはモードというものがありちょっと使ってみた感じでは通常モード、選択モード、挿入モードの三つがわかってれば一応大丈夫な感じがした。iで挿入モードぐらいは知っていたがoで改行して挿入モードとかは知らなかった。これは便利そう。
Vimにはモードというものがありちょっと使ってみた感じでは通常モード、選択モード、挿入モードの三つがわかってれば一応大丈夫な感じがした。iで挿入モードぐらいは知っていたがoで改行して挿入モードとかは知らなかった。これは便利そう。
↓以下よくつかいそうなコマンドの覚え書き
キー | 動作 |
---|---|
i | 挿入モードへ |
o | 改行して挿入モード。行中のどこにあっても途中で改行されたりしないので便利 |
a | カーソルの右の文字から挿入モード |
v | ビジュアル(選択)モード |
Ctrl + v | 矩形選択モード。行頭に文字挿入とかできる |
- 移動系
キー | 動作 |
---|---|
h j k l | ← ↓ ↑ → (慣れない・・・) |
Ctrl+D | 半画面下へ |
Ctrl+U | 半画面上へ |
gg | 最初の行へ |
G (Shift+g) | 最終行へ |
w | 次の単語へ |
b | 前の単語へ |
- コマンド
キー | 動作 |
---|---|
指定パスのファイルを開く | |
保存 | |
保存してウインドウを閉じる | |
保存しないでウインドウを閉じる | |
すべて閉じる | |
source $MYVIMRC | init.vimを再読み込みする。init.vimを修正した後にいちいち終了させなくていいから楽 |
dein.vimの設定をtomlに分離 (2021-03-14)
特に理由はないけどそうしている人が多そうだったので・・・
ちなみにこれもVSCodeで(略
Vimを設定 (2021-03-14)
Vim自体を設定する。色々調べた結果こうなった
shellのよくわかんないオプションはdeol.vimというプラグインを使うときにこうしないとpowershellがうまく動かなかった。意味は分かっていない。neovimビルトインの
プラグインの設定
プラグインの設定をするときはtomlファイルの各pluginセクションの
hook_add
に設定スクリプトを書くといいようだ。プラグインを入れる (2021-03-14)
いろいろプラグインを入れていく
ファイラ
いろいろあるみたいだけどとりあえず老舗らしいNERDTreeを入れることにした。
またvim-deviconsを使えばアイコンを表示させることができる。(Nerdフォントが必要。自分はHackGenNerdというフォントを使っているのでそのまま使えた。)
またvim-deviconsを使えばアイコンを表示させることができる。(Nerdフォントが必要。自分はHackGenNerdというフォントを使っているのでそのまま使えた。)
補完とか (2021-03-15)
自分は基本フロントエンドな開発をしていることが多いのでそっち方面に親和性が高そうなcoc.nvimを入れることにした。これ一つでシンタックスハイライトから補完までやってくれるようだ。VSCodeでも使われているLSPというものに対応していてVSCodeと同等の補完能力がある。らしい。
CocInstallコマンドを使って様々な言語に対応させることができるようだが移植性が低くなってしまうのでいろいろ探した結果
CocInstallコマンドを使って様々な言語に対応させることができるようだが移植性が低くなってしまうのでいろいろ探した結果
g:coc_global_extensions
にcocの拡張の配列を入れれば自動的にインストールしてくれることが分かったので下のようにしている。ターミナル (2021-03-15)
neovimにはターミナル機能が内蔵されているが、deol.nvimというプラグインでいろいろ高度な機能を使えるらしい。下の記事を参考にキーバインドとかを設定する。
https://qiita.com/pyama2000/items/fafdbc77f394e71a9dd8#deolnvim
これをやるとCtrl+Oでフローティングなターミナルが開くCtrl+Oはバッファの戻る操作とバッティングするのでCtrl+Tにした。このターミナルにも通常モードと挿入モードがあって通常モードでqを押してターミナルを隠せる。
https://qiita.com/pyama2000/items/fafdbc77f394e71a9dd8#deolnvim
これをやると
yarn runが動かない (2021-03-15)
vimのターミナル上でnpm scriptsをyarnで実行したときのみ.bin以下がなぜかPATHに追加されなくて実行に失敗する。
npm runやpnpm runは普通に動く。vim外のターミナルでも普通に動く
yarnのバグかなんかだろうか
npm runやpnpm runは普通に動く。vim外のターミナルでも普通に動く
yarnのバグかなんかだろうか
テーマ (2021-03-15)
VSCodeのテーマが好きなのでVSCodeのテーマを移植したcolorschemeであるvim-code-darkを入れることにした。
これがちょっと曲者でcolorshemeは諸々の読み込みが終わった後に設定しないといけないらしいのでこういうよくわかんない設定になっている。
参考↓
https://qiita.com/kawaz/items/ee725f6214f91337b42b#colorscheme-は-vimenter-に-nested-指定で遅延設定する
これがちょっと曲者でcolorshemeは諸々の読み込みが終わった後に設定しないといけないらしいのでこういうよくわかんない設定になっている。
参考↓
https://qiita.com/kawaz/items/ee725f6214f91337b42b#colorscheme-は-vimenter-に-nested-指定で遅延設定する
vim-airline (2021-03-15)
ステータスバーがいい感じになる。なんとvim-code-darkに対応しているのでそれを設定する。
git (2021-03-15)
vim-gitgutterはgitの差分がある行を表示してくれる。そう、VSCodeのようにね。
vim-fugitiveではgitのいろんな便利コマンドが用意されている。
vim-fugitiveではgitのいろんな便利コマンドが用意されている。
:Gstatus
なんかはVSCodeのgitパネルの代替になりそう。(2021-03-15)
VimでGit操作するのは初心者にはきつそうなのでいいプラグインがないか探していたところ
https://github.com/kdheepak/lazygit.nvim
を見つけた。
フローティングウインドウにlazygitが表示されるので使いやすそう
https://github.com/kdheepak/lazygit.nvim
を見つけた。
フローティングウインドウにlazygitが表示されるので使いやすそう
デバッガ (2021-03-15)
puremourning/vimspectorを使う。
プロジェクトごとに.vimspector.jsonを作成する必要があるのだがこれは書式がVSCodeのlaunch.jsonと全く同じなのでコピペして動いた。g
プロジェクトごとに.vimspector.jsonを作成する必要があるのだがこれは書式がVSCodeのlaunch.jsonと全く同じなのでコピペして動いた。g
いろいろ (2021-03-15)
(2021-03-15)
ここまでやって完成したのがこちら
見栄えの面でもVSCodeに全く負けておらずかなりイケてるように感じる。
VSCodeライクに (2021-03-15)
マウスオーバーしたときにいろいろでてくるやつ
↑こういうやつ
https://github.com/neoclide/coc.nvim/issues/869#issuecomment-501323697
これの通りにやるとほぼ同じ機能が実現できる。
Ctrl+左クリックで定義へ移動
coc.nvim公式の通りにキーマップを設定
これでgdを押せば定義へ移動できる。ほかにも参照へ移動とかいろいろできる。
(キーマップ覚えれない・・・)
(キーマップ覚えれない・・・)
雑に閉じたい
VSCodeだとファイルを保存していなくても閉じて再度開いたら保存されていない状態のままタブが復活するのだがこれはどうすればいいだろう
追記: hot exitと言うらしい
追記: hot exitと言うらしい
どうにも無理そうなのでファイル保存はあきらめてsessionだけを使うことにする
vim-workspace
https://github.com/thaerkh/vim-workspace
を使うとよさそう
vim-workspace
https://github.com/thaerkh/vim-workspace
を使うとよさそう
バッファ操作 (2021-03-15)
VSCodeではファイルを開くと自動で新しくタブが作られていたがどうもvimのタブは別ファイルというよりは別プロジェクトを開くためのもののような感じがする。
かわりにバッファというものがあって閉じたファイルも保持されているらしい。これでタブの代わりになりそう・・・?
https://zenn.dev/sa2knight/articles/e0a1b2ee30e9ec22dea9
この記事を参考に設定してみる
かわりにバッファというものがあって閉じたファイルも保持されているらしい。これでタブの代わりになりそう・・・?
https://zenn.dev/sa2knight/articles/e0a1b2ee30e9ec22dea9
この記事を参考に設定してみる