388 lines
21 KiB
HTML
Raw Normal View History

2025-02-05 17:48:02 +01:00
<!doctype html>
<html lang="en">
<head>
2025-02-05 19:05:58 +01:00
<title>Telescope - 🚀 ApolloNvim</title>
2025-02-05 17:48:02 +01:00
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="../../../assets/css/darcula-highlight.min.css">
<link rel="stylesheet" href="../../../assets/css/bootstrap.min.css">
<link rel="stylesheet" href="../../../assets/css/dracula-ui.min.css">
<link rel="stylesheet" href="../../../assets/css/mkdocs.min.css">
2025-02-05 19:05:58 +01:00
<link href="../../../style/style.css" rel="stylesheet">
2025-02-05 17:48:02 +01:00
<link rel="icon" type="image/x-icon" href="../../../assets/img/favicon.ico">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
</head>
<body class="drac-bg-black-secondary drac-text-grey-ternary drac-text drac-scrollbar-purple">
<main class="d-flex">
<!-- block sidebar -->
<nav id="sidebar" class="sidebar drac-bg-black">
<div class="custom-menu">
<button type="button" id="sidebarCollapse" class="btn btn-primary">
<i class="fa fa-bars"></i>
<span class="sr-only">Menu</span>
</button>
</div>
<div class="p-4">
<div class="drac-text-center">
2025-02-05 19:05:58 +01:00
<span class="drac-text drac-line-height drac-text-white">🚀 ApolloNvim</span>
2025-02-05 17:48:02 +01:00
</div>
<div class="drac-box flex-column">
<ul class="dot-ul">
<li><div class="dot-li drac-bg-cyan"></div></li>
<li><div class="dot-li drac-bg-green"></div></li>
<li><div class="dot-li drac-bg-orange"></div></li>
<li><div class="dot-li drac-bg-pink"></div></li>
<li><div class="dot-li drac-bg-purple"></div></li>
<li><div class="dot-li drac-bg-red"></div></li>
<li><div class="dot-li drac-bg-yellow"></div></li>
</ul>
</div>
<hr class="drac-divider" />
<!-- block menu -->
<ul class="mb-5 drac-list drac-list-none">
<li class="drac-box">
<a href="../../.."
class="
drac-anchor d-inline-flex align-items-center border-0 drac-text-purple--hover">
2025-02-05 19:05:58 +01:00
🏘 Home
2025-02-05 17:48:02 +01:00
</a>
</li>
<li class="drac-box">
<a href="../../installation/"
class="
drac-anchor d-inline-flex align-items-center border-0 drac-text-purple--hover">
2025-02-05 19:05:58 +01:00
🛠 Installation
2025-02-05 17:48:02 +01:00
</a>
</li>
<li class="drac-box">
<a href="../../plugins/"
class="
drac-anchor d-inline-flex align-items-center border-0 drac-text-purple--hover">
2025-02-05 19:05:58 +01:00
🗄 Plugins
2025-02-05 17:48:02 +01:00
</a>
</li>
<li class="drac-box">
<a href="../../.."
2025-02-05 19:03:46 +01:00
class=" active
2025-02-05 17:48:02 +01:00
drac-anchor btn-toggle d-inline-flex align-items-center border-0 drac-text-purple--hover collapsed"
2025-02-05 19:05:58 +01:00
data-bs-toggle="collapse" data-bs-target="#📑-tutorials-collapse" aria-expanded="false">
📑 Tutorials
2025-02-05 17:48:02 +01:00
</a>
2025-02-05 19:05:58 +01:00
<div class="collapse" id="📑-tutorials-collapse">
2025-02-05 17:48:02 +01:00
<ul class="mb-5 drac-list drac-list-none">
<li class="drac-box-ternary">
2025-02-05 19:05:58 +01:00
<a href="../01.%20vimplug/"
2025-02-05 17:48:02 +01:00
class="
drac-anchor d-inline-flex align-items-center border-0 drac-text-purple--hover">
2025-02-05 19:05:58 +01:00
How to install vim.plug into Neovim
2025-02-05 17:48:02 +01:00
</a>
</li>
2025-02-05 18:12:04 +01:00
<li class="drac-box-ternary">
2025-02-05 19:05:58 +01:00
<a href="../02.%20keyshortcuts/"
2025-02-05 18:12:04 +01:00
class="
drac-anchor d-inline-flex align-items-center border-0 drac-text-purple--hover">
2025-02-05 19:05:58 +01:00
Default keyboard shortcuts
2025-02-05 18:12:04 +01:00
</a>
</li>
<li class="drac-box-ternary">
<a href="../03.%20Jak%20nainstalovat%20Codeium%20do%20Neovim/"
class="
drac-anchor d-inline-flex align-items-center border-0 drac-text-purple--hover">
2025-02-05 19:05:58 +01:00
How to install Codeium on Neovim
2025-02-05 19:03:46 +01:00
</a>
</li>
<li class="drac-box-ternary">
<a href="./"
class=" active
drac-anchor d-inline-flex align-items-center border-0 drac-text-purple--hover">
2025-02-05 19:05:58 +01:00
Telescope
2025-02-05 18:12:04 +01:00
</a>
</li>
2025-02-05 17:48:02 +01:00
</ul>
</div>
</li>
<li class="drac-box">
<a href="../../../contact/"
class="
drac-anchor d-inline-flex align-items-center border-0 drac-text-purple--hover">
2025-02-05 19:05:58 +01:00
📪 Contact
2025-02-05 17:48:02 +01:00
</a>
</li>
</ul>
<!-- endblock -->
</div>
</nav>
<!-- endblock -->
<nav class="divider drac-bg-purple-cyan"></nav>
<div class="content">
<!-- block header -->
<header>
<nav class="navbar navbar-expand-xl drac-bg-purple">
<div class="container-fluid">
<button class="navbar-toggler w-100 text-center" type="button" data-bs-toggle="collapse" data-bs-target="#navbarsMenu"
aria-controls="navbarsMenu" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse flex-column ml-auto" id="navbarsMenu">
<ul class="navbar-nav text-md-center">
<!-- block preview -->
<li class="nav-item">
2025-02-05 19:03:46 +01:00
<div class="container">
<div class="row row-preview">
<div class="col">
<a href="../03.%20Jak%20nainstalovat%20Codeium%20do%20Neovim/"
class="btn-preview drac-btn drac-btn-outline drac-text-white drac-text-cyan-green--hover">
<i class="fa fa-arrow-left"></i> Previous
</a>
</div>
<div class="col">
2025-02-05 19:05:58 +01:00
<a href="../../../contact/"
2025-02-05 19:03:46 +01:00
class="btn-preview drac-btn drac-btn-outline drac-text-white drac-text-cyan-green--hover" style="padding-left: 3%;">
Next <i class="fa fa-arrow-right"></i>
</a>
</div>
</div>
</div>
2025-02-05 17:48:02 +01:00
</li>
<!-- endblock -->
<!-- block search -->
<li class="nav-item"><div role="search" class="search-box">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" class="drac-input drac-input-search drac-input-white drac-text-white drac-bg-black-secondary"
placeholder="Search docs" title="Type search term here" />
</form>
</div>
</li>
<!-- endblock -->
<!-- block source -->
<li class="nav-item">
</li>
<!-- endblock -->
</ul>
</div>
</div>
</nav>
</header>
<!-- endblock -->
<!-- block content -->
<section class="p-md-5 section-content">
<article>
2025-02-05 19:22:23 +01:00
<p><h1 id="04-telescope">04. Telescope</h1>
2025-02-05 17:48:02 +01:00
<ul>
<li>
2025-02-05 19:22:23 +01:00
<p>Telescope is, created by one of the main members of the Neovim team - TJ Devries .</p>
2025-02-05 17:48:02 +01:00
</li>
<li>
2025-02-05 19:22:23 +01:00
<p>Side note, TJ posts a lot of Neovim related content on his YouTube channel and on his Twitch streams. In particular, his channel <a href="https://www.youtube.com/c/TJDeVries" target="_blank">YouTube</a> has been a great resource. Check it out!</p>
2025-02-05 17:48:02 +01:00
</li>
<li>
2025-02-05 19:22:23 +01:00
<p>Telescope is an essential plugin in my opinion. It's a fuzzy search engine built into Lua that can be configured in all sorts of ways. It adds a lot of functionality to your Neovim setup. I haven't realized its true potential yet, but it's awesome for file search and text search.</p>
2025-02-05 17:48:02 +01:00
</li>
</ul>
2025-02-05 19:22:23 +01:00
<p>I <em>have</em> tested this on both Linux and macOS, but it should work on Windows as well.</p>
<ul>
<li>Let's install it (we'll put all the commands in your terminal):</li>
<li>Paste this code into your <code>init</code> file.</li>
</ul>
<div class="codehilite"><pre><span></span><code><span class="k">call</span><span class="w"> </span><span class="nl">plug</span>#<span class="nv">begin</span><span class="ss">(</span><span class="nv">has</span><span class="ss">(</span><span class="s1">&#39;nvim&#39;</span><span class="ss">)</span><span class="w"> </span>?<span class="w"> </span><span class="nv">stdpath</span><span class="ss">(</span><span class="s1">&#39;data&#39;</span><span class="ss">)</span><span class="w"> </span>.<span class="w"> </span><span class="s1">&#39;/plugged&#39;</span><span class="w"> </span>:<span class="w"> </span><span class="s1">&#39;~/.vim/plugged&#39;</span><span class="ss">))</span>
2025-02-05 17:48:02 +01:00
<span class="err">&quot; Telescope install Neovim</span>
<span class="s2">&quot; Planery&quot;</span>
<span class="nv">Plug</span><span class="w"> </span><span class="s1">&#39;nvim-lua/plenary.nvim&#39;</span>
<span class="err">&quot; Telescope plugin</span>
<span class="err">Plug &#39;nvim-telescope/telescope.nvim&#39;</span>
<span class="err">&quot; Fuzzy Telescope fzf</span>
2025-02-05 19:22:23 +01:00
<span class="err">Plugin &#39;nvim-telescope/telescope-fzf-native.nvim&#39;, { &#39;do&#39;: &#39;make&#39; }</span>
2025-02-05 17:48:02 +01:00
<span class="err">call plug#end()</span>
</code></pre></div>
<ul>
<li>
2025-02-05 19:22:23 +01:00
<p>Note that we are installing more than one plugin here. Telescope requires another plugin called <a href="https://github.com/nvim-lua/plenary.nvim" target="_blank">Planery</a>. And another plugin is <a href="https://github.com/nvim-telescope/telescope.nvim#sorters" target="_blank">Telescope Sorter</a>, which supports fzf and <a href="https://github.com/nvim-telescope/telescope.nvim#suggested-dependencies" target="_blank">Telescope</a> syntax.</p>
2025-02-05 17:48:02 +01:00
</li>
<li>
2025-02-05 19:22:23 +01:00
<p><strong>To complete the installation, be sure to follow these three steps:</strong></p>
2025-02-05 17:48:02 +01:00
</li>
2025-02-05 19:22:23 +01:00
<li>Save init.vim <code>:w</code></li>
<li>Restore the source of init.vims <code>:so %</code> or restart <code>Neovim</code></li>
2025-02-05 17:48:02 +01:00
<li>
2025-02-05 19:22:23 +01:00
<p>Install the plugin using <code>:PlugInstall</code>.</p>
2025-02-05 17:48:02 +01:00
</li>
<li>
2025-02-05 19:22:23 +01:00
<p>Next we need to configure Telescope. This is a common practice among Vim plugins. Telescope is a Lua based plugin.</p>
2025-02-05 17:48:02 +01:00
</li>
<li>
2025-02-05 19:22:23 +01:00
<p>First we need to create a new lua folder in the directory: <code>nvim ~/.config/nvim/lua</code>.</p>
2025-02-05 17:48:02 +01:00
</li>
</ul>
<div class="codehilite"><pre><span></span><code>cd ~/.config/nvim
mkdir lua
</code></pre></div>
<ul>
2025-02-05 19:22:23 +01:00
<li>Inside the lua directory, we will create a subdirectory for the namespace of our plugin configurations. To understand why this is necessary, we need to explain how Vim handles file lookups. In short, creating a namespace subdirectory inside the lua directory prevents unwanted file collisions .</li>
2025-02-05 17:48:02 +01:00
</ul>
2025-02-05 19:22:23 +01:00
<p>I decided to use my GitHub nick as the name of my subdirectory:</p>
2025-02-05 17:48:02 +01:00
<div class="codehilite"><pre><span></span><code>cd ~/.config/nvim/lua
mkdir kankys
</code></pre></div>
<ul>
2025-02-05 19:22:23 +01:00
<li>It doesn't matter what you name the directory. Once you create it, you'll want to move to it using cd:</li>
2025-02-05 17:48:02 +01:00
</ul>
2025-02-05 19:22:23 +01:00
<p><code>cd ~/.config/nvim/lua/your-directory-name</code></p>
2025-02-05 17:48:02 +01:00
<ul>
<li>
2025-02-05 19:22:23 +01:00
<p>Note: your-directory-name is used as a placeholder. Replace it with the name of your directory you want.</p>
2025-02-05 17:48:02 +01:00
</li>
<li>
2025-02-05 19:22:23 +01:00
<p>In the namespace directory, create a plugin-name.lua file for each plugin you want/need to configure. You create Telescope like this (we are persistent in <code>cd ~/.config/nvim/lua/your-directory-name</code>
2025-02-05 17:48:02 +01:00
):</p>
</li>
</ul>
<p><code>nvim telescope.lua</code></p>
<ul>
<li>
2025-02-05 19:22:23 +01:00
<p>A useful Vim tip is that you can open files before they exist. If you close a file without saving it, it won't be created! In the example above, we open telescope.luav in Neovim. If we save the file, it will be created.</p>
2025-02-05 17:48:02 +01:00
</li>
<li>
2025-02-05 19:22:23 +01:00
<p>Our configuration for Telescope will be:</p>
2025-02-05 17:48:02 +01:00
</li>
</ul>
<div class="codehilite"><pre><span></span><code><span class="k">local</span><span class="w"> </span><span class="n">telescope</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">require</span><span class="p">(</span><span class="s1">&#39;telescope&#39;</span><span class="p">)</span>
<span class="n">telescope</span><span class="p">.</span><span class="n">setup</span><span class="w"> </span><span class="err">{}</span>
<span class="n">telescope</span><span class="p">.</span><span class="n">load_extension</span><span class="p">(</span><span class="s1">&#39;fzf&#39;</span><span class="p">)</span>
<span class="err">`````</span>
2025-02-05 19:22:23 +01:00
<span class="o">*</span><span class="w"> </span><span class="n">Paste</span><span class="w"> </span><span class="n">this</span><span class="w"> </span><span class="n">code</span><span class="w"> </span><span class="k">into</span><span class="w"> </span><span class="n">telescope</span><span class="p">.</span><span class="n">lua</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="k">save</span><span class="p">.</span><span class="w"> </span><span class="n">Everything</span><span class="w"> </span><span class="n">we</span><span class="w"> </span><span class="n">need</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">telescope</span><span class="p">.</span><span class="n">lua</span><span class="w"> </span><span class="k">file</span><span class="p">.</span>
<span class="o">*</span><span class="w"> </span><span class="n">The</span><span class="w"> </span><span class="n">above</span><span class="w"> </span><span class="n">example</span><span class="w"> </span><span class="n">gives</span><span class="w"> </span><span class="n">us</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">first</span><span class="w"> </span><span class="n">taste</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="n">Lua</span><span class="p">.</span><span class="w"> </span><span class="n">I</span><span class="s1">&#39;ve found that a lot of plugins need at least this setup in lua:</span>
2025-02-05 17:48:02 +01:00
2025-02-05 19:22:23 +01:00
<span class="s1">`` require(&#39;</span><span class="n">PLUGIN_NAME</span><span class="s1">&#39;).setup {} ``</span>
2025-02-05 17:48:02 +01:00
2025-02-05 19:22:23 +01:00
<span class="s1">I won&#39;</span><span class="n">t</span><span class="w"> </span><span class="n">dive</span><span class="w"> </span><span class="n">deep</span><span class="w"> </span><span class="k">into</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">Telescope</span><span class="w"> </span><span class="n">configuration</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">this</span><span class="w"> </span><span class="n">post</span><span class="p">.</span><span class="w"> </span><span class="k">If</span><span class="w"> </span><span class="n">you</span><span class="w"> </span><span class="n">want</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">see</span><span class="w"> </span><span class="ow">some</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">available</span><span class="w"> </span><span class="n">setup</span><span class="w"> </span><span class="n">options</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="n">additional</span><span class="w"> </span><span class="n">customization</span><span class="p">,</span><span class="w"> </span><span class="k">check</span><span class="w"> </span><span class="k">out</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="o">[</span><span class="n">documentation</span><span class="o">]</span><span class="p">(</span><span class="nl">https</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="p">.</span><span class="n">com</span><span class="o">/</span><span class="n">nvim</span><span class="o">-</span><span class="n">telescope</span><span class="o">/</span><span class="n">telescope</span><span class="p">.</span><span class="n">nvim#customization</span><span class="p">)</span><span class="err">{</span><span class="n">target</span><span class="o">=</span><span class="ss">&quot;_blank&quot;</span><span class="err">}</span><span class="p">.</span>
2025-02-05 17:48:02 +01:00
2025-02-05 19:22:23 +01:00
<span class="o">*</span><span class="w"> </span><span class="n">Don</span><span class="s1">&#39;t forget to save telescope.lua and exit Neovim with `` :wq ``.</span>
2025-02-05 17:48:02 +01:00
2025-02-05 19:22:23 +01:00
<span class="s1">* Next, we need to tell our init.vim that a lua file exists somewhere:</span>
2025-02-05 17:48:02 +01:00
2025-02-05 19:22:23 +01:00
<span class="s1">In my case, I would state:</span>
2025-02-05 17:48:02 +01:00
2025-02-05 19:22:23 +01:00
<span class="s1">`` lua require(&#39;</span><span class="n">kankys</span><span class="s1">&#39;) `` by pasting it into `~/.config/nvim/init.vim`</span>
2025-02-05 17:48:02 +01:00
2025-02-05 19:22:23 +01:00
<span class="s1">A couple of notes:</span>
<span class="s1">* **Paste this command under the vim-plug function ( `` call plug#end() )!**</span>
2025-02-05 17:48:02 +01:00
2025-02-05 19:22:23 +01:00
<span class="s1">* What does it do? At first it looks a bit magical and understanding it requires knowledge of Vim search, but basically this command will search for a lua file in your Vim runtime.</span>
<span class="s1">* in our case it is:</span>
2025-02-05 17:48:02 +01:00
2025-02-05 19:22:23 +01:00
<span class="s1">`` ~/.config/nvim/lua/your-directory-name/telescope.lua ``</span>
2025-02-05 17:48:02 +01:00
2025-02-05 19:22:23 +01:00
<span class="s1">* Instead of requiring every configuration file in our init.vim, we can just require the namespace directory. For this to work, we&#39;</span><span class="n">ll</span><span class="w"> </span><span class="n">need</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="k">add</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="k">file</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">our</span><span class="w"> </span><span class="n">namespace</span><span class="w"> </span><span class="n">directory</span><span class="w"> </span><span class="k">called</span><span class="w"> </span><span class="n">init</span><span class="p">.</span><span class="nl">lua</span><span class="p">:</span>
2025-02-05 17:48:02 +01:00
</code></pre></div>
2025-02-05 19:22:23 +01:00
<p>cd ~/.config/nvim/lua/your-directory-name
2025-02-05 17:48:02 +01:00
touch init.lua
````</p>
2025-02-05 19:22:23 +01:00
<p>The * init.lua file can be thought of as an index file. Inside init.lua we can load all our configuration files.</p>
2025-02-05 17:48:02 +01:00
<ul>
2025-02-05 19:22:23 +01:00
<li>In <code>init-lua</code> let's put the following code:</li>
2025-02-05 17:48:02 +01:00
</ul>
2025-02-05 19:22:23 +01:00
<p><code>require('your-directory-name/telescope')</code></p>
2025-02-05 17:48:02 +01:00
<ul>
<li>
2025-02-05 19:22:23 +01:00
<p><strong>You can easily understand everything I've said above if you look at the nvim configuration files here on <a href="https://codeberg.org/ApolloNvim/ApolloNvim2025" target="_blank">Git</a>.</strong> </p>
2025-02-05 17:48:02 +01:00
</li>
<li>
2025-02-05 19:22:23 +01:00
<p>From now on, all new lua configuration files will be in <code>lua/your-directory-name</code>. </p>
2025-02-05 17:48:02 +01:00
</li>
</ul>
<h2 id="telescope">Telescope</h2>
<ul>
<li>
2025-02-05 19:22:23 +01:00
<p>Telescope has a number of <a href="https://github.com/nvim-telescope/telescope.nvim#vim-commands" target="_blank">commands</a> that can be used, <code>:Telescope</code> in NORMAL mode in Neovim. A quick way to see all the available commands is to type <code>:Telescope</code> followed by a space and then click <code>&lt;Tab&gt;</code>. The tab button opens a list of autocomplete, available commands in Telescope. You can navigate the list using <code>&lt;Tab&gt;</code> and <code>&lt;Shift-Tab&gt;</code> in the opposite direction.</p>
2025-02-05 17:48:02 +01:00
</li>
<li>
2025-02-05 19:22:23 +01:00
<p>The Telescope command is shown below, for demonstration purposes:
2025-02-05 17:48:02 +01:00
<code>:Telescope find_files</code></p>
</li>
</ul>
2025-02-05 19:22:23 +01:00
<p>You can view the Telescope documentation in Neovim by:</p>
2025-02-05 17:48:02 +01:00
<p><code>:h telescope</code></p>
<div style="text-align: center;">
Copyright © 2024 - 2025 ApolloNvim
</div></p>
</article>
</section>
<!-- endblock -->
<!-- block footer -->
<footer>
<div class="d-flex flex-sm-row justify-content-between py-2 border-top drac-text-black drac-bg-cyan-green">
<a href="https://github.com/dracula/mkdocs" target="_blank" style="padding-left: 1%;"
class="footer-text drac-anchor drac-text-black drac-text-purple--hover">
Made with Dracula Theme for MkDocs
</a>
</div>
</footer>
<!-- endblock -->
</div>
</main>
<script>var base_url = '../../..';</script>
<script src="../../../assets/js/jquery-3.3.1.slim.min.js"></script>
<script src="../../../assets/js/bootstrap.bundle.min.js"></script>
<script src="../../../assets/js/mkdocs.js"></script>
<script src="../../../javascripts/extra.js" defer></script>
<script src="../../../search/main.js" defer></script>
</body>
</html>