telescope.nvim is a highly extendable fuzzy finder over lists.

Overview

telescope.nvim

Gitter

Gaze deeply into unknown regions using the power of the moon.

What Is Telescope?

telescope.nvim is a highly extendable fuzzy finder over lists. Built on the latest awesome features from neovim core. Telescope is centered around modularity, allowing for easy customization.

Community driven builtin pickers, sorters and previewers.

Preview For more showcases of Telescope, please visit the Showcase section in the Telescope Wiki

Telescope Table of Contents

Getting Started

This section should guide you to run your first builtin pickers.

Neovim (v0.5) or newer is required for telescope.nvim to work.

Suggested dependencies

We also suggest you install one native telescope sorter to significantly improve sorting performance. Take a look at either telescope-fzf-native.nvim or telescope-fzy-native.nvim. For more information and a performance benchmark take a look at the Extensions wiki.

Optional dependencies

Installation

Using vim-plug

Plug 'nvim-lua/plenary.nvim'
Plug 'nvim-telescope/telescope.nvim'

Using dein

call dein#add('nvim-lua/plenary.nvim')
call dein#add('nvim-telescope/telescope.nvim')

Using packer.nvim

use {
  'nvim-telescope/telescope.nvim',
  requires = { {'nvim-lua/plenary.nvim'} }
}

checkhealth

Make sure you call :checkhealth telescope after installing telescope to ensure everything is setup correctly.

After this setup you can continue reading here or switch to :help telescope to get an understanding of how to use Telescope and how to configure it.

Usage

Try the command :Telescope find_files to see if telescope.nvim is installed correctly.

ff Telescope find_files nnoremap fg Telescope live_grep nnoremap fb Telescope buffers nnoremap fh Telescope help_tags " Using Lua functions nnoremap ff lua require('telescope.builtin').find_files() nnoremap fg lua require('telescope.builtin').live_grep() nnoremap fb lua require('telescope.builtin').buffers() nnoremap fh lua require('telescope.builtin').help_tags() ">
" Find files using Telescope command-line sugar.
nnoremap 
                          ff 
                          Telescope find_files
                          
nnoremap 
                          fg 
                          Telescope live_grep
                          
nnoremap 
                          fb 
                          Telescope buffers
                          
nnoremap 
                          fh 
                          Telescope help_tags
                          

" Using Lua functions
nnoremap 
                          ff 
                          lua require('telescope.builtin').find_files()
                          
nnoremap 
                          fg 
                          lua require('telescope.builtin').live_grep()
                          
nnoremap 
                          fb 
                          lua require('telescope.builtin').buffers()
                          
nnoremap 
                          fh 
                          lua require('telescope.builtin').help_tags()
                          

See builtin pickers for a list of all builtin functions.

Customization

This section should help you explore available options to configure and customize your telescope.nvim.

Unlike most vim plugins, telescope.nvim can be customized by either applying customizations globally, or individually per picker.

  • Global Customization affecting all pickers can be done through the main setup() method (see defaults below)
  • Individual Customization affecting a single picker by passing opts to builtin pickers (e.g. builtin.find_files(opts)) see Configuration recipes wiki page for ideas.

Telescope setup structure

"] = "which_key" } } }, pickers = { -- Default configuration for builtin pickers goes here: -- picker_name = { -- picker_config_key = value, -- ... -- } -- Now the picker_config_key will be applied every time you call this -- builtin picker }, extensions = { -- Your extension configuration goes here: -- extension_name = { -- extension_config_key = value, -- } -- please take a look at the readme of the extension you want to configure } } ">
require('telescope').setup{
  defaults = {
    -- Default configuration for telescope goes here:
    -- config_key = value,
    mappings = {
      i = {
        -- map actions.which_key to 
    
      (default: 
     )
    
        -- actions.which_key shows the mappings for your picker,
        -- e.g. git_{create, delete, ...}_branch for the git_branches picker
        ["
    
     "
    ] = "which_key"
      }
    }
  },
  pickers = {
    -- Default configuration for builtin pickers goes here:
    -- picker_name = {
    --   picker_config_key = value,
    --   ...
    -- }
    -- Now the picker_config_key will be applied every time you call this
    -- builtin picker
  },
  extensions = {
    -- Your extension configuration goes here:
    -- extension_name = {
    --   extension_config_key = value,
    -- }
    -- please take a look at the readme of the extension you want to configure
  }
}

To look at what default configuration options exist please read: :help telescope.setup(). For picker specific opts please read: :help telescope.builtin.

To embed the above code snippet in a .vim file (for example in after/plugin/telescope.nvim.vim), wrap it in lua << EOF code-snippet EOF:

lua << EOF
require('telescope').setup{
  -- ...
}
EOF

Default Mappings

Mappings are fully customizable. Many familiar mapping patterns are setup as defaults.

Mappings Action
/ Next item
/ Previous item
j/k Next/previous (in normal mode)
H/M/L Select High/Middle/Low (in normal mode)
'gg/G' Select the first/last item (in normal mode)
Confirm selection
Go to file selection as a split
Go to file selection as a vsplit
Go to a file in a new tab
Scroll up in preview window
Scroll down in preview window
Show mappings for picker actions (insert mode)
? Show mappings for picker actions (normal mode)
Close telescope
Close telescope (in normal mode)
Toggle selection and move to next selection
Toggle selection and move to prev selection
Send all items not filtered to quickfixlist (qflist)
Send all selected items to qflist

To see the full list of mappings, check out lua/telescope/mappings.lua and the default_mappings table.

Tip: you can use and ? in insert and normal mode, respectively, to show the actions mapped to your picker.

Much like builtin pickers, there are a number of actions you can pick from to remap your telescope buffer mappings, or create a new custom action:

-- Built-in actions
local transform_mod = require('telescope.actions.mt').transform_mod

-- or create your custom action
local my_cool_custom_action = transform_mod({
  x = function(prompt_bufnr)
    print("This function ran after another action. Prompt_bufnr: " .. prompt_bufnr)
    -- Enter your function logic here. You can take inspiration from lua/telescope/actions.lua
  end,
})

To remap telescope mappings, please read :help telescope.defaults.mappings. To do picker specific mappings, its suggested to do this with the pickers table in telescope.setup. Each picker accepts a mappings table like its explained in :help telescope.defaults.mappings.

Pickers

Built-in functions. Ready to be bound to any key you like.

:lua require'telescope.builtin'.planets{}

:nnoremap 
   pp :lua require'telescope.builtin'.planets{}

File Pickers

Functions Description
builtin.find_files Lists files in your current working directory, respects .gitignore
builtin.git_files Fuzzy search through the output of git ls-files command, respects .gitignore, optionally ignores untracked files
builtin.grep_string Searches for the string under your cursor in your current working directory
builtin.live_grep Search for a string in your current working directory and get results live as you type (respecting .gitignore)
builtin.file_browser Lists files and folders in your current working directory, open files, navigate your filesystem, and create new files and folders

Vim Pickers

Functions Description
builtin.buffers Lists open buffers in current neovim instance
builtin.oldfiles Lists previously open files
builtin.commands Lists available plugin/user commands and runs them on
builtin.tags Lists tags in current directory with tag location file preview (users are required to run ctags -R to generate tags or update when introducing new changes)
builtin.command_history Lists commands that were executed recently, and reruns them on
builtin.search_history Lists searches that were executed recently, and reruns them on
builtin.help_tags Lists available help tags and opens a new window with the relevant help info on
builtin.man_pages Lists manpage entries, opens them in a help window on
builtin.marks Lists vim marks and their value
builtin.colorscheme Lists available colorschemes and applies them on
builtin.quickfix Lists items in the quickfix list
builtin.loclist Lists items from the current window's location list
builtin.jumplist Lists Jump List entries
builtin.vim_options Lists vim options, allows you to edit the current value on
builtin.registers Lists vim registers, pastes the contents of the register on
builtin.autocommands Lists vim autocommands and goes to their declaration on
builtin.spell_suggest Lists spelling suggestions for the current word under the cursor, replaces word with selected suggestion on
builtin.keymaps Lists normal mode keymappings
builtin.filetypes Lists all available filetypes
builtin.highlights Lists all available highlights
builtin.current_buffer_fuzzy_find Live fuzzy search inside of the currently open buffer
builtin.current_buffer_tags Lists all of the tags for the currently open buffer, with a preview
builtin.resume Lists the results incl. multi-selections of the previous picker
builtin.pickers Lists the previous pickers incl. multi-selections (see :h telescope.defaults.cache_picker)

Neovim LSP Pickers

Functions Description
builtin.lsp_references Lists LSP references for word under the cursor
builtin.lsp_document_symbols Lists LSP document symbols in the current buffer
builtin.lsp_workspace_symbols Lists LSP document symbols in the current workspace
builtin.lsp_dynamic_workspace_symbols Dynamically Lists LSP for all workspace symbols
builtin.lsp_code_actions Lists any LSP actions for the word under the cursor, that can be triggered with
builtin.lsp_range_code_actions Lists any LSP actions for a given range, that can be triggered with
builtin.lsp_document_diagnostics Lists LSP diagnostics for the current buffer
builtin.lsp_workspace_diagnostics Lists LSP diagnostics for the current workspace if supported, otherwise searches in all open buffers
builtin.lsp_implementations Goto the implementation of the word under the cursor if there's only one, otherwise show all options in Telescope
builtin.lsp_definitions Goto the definition of the word under the cursor, if there's only one, otherwise show all options in Telescope
builtin.lsp_type_definitions Goto the definition of the type of the word under the cursor, if there's only one, otherwise show all options in Telescope

Git Pickers

Functions Description
builtin.git_commits Lists git commits with diff preview, checkout action , reset mixed m , reset soft s and reset hard h
builtin.git_bcommits Lists buffer's git commits with diff preview and checks them out on
builtin.git_branches Lists all branches with log preview, checkout action , track action and rebase action
builtin.git_status Lists current changes per file with diff preview and add action. (Multi-selection still WIP)
builtin.git_stash Lists stash items in current repository with ability to apply them on

Treesitter Picker

Functions Description
builtin.treesitter Lists Function names, variables, from Treesitter!

Lists Picker

Functions Description
builtin.planets Use the telescope...
builtin.builtin Lists Built-in pickers and run them on .
builtin.reloader Lists Lua modules and reload them on .
builtin.symbols Lists symbols inside a file data/telescope-sources/*.json found in your rtp. More info and symbol sources can be found here

Previewers

Previewers Description
previewers.vim_buffer_cat.new Default previewer for files. Uses vim buffers
previewers.vim_buffer_vimgrep.new Default previewer for grep and similar. Uses vim buffers
previewers.vim_buffer_qflist.new Default previewer for qflist. Uses vim buffers
previewers.cat.new Deprecated previewer for files. Uses cat/bat
previewers.vimgrep.new Deprecated previewer for grep and similar. Uses cat/bat
previewers.qflist.new Deprecated previewer for qflist. Uses cat/bat

The default previewers are from now on vim_buffer_ previewers. They use vim buffers for displaying files and use tree-sitter or regex for file highlighting.

These previewers are guessing the filetype of the selected file, so there might be cases where they miss, leading to wrong highlights. This is because we can't determine the filetype in the traditional way: We don't do bufload and instead read the file asynchronously with vim.loop.fs_ and attach only a highlighter; otherwise the speed of the previewer would slow down considerably. If you want to configure more filetypes, take a look at plenary wiki.

If you want to configure the vim_buffer_ previewer (e.g. you want the line to wrap), do this:

autocmd User TelescopePreviewerLoaded setlocal wrap

Sorters

Sorters Description
sorters.get_fuzzy_file Telescope's default sorter for files
sorters.get_generic_fuzzy_sorter Telescope's default sorter for everything else
sorters.get_levenshtein_sorter Using Levenshtein distance algorithm (don't use :D)
sorters.get_fzy_sorter Using fzy algorithm
sorters.fuzzy_with_index_bias Used to list stuff with consideration to when the item is added

A Sorter is called by the Picker on each item returned by the Finder. It returns a number, which is equivalent to the "distance" between the current prompt and the entry returned by a finder.

Layout (display)

Layout can be configured by choosing a specific layout_strategy and specifying a particular layout_config for that strategy. For more details on available strategies and configuration options, see :help telescope.layout.

Some options for configuring sizes in layouts are "resolvable". This means that they can take different forms, and will be interpreted differently according to which form they take. For example, if we wanted to set the width of a picker using the vertical layout strategy to 50% of the screen width, we would specify that width as 0.5, but if we wanted to specify the width to be exactly 80 characters wide, we would specify it as 80. For more details on resolving sizes, see :help telescope.resolve.

As an example, if we wanted to specify the layout strategy and width, but only for this instance, we could do something like:

:lua require('telescope.builtin').find_files({layout_strategy='vertical',layout_config={width=0.5}})

If we wanted to change the width for every time we use the vertical layout strategy, we could add the following to our setup() call:

require('telescope').setup({
  defaults = {
    layout_config = {
      vertical = { width = 0.5 }
      -- other layout configuration here
    },
    -- other defaults configuration here
  },
  -- other configuration values here
})

Themes

Common groups of settings can be set up to allow for themes. We have some built in themes but are looking for more cool options.

dropdown

Themes Description
themes.get_dropdown A list like centered list. dropdown
themes.get_cursor A cursor relative list.
themes.get_ivy Bottom panel overlay. Ivy #771

To use a theme, simply append it to a builtin function:

f :lua require'telescope.builtin'.find_files(require('telescope.themes').get_dropdown({ winblend = 10 })) ">
nnoremap 
    f :lua require'telescope.builtin'.find_files(require('telescope.themes').get_dropdown({}))
    
" Change an option
nnoremap 
    f :lua require'telescope.builtin'.find_files(require('telescope.themes').get_dropdown({ winblend = 10 }))
    

Or use with a command:

Telescope find_files theme=dropdown

Or you can configure it in the pickers table in telescope.setup:

require('telescope').setup{
  defaults = {
    -- ...
  },
  pickers = {
    find_files = {
      theme = "dropdown",
    }
  },
  extensions = {
    -- ...
  }
}

Themes should work with every telescope.builtin function. If you wish to make a theme, check out lua/telescope/themes.lua.

Vim Commands

All telescope.nvim functions are wrapped in vim commands for easy access, tab completions and setting options.

:Telescope find_files " Setting options :Telescope find_files prompt_prefix=πŸ” " If the option accepts a Lua table as its value, you can use, to connect each " command string, e.g.: find_command, vimgrep_arguments are both options that " accept a Lua table as a value. So, you can configure them on the command line "like so: :Telescope find_files find_command=rg,--ignore,--hidden,--files prompt_prefix=πŸ” ">
" Show all builtin pickers
:Telescope

" Tab completion
:Telescope |
   
:Telescope find_files

" Setting options
:Telescope find_files prompt_prefix=πŸ”

" If the option accepts a Lua table as its value, you can use, to connect each
" command string, e.g.: find_command, vimgrep_arguments are both options that
" accept a Lua table as a value. So, you can configure them on the command line
"like so:
:Telescope find_files find_command=rg,--ignore,--hidden,--files prompt_prefix=πŸ”

for more information and how to realize more complex commands please read :help telescope.command.

Autocmds

Telescope user autocmds:

Event Description
User TelescopeFindPre Do it before Telescope creates all the floating windows
User TelescopePreviewerLoaded Do it after Telescope previewer window is created

Extensions

Telescope provides the capabilities to create & register extensions, which improve telescope in a variety of ways.

Some extensions provide integration with external tools, outside of the scope of builtins. Others provide performance enhancements by using compiled C and interfacing directly with Lua over LuaJIT's FFI library.

A list of community extensions can be found in the Extensions wiki. Always read the README of the extension you want to install, but here is a general overview of how most extensions work.

Loading extensions

To load an extension, use the load_extension function as shown in the example below:

-- This will load fzy_native and have it override the default file sorter
require('telescope').load_extension('fzy_native')

You may skip explicitly loading extensions (they will then be lazy-loaded), but tab completions will not be available right away.

Accessing pickers from extensions

Pickers from extensions are added to the :Telescope command under their respective name. For example:

" Run the `configurations` picker from nvim-dap
:Telescope dap configurations

They can also be called directly from Lua:

-- Run the `configurations` picker from nvim-dap
require('telescope').extensions.dap.configurations()

API

For writing your own picker and for information about the API please read the Developers Documentation.

Media

Contributing

All contributions are welcome! Just open a pull request. Please read CONTRIBUTING.md

Related Projects

Comments
  • Add tags builtin

    Add tags builtin

    Close #209

    ~~Written in a coffee break, so WIP.~~ ~~Currently has to be generated with --fields=n to get the line numbers. So ctags -R --fields=+n~~

    • [x] ~~Create ctags for user if file does not exists~~
    • [x] Jump does not work
    • [x] Write make_entry
    • [x] Create display with new table create
    • [x] ~~Take another look at how lines numbers get retrieved in fzf, so we don't have to use --fields=+n. I decided to just force having --fields=+n. We could search for the lines but it is kinda unnecessary.~~
    • [x] ~~Only --fields=n will not generate the other fields like type but using --fields=+n includes these fields aswell but does not work this current version~~
    • [x] Some lines are not displayed. Happens in a file with tabs. has to be fixed by not only splitting with \t and don't split if the line has \^\t

    default | hide_filename | show_line | hide_previewer :-------------:|:-------------------------:|:-------------------:|:-----------------: default|hide_filename|show_line|hide_previewer

    Available options:

    only_current_file = true -- default is false, setting this to true will only show tags for the current file
    hide_filename = true     -- default is false
    show_line = true           -- default is false
    
    opened by Conni2461 53
  • Changed the results window highlight to always be full width

    Changed the results window highlight to always be full width

    Thought it was easier to submit this to show the effect working than describe it.
    Making the selection movement easier on the eye by staying full width, not sticking to the content width.

    Normal Width

    Full Width

    The code I've written is a very quick hack, it just adds spaces to the end of a line to pad it out.
    This can probably be done in a much nicer way using virtual text which could allow it to happen on the previewer as well.
    I've also had to add an extra 2 to the width for the math to work correctly, still looking at why.

    I'm looking into what's going on with the = not being highlighted, don't think it's related to this code.

    opened by TC72 44
  • Update display config methods

    Update display config methods

    Plan:

    • [x] Implement hierarchy of options that affect window size. (requires fuller testing)
    • [x] Remove width_padding and height_padding option from layout strategies.
    • [x] Add new option for width and height allowing a table of the form {padding=foo} where foo is one of the other options, and then define width in terms of padding.
    • [x] Add documentation for the new method of defining dimensions of the picker.

    For more details on the general idea, see the discussion in this issue.


    Feedback is very welcome πŸ™‚

    opened by l-kershaw 41
  • feat: add hide / unhide preview

    feat: add hide / unhide preview

    Add new options:

    • to hide and unhide preview leaving just results and prompt.
    • ~~to hide and unhide results and prompt leaving just preview window active. Active preview buffer inherits autocmd for BufLeave and config mappings from prompt which makes it possible to also cycle through previews.~~ This feature will be introduced in another PR

    Example key mapping:

    require("telescope").setup({
    	defaults = {
    		mappings = {
    			n = {
    				["<C-h>"] = actions.toggle_preview,
    				["<C-j>"] = actions.toggle_results_and_prompt,
    			},
    			i = {
    				["<C-h>"] = actions.toggle_preview,
    				["<C-j>"] = actions.toggle_results_and_prompt,
    			},
                   }
           }
    })
    

    This still require little tweaks for example I am not really sure how should I keep selection ( or if it is currently possible ) for specific entry when hiding preview in vertical layout because the size of results window changes and picker refresh also change the order of results.

    opened by johnybx 39
  • feat: delete entry from the picker without closing telescope

    feat: delete entry from the picker without closing telescope

    This will allow users to delete entries from the picker without closing telescope.

    Discussion ref: https://github.com/nvim-telescope/telescope.nvim/pull/803#pullrequestreview-654985978 fixes: #689 fixes: #621 fixes: #672

    This function in and of itself will just remove the entry, what I'm proposing next is: Idea: Should we provide a callback parameter which will be called with the removed entry, so that the user or the specific picker can do exactly what needs to be done outside of telescope? Eg., delete the buffer, delete the file, etc.

    The selection strategy is temporarily set to "row" as that will help keep the selection in the same position instead of resetting to the top. If there is any other way to achieve this, do suggest :)

    Thanks @Conni2461 for helping!

    https://user-images.githubusercontent.com/67177269/117562588-a9434e00-b0bd-11eb-9181-275e82cce317.mov

    opened by dhruvmanila 39
  • Improve oldfiles finder

    Improve oldfiles finder

    This adds options to the oldfiles finder to make it optionally more useful as a MRU (most recently used) finder.

    • include_current_session
      • Normally v:oldfiles only lists files from past vim sessions. This option will include recently accessed files in the current vim session using :buffers! t (the ! bang shows unlisted buffers after they are closed, and the t modifier sorts the list by MRU).
    • cwd_only
      • This option filters the results to only show files within the cwd. This makes for a nice project-specific-MRU finder.

    At the moment both options don't change default oldfiles finder behaviour, as they are both opt-in. I might argue making include_current_session=true a default, having to restart vim to see new entries populated into v:oldfiles is kind of weird. Either way though, it'd just be nice to have the option!


    PS. I know there was an issue/discussion at #433 around MRU pickers that was closed because of the (very cool) frecency extension, but I'd argue that MRU and frecency are different things:

    • Frecency = Frequency + Recency
    • MRU = Recency only
    opened by jesseleite 36
  • Wishlist

    Wishlist

    Here we can post ideas of features, improvement and new pickers.

    Later we can further refine an idea and update progress on it or link it to a more detailed "enhancement/feature issue", or even reference the comment in a PR.

    Try to leave discussions out of here, but if necessary or your have something in mind post it then mark your replies and mentions as out of scope to keep the Wishlist clean.

    opened by kkharji 36
  • Live grep not working after last update

    Live grep not working after last update

    livegrep

    [telescope] ^I...ck/packer/start/telescope.nvim/lua/telescope/pickers.lua:410: in function <...ck/packer/start/telescope.nvim/lua/telescope/pickers.lua:364>[telescope] ^I...ck/packer/start/telescope.nvim/lua/telescope/pickers.lua:410: in function <...ck/packer/start/telescope.nvim/lua/telescope/pickers.lua:364>
    
    bug Missing bug template 
    opened by hrqmonteiro 35
  • Cycle previewers with git commit and bcommit already using it

    Cycle previewers with git commit and bcommit already using it

    Closes #307 Closes #627

    Look at it here: https://streamable.com/sxi8fz

    Continuation of #314

    Edit: would be cool if we could somehow show the context of the previewer. Idk how we would do this.

    opened by Conni2461 35
  • Fzy improvement: smart-case

    Fzy improvement: smart-case

    I was reading your port of fzy and one easy improvement over the original fzy that I always do (yes I've ported it multiple times) is to avoid converting the string to lowercase if the needle contains an uppercase character. It improves the results a lot when the user knows there is an uppercase character in there.

    enhancement 
    opened by romgrk 35
  • Complete rewrite of README

    Complete rewrite of README

    • Changes
      • New structure:

        • Overview
          • Installation (add examples for three plugin managers)
          • Dependencies (dependencies sounds better then requirements :D < opinionated)
          • Quick Start (to test telescope)
        • Configuration (contains a quick overview of configuration options and mappings)
        • FAQ (How to questions with answers)
        • API (oh boy needs review, and where most of todos is located. @tjdevries help :D)
        • Media (moved all links and videos here)
        • Recipes (some recipes I thought will be make it easier to configure telescope)
      • Strip previews, I feel telescope preview and screenshot should be located in gallery. It might be good to include a signle preview in the introduction, but I feel it may constrian the expectations of new users, "This what I expect telescope offer", where as having previews only in gallery, "Oh telescope can be configured to look in different ways". :D < opinionated

      • Add faq section, any question answered in issues should be written here. (future pr I guess.) Add some questions I previously had, but more is needed to be added here.

      • Add configuration recipes based on how I configure telescope, @tjdevries please consider having the second recipe a builtin function. (perhaps with introducing an additional parameter for the dict)

    TODO:

    • Fix links
    • Proofreading introduction
    opened by kkharji 32
  • Shortcut to save the current item to register without edit the file.

    Shortcut to save the current item to register without edit the file.

    Is your feature request related to a problem? Please describe. Sometimes we need save the telescope to find a target file but wont edit it immediately. Just save the result to register or variable in lua. And we can use the target file name later.

    Describe the solution you'd like Provide a function which can return the target file name string or save the target file name in register.

    Describe alternatives you've considered None

    Additional context None

    enhancement 
    opened by woshichuanqilz 0
  • Search inside monorepo

    Search inside monorepo

    Is your feature request related to a problem? Please describe. I work with a monorepo and when inside a file, I can't search for/in files in other projects in the monorepo.

    Describe the solution you'd like I would like for telescope to work across the projects inside the monorepo. Maybe recursively find parent folders with .git folder or a .editorconfig with root = true

    Describe alternatives you've considered

    Additional context

    enhancement 
    opened by andresatierf 0
  • Question: Grep matching newlines?

    Question: Grep matching newlines?

    I was trying to live-grep something like this:

    first
    second
    

    I.e. / + first\nsecond in vim.

    Is this achievable with telescope pickers? One thing I tried was passing --multiline to rg but to no avail.

    enhancement 
    opened by adrian5 0
  • Question: how to cycle (wrap) prompt history?

    Question: how to cycle (wrap) prompt history?

    I noticed that cycling the prompt history doesn't wrap around β€” picking the wrong (presumably next) direction prevents any history from showing up. I'm very used to the wrapping behavior from terminals and telescope behaves that way in the Results pane. Is there a way to achieve that currently?

    telescope.setup({
      defaults = {
        mappings = {
          i = {
            ["<C-n>"] = actions.cycle_history_next,
            ["<C-p>"] = actions.cycle_history_prev,
          }
      }
    }
    
    enhancement 
    opened by adrian5 2
  • Gitter chat seems dead

    Gitter chat seems dead

    The GitHub Issue β†’ Question template leads to the Gitter chat, which is also mentioned in the project README. Going there I mostly see unanswered questions. I'm wondering if there's a better solution than users sending their questions into the void, while not burdening developers too much.

    enhancement 
    opened by adrian5 3
  • Telescope Setup -- find_command

    Telescope Setup -- find_command

    Description

    The below works from both the command line and keybindings, but does not seem to work when placing within the telescope.setup({pickers block

    Works:

    :Telescope find_files find_command=rg,--ignore,--hidden,--files,-u,--glob,!**/.git/*,--glob,!**/node_modules/*
    
    vim.keymap.set('n', '<leader>ff', ":Telescope find_files find_command=rg,--ignore,--hidden,--files,-u,--glob,!**/.git/*,--glob,!**/node_modules/*,--glob,!**/.next/*<CR>")
    

    Not working

        pickers = {
          find_files = {
            find_command = {"rg", "--files", "--hidden", "--ignore", "-u", "--glob=!**/.git/*", "--glob=!**/node_modules/*"},    
          }
        },
    

    Neovim version

    NVIM v0.8.2
    Build type: Release
    LuaJIT 2.1.0-beta3
    Compiled by [email protected]
    

    Operating system and version

    macOS 13.0.1

    Telescope version / branch / rev

    telescope branch: 0.1.x

    checkhealth telescope

    telescope: require("telescope.health").check()
    ========================================================================
    ## Checking for required plugins
      - OK: plenary installed.
      - OK: nvim-treesitter installed.
    
    ## Checking external dependencies
      - OK: rg: found ripgrep 13.0.0
      - WARNING: fd: not found. Install [sharkdp/fd](https://github.com/sharkdp/fd) for extended capabilities
    
    ## ===== Installed extensions =====
    
    ## Telescope Extension: `fzf`
      - OK: lib working as expected
      - OK: file_sorter correctly configured
      - OK: generic_sorter correctly configured
    

    Steps to reproduce

    Keybindings reverted back to below via docs:

    vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
    

    add to setup

        pickers = {
          find_files = {
            find_command = {"rg", "--files", "--hidden", "--ignore", "-u", "--glob=!**/.git/*", "--glob=!**/node_modules/*"},    
          }
        },
    
    • open a project in nvim
    • ff
    • Search for hidden file or ignored file.

    Expected behavior

    Hidden and Ignored files are found. Example:

    • ff
    • search .env.loc
    • see .env.local file

    image

    Actual behavior

    With setup > long string keybind

    • ff
    • search .env.loc
    • no files found

    image

    Minimal config

    vim.cmd [[set runtimepath=$VIMRUNTIME]]
    vim.cmd [[set packpath=/tmp/nvim/site]]
    local package_root = '/tmp/nvim/site/pack'
    local install_path = package_root .. '/packer/start/packer.nvim'
    local function load_plugins()
      require('packer').startup {
        {
          'wbthomason/packer.nvim',
          {
            'nvim-telescope/telescope.nvim',
            requires = {
              'nvim-lua/plenary.nvim',
              { 'nvim-telescope/telescope-fzf-native.nvim', run = 'make' },
            },
          },
          -- ADD PLUGINS THAT ARE _NECESSARY_ FOR REPRODUCING THE ISSUE
        },
        config = {
          package_root = package_root,
          compile_path = install_path .. '/plugin/packer_compiled.lua',
          display = { non_interactive = true },
        },
      }
    end
    _G.load_config = function()
      require('telescope').setup({
        pickers = {
          find_files = {
            find_command = {"rg", "--files", "--hidden", "--ignore", "-u", "--glob=!**/.git/*", "--glob=!**/node_modules/*", "--glob=!**/.next/*"},    
          }
        }
    })
      require('telescope').load_extension('fzf')
      -- ADD INIT.LUA SETTINGS THAT ARE _NECESSARY_ FOR REPRODUCING THE ISSUE
    end
    if vim.fn.isdirectory(install_path) == 0 then
      print("Installing Telescope and dependencies.")
      vim.fn.system { 'git', 'clone', '--depth=1', 'https://github.com/wbthomason/packer.nvim', install_path }
    end
    load_plugins()
    require('packer').sync()
    vim.cmd [[autocmd User PackerComplete ++once echo "Ready!" | lua load_config()]]
    
    bug 
    opened by mthomps4 4
Releases(0.1.0)
  • 0.1.0(Jul 12, 2022)

    telescope.nvim 0.1.0

    Today we are finally releasing telescope 0.1.0, our first stable release, it only took us 2 years, almost 250 contributors and over 2000 issues and PRs.

    With this release we also introduce a new release branch 0.1.x which will get constant fixes, performances improvements and new features without breaking backwards compatibility, so we kindly ask you to switch to either the fixed 0.1.0 tag or this release branch. This allows us to treat the main branch as an actual development branch where we can introduce breaking changes more easily.

    Telescope 0.1.0 is compatible with neovim 0.7.0 and newer and we will not raise the minimum required version for the lifecycle of the 0.1.x branch.

    Features

    Telescope is a fuzzy finder written in lua that provides a simple interface that allows everyone to write their own fuzzy pickers.

    • Wide range of builtin functionallity (files, git, lsp, vim internals)
    • Flexible UI
      • Different themes (dropdown, cursor, ivy)
      • Write your own theme
    • Previewers using treesitter
      • Can be toggled
      • Have multiple previewers and cycle though them
    • Resume previous searches
    • History to cycle through previous search inputs
    • Replaceable backend interfaces
      • Allows you to swap out backend functionality for our own implementations Example: sorters and github.com/nvim-telescope/telescope-fzf-native.nvim

    Future Outlook

    After this release, we spoke about redesigning the fuzzy engine and move it to a compiled language like rust to improve performance. The core engine part can then be used in "frontend clients" like a neovim plugin or even a cli tool.

    Thanks

    Thanks to everyone who was part in shaping telescope and this release by opening PRs and Issues. With 244 contributors, I can't mention everyone. Special thanks go to:

    • @tjdevries for starting this plugin and bringing everyone together
    • @fdschmidt93 for maintaining this project with me and help with this release
    • @oberblastmeister for bringing async await to lua and neovim
    • @l-kershaw for his work on layouts
    • @kkharji (previously tami5) as initial project manager
    • @clason for his invaluable feedback and tireless answering of questions
    Source code(tar.gz)
    Source code(zip)
Owner
nvim-telescope
An organization to help foster a community around telescope.nvim
nvim-telescope
A simple web-based SSH client.

Kommander A simple web-based SSH client. It supports: entering SSH login details (including private key and custom ports) and connecting user authenti

KingWaffleIII 2 Jan 01, 2022
:computer: tmux session manager. built on libtmux

tmuxp, tmux session manager. built on libtmux. We need help! tmuxp is a trusted session manager for tmux. If you could lend your time to helping answe

python utilities for tmux 3.6k Jan 01, 2023
Aurornis - The Command Line Program Test Helper

Aurornis - The Command Line Program Test Helper Aurornis is a small, yet powerful library designed to help testing command line programs. The name is

JΓ©rΓ΄me Deuchnord 1 Mar 08, 2022
Wordle-textual - Play Wordle from the CLI, using Textual

Wordle, playable from the CLI This project seeks to emulate Wordle in your shell

PhenoM4n4n 3 Mar 29, 2022
Command line interface for testing internet bandwidth using speedtest.net

speedtest-cli Command line interface for testing internet bandwidth using speedtest.net Versions speedtest-cli works with Python 2.4-3.7 Installation

Matt Martz 12.4k Jan 08, 2023
PipeCat - A command line Youtube music player written in python.

A command line Youtube music player written in python. It's an app written for Linux. It also supports offline playlists that are stored in a

34 Nov 27, 2022
🐍 Python CLI tool to get public information from a GitHub account

🐍 Gitter 🐍 Python CLI tool to get public information from a GitHub account πŸ€” What's this? Gitter is a open-source project created to easily uses th

opp? 3 Oct 14, 2022
Standalone Tailwind CSS CLI, installable via pip

Standalone Tailwind CSS CLI, installable via pip Use Tailwind CSS without Node.j

Tim Kamanin 144 Dec 22, 2022
Convert shellcode into :sparkles: different :sparkles: formats!

Bluffy Convert shellcode into ✨ different ✨ formats! Bluffy is a utility which was used in experiments to bypass Anti-Virus products (statically) by f

AD995 305 Dec 17, 2022
sync-my-tasks is a CLI tool that copies tasks between apps.

sync-my-tasks Copy tasks between apps Report a Bug Β· Request a Feature . Ask a Question Table of Contents Table of Contents Getting Started Developmen

William Hutson 2 Dec 14, 2021
Wordle - Wordle solver with python

wordle what is wordle? https://www.powerlanguage.co.uk/wordle/ preparing $ pip i

shidocchi 0 Jan 24, 2022
Output Analyzer for you terminal commands

Output analyzer (OZER) You can specify a few words inside config.yaml file and specify the color you want to be used. installing: Install command usin

Ehsan Shirzadi 1 Oct 21, 2021
Interactive Redis: A Terminal Client for Redis with AutoCompletion and Syntax Highlighting.

Interactive Redis: A Cli for Redis with AutoCompletion and Syntax Highlighting. IRedis is a terminal client for redis with auto-completion and syntax

2.2k Dec 29, 2022
Stephen's Obsessive Note-Storage Engine.

Latest Release Β· PyPi Package Β· Issues Β· Changelog Β· License # Get Sonse and tell it where your notes are... $ pip install sonse $ export SONSE="$HOME

Stephen Malone 23 Jun 10, 2022
Helicopter animation in terminal

helicopter-helicopter Helicopter animation in terminal (scroll down for instructions) Why does this exist? It's because of a meme Click for details Se

Wasi Master 7 Mar 14, 2022
πŸŽ„ Advent of Code command-line tool.

πŸŽ„ advent-cli advent-cli is a command-line tool for interacting with Advent of Code, specifically geared toward writing solutions in Python. It can be

Christian Ferguson 6 Dec 01, 2022
Chopper: An Automated Security Headers Analyzer

____ _ _ / ___| |__ ___ _ __ _ __ ___ _ __| | | | | '_ \ / _ \| '_ \| '_ \ / _ \ '__| | | |___| | | | (_) |

Kamran Saifullah (Frog Man) 2 Nov 27, 2022
A Python-based command prompt concept which includes windows command emulation.

PythonCMD A Python-based command prompt concept which includes windows command emulation. Current features: echo: Input your message and it will be cl

1 Feb 05, 2022
A fantasy life simulator and role-playing game hybrid distributed as CLI, written in Python 3.

Life is Fantasy Epic (LIFE) A fantasy life simulator and role-playing game hybrid distributed as CLI, written in Python 3. This repository will be pro

Pawitchaya Chaloeijanya 2 Oct 24, 2021
img-proof (IPA) provides a command line utility to test images in the Public Cloud

overview img-proof (IPA) provides a command line utility to test images in the Public Cloud (AWS, Azure, GCE, etc.). With img-proof you can now test c

13 Jan 07, 2022