fix
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
Rikuoh Tsujitani 2023-12-03 18:32:39 +09:00
parent 2c85ad9ab4
commit c3670bb5bf
Signed by: riq0h
GPG key ID: 010F09DEA298C717

View file

@ -12,7 +12,7 @@ tags: ['tech']
![](/img/230.png) ![](/img/230.png)
いわゆるタスクランナー。書いたコードを即時に実行してくれる。国内では応用の幅広さから[vim-quickrun](https://github.com/thinca/vim-quickrun)がとりわけ有名だが、元がVim用のプラグインなのでNeovim特有のUIに対応していない惜しさがあった。jaq-nvimは逆にNeovimでしか動かない代わりにfloat windowで表示できる。 いわゆるタスクランナー。書いたコードを即時に実行してくれる。国内では応用の幅広さから[vim-quickrun](https://github.com/thinca/vim-quickrun)がとりわけ有名だが、元がVim用のプラグインなのでNeovim特有のUIに対応していない惜しさがあった。jaq-nvimは逆にNeovimでしか動かない代わりにfloat windowで表示できる。
設定では実行したい言語のコマンドを指定するほか、ウインドウの枠や位置を自分の好みに決められる。どうせターミナル上にいるのだからタブを開くなり、tmuxのpopupやpaneで別途実行するなりすればいいという意見もあるが僕もはそう思っていた)、多少なりともワンクッションの手間を減らせる効能は意外にあなどれない。以下に設定例を示す。 設定では実行したい言語のコマンドを指定するほか、ウインドウの枠や位置を自分の好みに決められる。どうせターミナル上にいるのだからタブを開くなり、tmuxのpaneで別途実行するなりすればいいという意見もあるが僕もはそう思っていた)、多少なりともワンクッションの手間を減らせる効能は意外にあなどれない。以下に設定例を示す。
```lua ```lua
require("jaq-nvim").setup({ require("jaq-nvim").setup({
@ -80,10 +80,10 @@ require("colorful-winsep").setup({
}) })
``` ```
実際にはstatusをよく確認すればファイルパスの違いで見分けはつかなくもないが、編集位置を高速で移動している最中に直感的な気づきを得るのはなかなか難しい。自分の好みの色でハイライトされていると一瞬の躊躇なく迷わずに済む。 実際にはstatusをよく確認すればファイルパスの違いで見分けはつかなくもないが、編集位置を高速で移動している最中に直感を得るのはなかなか難しい。他方、自分の好みの色でハイライトされていると一瞬の躊躇なく迷わずに済む。
## [nvim-dap](https://github.com/mfussenegger/nvim-dap) ## [nvim-dap](https://github.com/mfussenegger/nvim-dap)
Neovimを含む現代のエディタがLSPLanguage Server Protocolの恩恵を受けているのはよく知られた話だ。いつになく気前のよいMicrosoftがオープンソースで公開してくれているので、我々は種々のプラグインを通してそれらを利用できる。同様に、実はデバッガもDAPDebug Adapter Protocolなる仕様が公開されており、今やNeovim上でIDE並みのデバッグ環境が手に入る。 Neovimを含む現代のエディタがLSPLanguage Server Protocolの恩恵を受けているのはよく知られた話だ。いつになく気前のよいMicrosoftがオープンソースで公開してくれているので、我々は種々の仕組みを通してそれらを利用できる。同様に、実はデバッガもDAPDebug Adapter Protocolなる仕様が公開されており、今やNeovim上でIDE並みのデバッグ環境が手に入る。
恥ずかしながら僕はVimでデバッグをしようと考えたことがなかったので、初めて知った時はかなり感動した。名実ともにすべての作業がVimで行えるとなれば、大規模開発におけるエディタの立ち位置はますます見直されていくだろう。例によって設定を示す。 恥ずかしながら僕はVimでデバッグをしようと考えたことがなかったので、初めて知った時はかなり感動した。名実ともにすべての作業がVimで行えるとなれば、大規模開発におけるエディタの立ち位置はますます見直されていくだろう。例によって設定を示す。
@ -112,7 +112,7 @@ map("n", "<leader>d", ":lua require'dapui'.toggle()<CR>", { silent = true })
map("n", "<leader><leader>d", ":lua require'dapui'.eval()<CR>", { silent = true }) map("n", "<leader><leader>d", ":lua require'dapui'.eval()<CR>", { silent = true })
``` ```
この例では`<leader>;`でブレークポイントを指定する。しかし当然、これのみでは肝心のデバッガ本体が存在しないため動かない。LSPクライアントで任意の言語サーバを導入するように、デバッガも各自導入して設定しなければならない。ほぼ入れただけでよしなにやってくれるものもあれば、ひと手間が必要な場合もある。 この例では`<leader>;`などでブレークポイントを指定する。しかし当然、これのみでは肝心のデバッガ本体が存在しないため動かない。LSPクライアントで任意の言語サーバを導入するように、デバッガも各自導入して設定しなければならない。ほぼ入れただけでよしなにやってくれるものもあれば、ひと手間が必要な場合もある。
たとえばデバッガをMasonで管理していて、そっちの方を使いたい時は下記の要領でファイルパスを記さないといけない。nvim-dap-goは書かなくてもPATHが通っている外部のコマンドを勝手に実行してくれるが、nvim-dap-pythonはどちらにしても明記しないと怒られる仕様だった。 たとえばデバッガをMasonで管理していて、そっちの方を使いたい時は下記の要領でファイルパスを記さないといけない。nvim-dap-goは書かなくてもPATHが通っている外部のコマンドを勝手に実行してくれるが、nvim-dap-pythonはどちらにしても明記しないと怒られる仕様だった。
@ -134,9 +134,9 @@ require("dap-python").setup(vim.fn.stdpath("data") .. "/mason/packages/debugpy/v
なお、Javaに至ってはあまりにも設定が面倒臭すぎて動作検証を放棄してしまった。Masonのjdtlsを使ってうまくやれた人がいたら逆に教えてほしい。 なお、Javaに至ってはあまりにも設定が面倒臭すぎて動作検証を放棄してしまった。Masonのjdtlsを使ってうまくやれた人がいたら逆に教えてほしい。
## [nvim-dap-ui]() ## [nvim-dap-ui](https://github.com/rcarriga/nvim-dap-ui)
![](/img/232.gif) ![](/img/232.gif)
ここまでで一応デバッグは行える形になったが、それにしても画面がおざなりすぎるは否めない。そこでこのプラグインを入すると、keymapに応じてデバッグ専用に設えられたwindowがジャキーンと展開される。さながら変形によって破壊力が上がる武器のようだ。ただし、敏捷性<アジリティ>は落ちる。ここぞという時に展開して一撃で獲物を仕留める……そんな印象を受ける。 ここまでで一応デバッグは行える形になったが、それにしても画面がおざなりすぎるところは否めない。そこでこのプラグインを入れてやる。すると、keymapに応じてデバッグ専用に設えられたwindowが勇ましくジャキーンと展開される。さながら変形によって破壊力が上がる武器のようだ。ここぞという時に展開して一撃で獲物を仕留める……そんな印象を受ける。
```lua ```lua
require("dapui").setup({ require("dapui").setup({
@ -199,7 +199,7 @@ require("dapui").setup({
}) })
``` ```
設定項目は非常に多い。そのうち細かく変えるつもりであえてデフォルト設定を書き連ねていたが、なんだかんだで大していじっていない。見ての通り、各windowの位置関係やアイコン類を変更できる。僕はREPLの表示領域を広めにした。いずれにしてもこれでIDEと同等の作業環境が手に入る。 設定項目は非常に多い。そのうち細かく変えるつもりであえてデフォルト設定を書き連ねていたが、なんだかんだで大していじっていない。見ての通り、各windowの位置関係やアイコン類を変更できる。僕はREPLの表示領域を広した。いずれにしてもこれでIDEと同等の作業環境が手に入る。
## [Lspsaga](https://nvimdev.github.io/lspsaga/) ## [Lspsaga](https://nvimdev.github.io/lspsaga/)
@ -236,7 +236,7 @@ vim.lsp.handlers["textDocument/publishDiagnostics"] =
vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { virtual_text = false }) vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { virtual_text = false })
``` ```
もっとも、すべての制御をこれに任せるのもかえって冗長なので一部はTelescopeに割り振って機能の分散化を図っている。装飾もなるべく抑えて`lightbulb`や`winbar`は無効化している。総合的にはあまりうるさい画面にならず賢くまとまったと思う。 もっとも、すべての制御をこれに任せるのもかえって冗長なので一部はTelescopeに割り振って機能の分散化を図っている。装飾もなるべく抑えて`lightbulb`や`winbar`は無効化している。総合的にはさほどうるさい画面にならず賢くまとまったと思う。
## おわりに ## おわりに