Si vous File
> Find in Files...
⇧+⌘+F vous êtes amené au Find Results
, répertoriant les fichiers et les correspondances en surbrillance. Vous pouvez double-cliquer sur le nom/chemin du fichier ou sur la ligne correspondante pour ouvrir le fichier sur la ligne de droite.
Je me demande s'il existe un moyen de faire exactement ce que fait le double-clic via le clavier?
Avec les excellentes capacités de commutation de fichiers de Sublimes, je pensais qu'il devait y avoir un moyen de garder les mains sur le clavier lorsque vous faites Find in Files...
.
Il semble qu'un plugin ait été créé pour ce faire. Jetez un coup d'œil, il y a quelques fonctionnalités supplémentaires dans le plugin. Bien que ma réponse d'origine ci-dessous fonctionne, il sera beaucoup plus facile d'installer un plugin existant.
https://sublime.wbond.net/packages/BetterFindBuffer
Faisable avec un plugin.
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
Configurez une liaison de touches avec la commande find_in_files_goto
. Soyez prudent lorsque vous faites cela. Idéalement, il y aurait un paramètre qui identifie cette vue comme la vue "Rechercher dans les fichiers", vous pouvez donc l'utiliser comme contexte. Mais je n'en connais pas. Bien sûr, si vous en trouvez un, faites-le moi savoir.
Modifier Tirez vers le haut l'exemple de liaison de touches dans le corps principal de la réponse.
{
"keys": ["enter"],
"command": "find_in_files_goto",
"context": [{
"key": "selector",
"operator": "equal",
"operand": "text.find-in-files"
}]
}
Essayer Shift+F4 (fn+Shift+F4 sur le clavier en aluminium).
sur SublimeText 3
J'ai dû utiliser F4
(pour accéder au fichier de résultats actuel) et Shift +F4
(pour le résultat précédent).
Depuis le clavier par défaut ...
{ "keys": ["super+shift+f"], "command": "show_panel", "args": {"panel": "find_in_files"} },
{ "keys": ["f4"], "command": "next_result" },
{ "keys": ["shift+f4"], "command": "prev_result" },
J'espère que ce message vous aidera.
SP
la commande 'next_result' fera cela. en utilisant l'idée soignée que muhqu a publiée à propos de l'utilisation de scope, vous pouvez faire en sorte que vous puissiez appuyer sur 'enter' sur la ligne que vous souhaitez obtenir:
,{ "keys": ["enter"], "command": "next_result", "context": [{"key": "selector",
"operator": "equal", "operand": "text.find-in-files" }]}
essayez Ctrl + P - ces fichiers à ouverture rapide par nom dans votre projet, Pour une liste complète des raccourcis clavier, voir ici
Il est possible d'émuler un double clic dans Sublime Text en exécutant le drag_select
commande avec un argument de "by": "words"
(comme vu dans le Default sublime-mousemap
fichier).
Cependant, vous devez prétendre que la souris est l'endroit où se trouve le curseur pour ce travail. Le plugin suivant le fera:
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) })
A utiliser en combinaison avec un raccourci clavier comme:
{ "keys": ["alt+/"], "command": "double_click_at_caret" },