<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Felix</title>
    <description>The latest articles on DEV Community by Felix (@doctorscott).</description>
    <link>https://dev.to/doctorscott</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1774284%2F65bc663f-096b-4c20-b499-7b26bdc5b142.png</url>
      <title>DEV Community: Felix</title>
      <link>https://dev.to/doctorscott</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/doctorscott"/>
    <language>en</language>
    <item>
      <title>neovim and lazygit, perfect harmony</title>
      <dc:creator>Felix</dc:creator>
      <pubDate>Fri, 12 Jul 2024 23:16:43 +0000</pubDate>
      <link>https://dev.to/doctorscott/neovim-and-lazygit-perfect-harmony-2mgl</link>
      <guid>https://dev.to/doctorscott/neovim-and-lazygit-perfect-harmony-2mgl</guid>
      <description>&lt;p&gt;I enjoy using both lazygit and nvim, I even have the lazygit.nvim plugin, but a couple things are stopping my setup from being better&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;When I open lazygit with the &lt;code&gt;LazyGit&lt;/code&gt; command, it does not open at the current file in my buffer I opened from&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When I want to edit a file highlighted in lazygit, I cannot do it in the window I opened lazy git from, only in the current floating pane&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This can be improved!&lt;/p&gt;

&lt;p&gt;First, I added a new keymap to my nvim config to launch lazygit and then do a search for the filename from the current buffer&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight lua"&gt;&lt;code&gt;&lt;span class="n"&gt;vim&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;keymap&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"n"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;leader&amp;gt;lg"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="c1"&gt;--  get file name with extension&lt;/span&gt;
    &lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;vim&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;expand&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"%:t"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;vim&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cmd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"LazyGit"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;-- Wait a bit for LazyGit to load&lt;/span&gt;
    &lt;span class="n"&gt;vim&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;defer_fn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="c1"&gt;-- search for the file, highlight, and exit search mode in lazygit&lt;/span&gt;
        &lt;span class="n"&gt;vim&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nvim_feedkeys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"/"&lt;/span&gt; &lt;span class="o"&gt;..&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"t"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;vim&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nvim_input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;CR&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;vim&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nvim_input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;ESC&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;-- (milliseconds)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;desc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"[g]it"&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And then in my lazygit config, I used &lt;code&gt;nvr&lt;/code&gt; (neovim remote) to launch when hitting &lt;code&gt;e&lt;/code&gt; to edit the file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;os&lt;/span&gt;:
  &lt;span class="n"&gt;editPreset&lt;/span&gt;: &lt;span class="s1"&gt;'nvim'&lt;/span&gt;
  &lt;span class="c"&gt;# Using -l here to change to the previous window via ":wincmd p".
&lt;/span&gt;  &lt;span class="n"&gt;edit&lt;/span&gt;: &lt;span class="s2"&gt;"nvr -l --remote {{filename}}"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Pretty cool stuff!&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Edit as of 27 January 2026
&lt;/h2&gt;

&lt;p&gt;This stopped working as elegantly for me, the edit command was working, but would not close LazyGit and I had to close it manually (gross).&lt;/p&gt;

&lt;p&gt;I have fixed it, if you are having issues try this workaround:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt; &lt;span class="n"&gt;lazygit&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;.&lt;span class="n"&gt;yml&lt;/span&gt;

&lt;span class="n"&gt;os&lt;/span&gt;:
  &lt;span class="n"&gt;editPreset&lt;/span&gt;: &lt;span class="s1"&gt;'nvim'&lt;/span&gt;
  &lt;span class="n"&gt;edit&lt;/span&gt;: &lt;span class="s2"&gt;"if [ -n \"&lt;/span&gt;$&lt;span class="n"&gt;NVIM&lt;/span&gt;\&lt;span class="s2"&gt;" ]; then nvim --server $NVIM --remote-send '&amp;lt;C-\\&amp;gt;&amp;lt;C-n&amp;gt;&amp;lt;cmd&amp;gt;close&amp;lt;cr&amp;gt;' &amp;amp;&amp;amp; nvim --server $NVIM --remote {{filename}}; else nvim {{filename}}; fi"&lt;/span&gt;
  &lt;span class="n"&gt;editInTerminal&lt;/span&gt;: &lt;span class="n"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Looks a little hacky but it works!&lt;/p&gt;




</description>
      <category>neovim</category>
      <category>vim</category>
      <category>git</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
