File
> Find in Files...
⇧+⌘+F あなたはFind Results
、ファイルと強調表示された一致のリスト。ファイル名/パスまたは一致した行をダブルクリックして、右側の行でファイルを開くことができます。
キーボードを介してダブルクリックすることを正確に行う方法があるのだろうか?
Sublimesの優れたファイルスイッチング機能により、Find in Files...
。
これを行うためのプラグインが作成されているようです。簡単に見てみると、プラグインにはいくつかの追加機能があります。以下の最初の答えは機能しますが、既存のプラグインをインストールする方がはるかに簡単です。
https://sublime.wbond.net/packages/BetterFindBuffer
プラグインで実行可能。
import sublime
import sublime_plugin
import re
import os
class FindInFilesGotoCommand(sublime_plugin.TextCommand):
def run(self, edit):
view = self.view
if view.name() == "Find Results":
line_no = self.get_line_no()
file_name = self.get_file()
if line_no is not None and file_name is not None:
file_loc = "%s:%s" % (file_name, line_no)
view.window().open_file(file_loc, sublime.ENCODED_POSITION)
Elif file_name is not None:
view.window().open_file(file_name)
def get_line_no(self):
view = self.view
if len(view.sel()) == 1:
line_text = view.substr(view.line(view.sel()[0]))
match = re.match(r"\s*(\d+).+", line_text)
if match:
return match.group(1)
return None
def get_file(self):
view = self.view
if len(view.sel()) == 1:
line = view.line(view.sel()[0])
while line.begin() > 0:
line_text = view.substr(line)
match = re.match(r"(.+):$", line_text)
if match:
if os.path.exists(match.group(1)):
return match.group(1)
line = view.line(line.begin() - 1)
return None
コマンドfind_in_files_goto
を使用してキーバインドを設定します。ただし、これを行うときは注意してください。理想的には、このビューを「ファイルを検索」ビューとして識別する設定があるため、それをコンテキストとして使用できます。しかし、私はそれを知りません。もちろん、もしあなたがそれを見つけたら、私に知らせてください。
Edit回答の本文にキーバインディングの例を引き上げます。
{
"keys": ["enter"],
"command": "find_in_files_goto",
"context": [{
"key": "selector",
"operator": "equal",
"operand": "text.find-in-files"
}]
}
試して Shift+F4 (fn+Shift+F4 アルミ製キーボードで)。
オン SublimeText 3
使用しなければならなかったF4
(現在の結果ファイルに移動するため)およびShift +F4
(前の結果用)。
デフォルトのキーマップから...
{ "keys": ["super+shift+f"], "command": "show_panel", "args": {"panel": "find_in_files"} },
{ "keys": ["f4"], "command": "next_result" },
{ "keys": ["shift+f4"], "command": "prev_result" },
この投稿がお役に立てば幸いです。
SP
コマンド 'next_result'がこれを行います。スコープの使用について投稿されたきちんとしたアイデアmuhquを使用して、目的の行で「Enter」を押すことができるようにすることができます。
,{ "keys": ["enter"], "command": "next_result", "context": [{"key": "selector",
"operator": "equal", "operand": "text.find-in-files" }]}
tryCtrl + P-プロジェクト内の名前でファイルをすばやく開きます。キーボードショートカットの完全なリストについては、 here を参照してください。
drag_select
の引数を使用して"by": "words"
コマンドを実行することにより、Sublime Textでダブルクリックをエミュレートすることができます(デフォルトのsublime-mousemap
ファイルに表示)。
ただし、この作業のためにマウスがキャレットのある場所にいるふりをする必要があります。次のプラグインがこれを行います。
import sublime
import sublime_plugin
class DoubleClickAtCaretCommand(sublime_plugin.TextCommand):
def run(self, edit, **kwargs):
view = self.view
window_offset = view.window_to_layout((0,0))
vectors = []
for sel in view.sel():
vector = view.text_to_layout(sel.begin())
vectors.append((vector[0] - window_offset[0], vector[1] - window_offset[1]))
for idx, vector in enumerate(vectors):
view.run_command('drag_select', { 'event': { 'button': 1, 'count': 2, 'x': vector[0], 'y': vector[1] }, 'by': 'words', 'additive': idx > 0 or kwargs.get('additive', False) })
次のようなキーバインディングと組み合わせて使用するには:
{ "keys": ["alt+/"], "command": "double_click_at_caret" },