つれづれなるままに

雑多にやります

江ノ島観光

夜行バスでは全く眠れず少し汗もかいてしまったため横浜駅から上星川駅に向かい天然温泉満天の湯でさっぱりしたあと電車やバスを乗り継いで江ノ島に。

 

江ノ島海岸で降りて歩いて橋渡ればよかったなと思ったけど思った時には江ノ島についていた。

f:id:yg_siro:20220626122716j:image

f:id:yg_siro:20220626122811j:image

奥に進むと江ノ島エスカレーターの入り口。

そこで1000円のフリーパスを購入してエスカレーターを利用しながら上に向かってみる。

f:id:yg_siro:20220626123453j:image

途中に神社がいくつかあり参拝しながら頂上につくと庭園とシーキャンドル。

f:id:yg_siro:20220626123821j:image

庭園ではリスがいた。

木の上だからか近づいても全然逃げない。

野生のリスいるんだね。

北海道の摩周湖にもいたけどあっちは餌付けされてて野生?って感じだった。

f:id:yg_siro:20220626124254j:image

(北海道のリス)

 

岩屋まで進むまでにレストランが何軒かあってどこに入ろうか迷ったけど、お腹もそこまですいてなく岩屋の帰りによれば良いやと思ってた。

 

・・・これが間違いだときづくのは後の話。

 

岩屋の中は低い洞窟で頭がぶつかる高さ

こんな所の奥に石の彫像とかあって密教みたいと思ったのは内緒。

 

今は電灯があるからいいけど無い時どうしてたんだろう?

あの吹けば消える蝋燭使ってたの?

 

岩屋を抜けると海岸に戻りの遊覧船。

正直なところ歩き疲れて坂道を戻るのはきついので江ノ島で食事をすることなく対岸に戻ってしまった。

もし江ノ島を観光することがあるなら岩屋に行く前に食事をしとこうね。美味しそうな料理たくさんあったから。

f:id:yg_siro:20220626125217j:image
f:id:yg_siro:20220626125220j:image

対岸に戻り入り口で案内していたおじさんに水族館の位置を聞いて向かう。

水族館は平日だというのに子供がたくさん。学校の行事っぽい。

 

入り口で荷物預けて身軽になった状態でいろいろ見て回る。海の波を再現してたり巨大な水槽があったりかなり見ごたえはあったね。

もしフリーチケットを江ノ島で購入していたら少し割引きにもなるので観光の後に向かうのはありだと思う。

f:id:yg_siro:20220626125729j:image

水族館を堪能して出口に到着。

出口のお兄さんに入口のロッカーに荷物預けたんですけど取りに行くにはどうすればいいか聞いてみたら再入場との事。

 

再入場して荷物を取り今度は近い方の出口から出る。次があったら荷物預けるか迷う。

 

水族館出て近くの中華っぽいところが見えたので歩いて行ってみると実は駅だった。

f:id:yg_siro:20220626130646j:image

変わった駅もあるもんだ。

 

 

初めてのPull Request

VS Code Ver1.66で追加されたスニペット用の変数が公式のドキュメントになかなか追加されないので初めて自分のでないリポジトリにプルリクエストしてみた。

朝起きて確認してみると既にマージ済。やった。

公式のドキュメントは次のアップデート時に更新されるかな?

2022/06/24 ドキュメントも更新されたの確認

VSCodeのスニペットについて

VS Code拡張機能開発の練習でC++スニペット拡張機能として作成して去年あたりに公開した。

marketplace.visualstudio.com

標準のC++拡張でもスニペットは入っているけど足りない部分を補う感じで作成しているつもり。

作成する中でスニペットの便利機能を調べたのでまとめてみる。

便利機能

もしも拡張機能でなく自分独自にスニペットを作成したいならこんな便利な機能があるよというのを何選か。

ファイル名やフォルダ名、現在の月日、乱数、UUID、選択範囲、クリップボードなどは変数で定義されている。

変数は初期値として使用したり正規表現で置換して使用することが可能です。

変数一覧→Snippets in Visual Studio Code

変数一覧に記載がありませんがタブストップの内容も変数となります。
変数名としてはタブストップのインデックスです(タブストップが$1なら変数名は1です)

変数を正規表現で置換する際に大文字、小文字などに変換可能。

正規表現の構文は以下の通り。

${変数/正規表現/フォーマット文字列/正規表現オプション}

正規表現で置換後のフォーマット文字列でマッチした内容を$1などで参照できる。
その$1${1:/upcase}などで大文字にしたり小文字にしたりすることが可能。

使えるオプションは以下の通り

  • /upcase 大文字に変更
  • /downcase 小文字に変更
  • /capitalize キャピタライズに変換(先頭のみ大文字)
  • /camelcase キャメルケースに変換(先頭は小文字で文字の区切りの頭だけ大文字)
  • /pascalcase パスカルケースに変換(先頭および区切りの頭だけ大文字)

※仕様が記載されていないので/capitalize/camelcase、/pascalcase`がどこを区切り文字と判断するか不明

同じインデックスのタブストップの内容は同期される。

複数の同じインデックスのタブストップの内容は最初の一つだけ設定すればOK。

//C++ include guards
//ファイル名を大文字に変換

//before
#ifndef ${1:${TM_FILENAME/(?:(\\w+)(\\.)?)/${1:/upcase}${2:+_}/gi}}
#define ${1:${TM_FILENAME/(?:(\\w+)(\\.)?)/${1:/upcase}${2:+_}/gi}}
$0
#endif // ${1:${TM_FILENAME/(?:(\\w+)(\\.)?)/${1:/upcase}${2:+_}/gi}}

//after
#ifndef ${1:${TM_FILENAME/(?:(\\w+)(\\.)?)/${1:/upcase}${2:+_}/gi}}
#define $1
$0
#endif // $1

ショートカットキーから呼び出せる。

Snippets in Visual Studio Code

//keybindings.json内に直接スニペットを記載する
{
  "key": "cmd+k 1",
  "command": "editor.action.insertSnippet",
  "when": "editorTextFocus",
  "args": {
    "snippet": "console.log($1)$0"
  }
}

//keybindings.jsonから登録したスニペットを呼び出す。
{
  "key": "cmd+k 1",
  "command": "editor.action.insertSnippet",
  "when": "editorTextFocus",
  "args": {
    "langId": "csharp",
    "name": "myFavSnippet"
  }
}

選択範囲を変換するスニペットの場合はこの方法か、コマンドパレットからスニペットを挿入を選択するしか方法がありません。

不満点

設定ファイルが存在しない。設定ファイルで変数とか定義できるともっと便利になるのにと思う。

追記

VSCodeの公式ページのスニペットの変数一覧でVer1.66で追加された変数CURSOR_INDEXCURSOR_NUMBERが2022/06/21段階でなぜかまだ追加されていない。

Snippets in Visual Studio Code
Visual Studio Code March 2022