20240403 Pythonでprintした時の色を変える、pipenv使う、Neovimちょっとだけ

### Pythonで文字色を変えてみる
bashと同じような感じで、pythonでも`print("\033[数字m文字列\033[0m")`と出力すると色がつく。数字によって色がついたり、下線、打消し線、斜体になったりする。

```python:0~99まで
>>> s = ""
>>> for i in range(0,100):
...     x = str(i).zfill(2)
...     s += f"\033[{i}m{x}\033[0m "
...     if i % 16 == 0:
...         s += "\n"
... print(s)
```
結果：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3740499/c142c6a0-0f55-c418-b806-5f3fddcbac61.png)


```python:0~255(FF)まで
>>> s = ""
>>> for i in range(0,255):
...     x = format(i,"x").zfill(2)
...     s += f"\033[{i}m{x}\033[0m "
...     if i % 16 == 0:
...         s += "\n"
... print(s)
```
結果：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3740499/e7a2c78b-959e-9982-3ee6-cf14b17cc797.png)

シンプルなように見えてこの数値をゼロ埋めにする方法とか、16進にするけど`0x`をつけないようにするのとかいろいろ調べた

* ゼロ埋め： `str(100).zfill(10) -> '0000000100'`
文字列に対してゼロ埋めするので、`str(100)`として文字列に変換する
* `0x`なしの16進： `format(100, 'x') -> '64'`

16進を`0x`付きで10桁ゼロ埋めで表示するのとかちょっとめんどい気がする
たぶんこう、、、ほんとかな
```python
>>> f"0x{format(100、'x').zfill(10)}"
'0x0000000064'
```

### pipenv
Poetryが最近のおすすめ？なのかもしれないけど、ライブラリ書かないなら別にそこまで必要ないよ、という話らしい
参考：
* [複数人で使うpython製ツールの実行環境構築にpipenvを使ってみたら、とても便利だった - kapieciiのブログ](https://kapiecii.hatenablog.com/entry/2019/01/26/220000)
* [Pythonの仮想環境どれ使うべきか[初心者] #Python - Qiita](https://qiita.com/Bashi50/items/ff222f1c5a38063ed339)
* [python - What is the difference between venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenv, etc? - Stack Overflow](https://stackoverflow.com/questions/41573587/what-is-the-difference-between-venv-pyvenv-pyenv-virtualenv-virtualenvwrappe)

あとdirenvつかうと、開発対象のあるdirに移動するだけでなんかしてくれるらしい
便利そうだけど後にしよう
仮想環境というのがすごく便利そうなのだけどいまひとつどう使うのかわからない、あれもこれもやると消化不良おこしてやる気なくなるから

ここから先は仮想環境に対する妄想
pipでインストールするモジュールを標準の場所ではなくどこかに入れておいて、なんかグループ的なものとして扱う
仮想環境使ってない場合、二つプロジェクトがあったとして、こっちのプロジェクトではモジュールA,B,Cをimportしてつかう、あっちのプロジェクトではまた別のモジュールとしてB,D,Eをimportして使う、というようになったとき、A,B,C,D,Eのすべてがモジュールのインポートパスに含まれるということになる、なんだか今までそうだったから、それでいい気もするけど仮想環境がもてはやされるということはいろいろダメなんだろう
たとえばこっちプロジェクトではモジュールBのバージョンは1.0以下でないと動かない、あっちの方ではBは2.0以上じゃないとだめ、とかになると困るんだろう
そのために、こっち用とあっち用のモジュールを違う場所にいれて混ざらないように仮想環境で分ける、という理解

すでにあれこれ大量にモジュールをインストールしてるので、なんか役に立ちそうな気がする

こちらのサイトを見てすすめてみた
* [Pipenvで始める！Python開発環境構築 #Python - Qiita](https://qiita.com/naoya_s/items/d0c181c58b5c8eeb8613)

```powershell
> pip install pipenv
> pipenv install
```

とすると、Cドライブにpipenvの環境が作られる
CドライブはSSDで128GBしかなく何時だってショーテージしてるのでD:ドライブにしたい
そんな時はWORKON_HOMEという環境変数を使うと問題なし

```powershell
> $env:WORKON_HOME="D:\Users\(username)\.virtualenv"
> pipenv install
Creating a virtualenv for this project...
Pipfile: D:\Users\(username)\Documents\RR-convResource\Pipfile
Using D:/Users/(username)/scoop/apps/python/3.12.2/python.exe (3.12.2) to create virtualenv...
[=== ] Creating virtual environment...created virtual environment CPython3.12.2.final.0-64 in 746ms
  creator CPython3Windows(dest=D:\Users\(username)\.virtualenv\RR-convResource-htDn9YUF, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, via=copy, app_data_dir=C:\Users\(username)\AppData\Local\pypa\virtualenv)
    added seed packages: pip==24.0
  activators BashActivator,BatchActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

Successfully created virtual environment!
Virtualenv location: D:\Users\(username)\.virtualenv\RR-convResource-htDn9YUF                                                                               
Installing dependencies from Pipfile.lock (2110f5)...
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
```
参考：[pipenv で任意の場所の仮想環境を使う #Python - Qiita](https://qiita.com/tonluqclml/items/cd0d2a2cb0197cbaee42)

で、えーと`pipenv shell` ってやればいいのかな？
頭が痛いからまた明日にしよう

### Neovimの`q:`が異常に遅い

そういえば、Noevimの`q:`でコマンド履歴を表示するのが異常に遅い現象があった
Virtualbox上のLinuxでは遅くないが、WindowsOS上のNeovimでは遅い
たぶん15秒くらいまっていた
profileとったらtreesitterがなんかわかんないけど何回も何回も走っていた
`q:`で表示されるコマンド履歴のfiletypeは`vim`と書いてあったのでtreesitterの動作対象から外せばよいのかな？とあれこれ試したがなおらず、ダメもとで`scoop update neovim`でバージョンを最新の0.9.5にしたら治った
なんだったんだろう

けど、たまに遅くなる

バージョンアップは関係なかった
Powershell, lua, jsonのファイルを開いているとき、`q:`が遅い
NeoTree開いてないと遅い、気がする
Neotree開いていても遅いときもある、

わからん

##### 全く関係ないけど`init.lua`を置く場所の調べ方
`:echo stdpath('config')`でデフォルトの設定読み込みのパスが表示される