helm-locate
(<helm-prefix> l
by default) is Helm’s interface to the locate command, which finds files on your system that have been indexed with updatedb.Sep 6, 2011 - Some ideas how you can make updatedb to index your external drive. Put the following line in your.bashrc: alias locate-external='locate -d ~/.externalharddisk.db:' Now you can use locate to search only the default database. Then in 1984, when the Apple II had color, and the new Macintosh didn't?
Configuration
The exact command for
helm-locate
can be customized through the variable helm-locate-command
. The default value works on most locate
versions and variants.On more recent versions of
locate
, you may want to use multi-matching with the --regex
option, which is not available in older versions:Update: On helm version >=2.4.0 this is now the default.
Usage
Execute the
helm-locate
command, then enter a filename or pattern at the prompt. Some options are below:Option | Description |
---|---|
-b | Only use the base name (no directories) |
-e | Only include files that actually exist |
-n | Limit number of search results |
Example pattern:
Note that adding options at end of pattern is disabling fuzzy matching. You should add the
-b
option at end of other options to let helm highlight properly the right part (i.e basename) of candidate.From helm-find-files
In
helm-find-files
, hit C-x C-f
. With a prefix argument, you can choose a locatedb
file. With two prefix args the database file will be recreated.Launch grep
When the search is done, you can search in a specific file or directory with the
grep
action in the action menu (TAB). You can also launch Helm grep
with (C-u) M-g s
without switching to the action panel.Local locatedb
database
You can specify a
locate
database with prefix argument ARG (C-u
). Many databases can be used: navigate to and mark them. See helm-locate-with-db
.To create a user specific db, use:
where
dbpath
is a filename matched by helm-locate-db-file-regexp
.Search in a list of projects only
For this, populate the list
helm-locate-project-list
with a list of projects, then run M-x helm-projects-find-files
, helm-locate
will search for files only in the database of these projects.Enable fuzzy matching in locate
The only thing you have to do is:
Once this is enabled,
helm-locate
will search on the basename of files, adding automatically the -b
flag, so you don’t need to add it. As soon as you add spaces between your patterns multi matching will happen instead of fuzzy, with regexp matching on each pattern (no fuzzy matching of separate pattern), also when switching to multi matching, search is done on the whole path and no more on basename.When fuzzy matching, candidates are sorted with
helm-locate-fuzzy-sort-fn
which use by default the helm fuzzy matching default sort fn helm-locate-default-fuzzy-sort-fn
, you can customize this if needed.Other platforms
Windows
On Windows, you should use Everything, which works like
locate
. It is very fast and does not require manual database updates.To use
Everything
with helm-locate
, you will need the command line tool named es
. Be sure to modify the PATH
environment variable to include path to the directory that contain es
. Also unset helm-locate-fuzzy-match
, or Everything
will give no results.When using
es
on Windows, you may want to use the sorting feature (put the recentest visited files on top) provided by its very last version (>=es 1.1.0.4a), for this you will have to add here the required arguments to es
i.e -sort run-count
and also notify the Everything database you jumped to some file by running es -inc-run-count file
each time you visit a file, to achieve this you can add a function doing this to helm-find-many-files-after-hook
.e.g
See Topic and issue #1645 on github for more infos.
OS X
To use
mdfind
, disable helm-locate-fuzzy-match
. If it is set to t
and mdfind
is used, helm-locate
won’t show any results.