🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

820閲覧

VS Codeで、同一シンボルにマルチカーソルを置きたい

gakuburu

総合スコア125

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/02/28 13:57

編集2021/03/22 03:35

前提・実現したいこと

vscodeの機能について教えてください。

同一シンボルの名前の変更はF2で出来ますが、
関数の引数を一括編集したいので、カーソルを置きたいです。

テスト用コード

js

1function fn(a, b, c) { }//f1 2fn(1, 2, 3) //f1 3function hoge() { 4 function fn() { }//f2 5 fn() //f2 6} 7fn(1, 2, 3) //f1

↑を↓みたいな感じにしたいです。※■がカーソル

js

1function ■fn(a, b, c) { }//f1 2■fn(1, 2, 3) //f1 3function hoge() { 4 function fn() { }//f2 5 fn() //f2 6} 7■fn(1, 2, 3) //f1

やったこと

全ての出現箇所の変更 ⌘F2では、別シンボルも対象になってしまう。
F7や、右クリックfind all references が近い感じなんですが、目的な作業はできませんでした。
※追記
⌘D別シンボルも対象になってしまう。

環境

osx vscode 1.53.2

機能の調べ方

F1open keyboard shortcutscursorと入力してフィルタリングして探す

回答などからの結論

そのような機能は無さそう、と分かりました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

そもそも論かもしれませんが、引数の内容を一括して「同じように」書き換えることができる状況であれば、関数定義の時点でデフォルト引数を指定するなど、別の対応をすべきかもしれません。

該当のショートカットがないということは、おそらく上手くやる人たちの大半にとっては問題がないということであり、ある程度の回避方法が確立されていると考えられます。

すでにご存じかもしれませんが、VS Code で使えるショートカットキーについては以下の記事によくまとめられています。ここに載っていなければ拡張機能を自作するほかないと考えても良いです。

VS Code の便利なショートカットキー - Qiita
https://qiita.com/12345/items/64f4372fbca041e949d0

ちなみに公式ではこのようになっています。

あまり詳しくは確認していませんが、ご希望のショートカットは少なくとも単体では存在しないように見受けられます。

話を戻します。

そのような編集作業が頻発するなら、関数の設計自体を見直す方が、総合的な作業コストを下げる良い選択になるのではないか、というのが私の意見でした。
もっとも、ほかのコードやステークホルダーとの兼ね合いもあり、なかなか根本的なリファクタリングが難しいケースもあるかと思います。その場合の苦労は、こちらではお察しするほかありません。

つまりやはり、ミスの起こりやすい手作業に時間をかけるか、あるいは、そのコードの利害関係者(例え、それが自分自身であっても)への説得に時間をかけるか、という選択に迫られるわけですが、この部分に関しては質問者様ご自身の価値観に基づいて決めていただければと思います。

さて、リファクタリング可能な場合、デフォルト引数の設定を行う以外にも方法があります。値を直接渡すのではなく、値を持ったオブジェクトを渡すという方法です。この方法の大きな利点のひとつは、渡されたオブジェクトの持つ変数、プロパティをどう調理するかを、関数の内部において集中管理できることです。

同一の記述を繰り返すということは、その部分については、どのような処理を行うかが分かっているということですから、主体である関数が自動的に実行してくれると嬉しいですよね。
私としては、そのような「よしなに」振る舞うプログラムに書き換えていくことをおすすめしたいです。

直接の回答ではありませんが、何か参考になる部分があれば幸いです。

投稿2021/03/20 03:01

編集2021/03/20 03:12
liveasnotes

総合スコア1284

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gakuburu

2021/03/22 03:21

> ほかのコードやステークホルダーとの兼ね合い 私の場合、まだ共同開発みたいなことはしたことが無いので、参考になります。 >ないということは、おそらく上手くやる人たちの大半にとっては問題がないとい 機能が無いということは、スキルの高い人たちはそんな機会がないんですかね。 > ご希望のショートカットは少なくとも単体では存在しないように見受けられます。 無さそう、という情報も参考になりました。 > 拡張機能を自作するほかないと考えても良いです。 自分のスキル的に難しそうですが考えてみます。 > 値を持ったオブジェクトを渡すという方法です この方法は好きなんですが、並びや有無も自由なんで、中のprop2だけ削除みたいなことが難しいですね。 もちろん私の設計が固まってないのが原因ですが。 回答ありがとうございます。
guest

0

command + d ではどうでしょうか?
「Add Selection To Next Find Match」で、「editor.action.addSelectionToNextFindMatch」にあるようです。

https://code.visualstudio.com/docs/getstarted/keybindings

投稿2021/03/04 08:02

yamap55

総合スコア1376

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gakuburu

2021/03/04 11:32

その方法では、同名の別シンボルも対象になってしまうんです。 回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問