<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Marin Lagacé - Coding</title><link href="https://www.marinlagace.ca/en/" rel="alternate"></link><link href="https://www.marinlagace.ca/feeds/coding.atom.xml" rel="self"></link><id>https://www.marinlagace.ca/en/</id><updated>2020-12-05T14:49:00-05:00</updated><entry><title>Qt Translation: Qualifying with unknown namespace/class</title><link href="https://www.marinlagace.ca/en/2020/qt-translation-qualifying-with-unknown-namespace-class.html" rel="alternate"></link><published>2020-12-05T14:49:00-05:00</published><updated>2020-12-05T14:49:00-05:00</updated><author><name>Marin</name></author><id>tag:www.marinlagace.ca,2020-12-05:/en/2020/qt-translation-qualifying-with-unknown-namespace-class.html</id><summary type="html">&lt;p class="first last"&gt;Fixing the 'Qualifying with unknown namespace/class' error when doing
translations in Qt.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;I was translating a widget library written in &lt;a class="reference external" href="https://www.qt.io"&gt;Qt&lt;/a&gt; when I
got the following error.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;[ 44%] Generating foo_fr.ts
Bar.cpp:40: Qualifying with unknown namespace/class ::Bar
Updating &amp;#39;foo_fr.ts&amp;#39;...
    Found 3 source text(s) (3 new and 0 already existing)
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I could not find a lot of info about this error on the internet. Luckily, I ran
across &lt;a class="reference external" href="https://stackoverflow.com/a/24245615"&gt;this post&lt;/a&gt; on
&lt;span class="app"&gt;StackOverflow&lt;/span&gt; that guided me toward a solution.&lt;/p&gt;
&lt;p&gt;The problem came from the way the library was designed. Its public header files
are not in the same directory as its implementation files.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;Foo
|-- include
|   &amp;#39;-- foo
|       &amp;#39;-- Bar.hpp
+-- src
|   |-- Bar.cpp
|   +-- CMakeLists.txt
+-- CMakeLists.txt
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This poses a problem because &lt;span class="app"&gt;Qt&lt;/span&gt;'s translation utilities expect the header
files to be in the same directory as their implementation files. In case they
are not, one must specify their directory when calling &lt;code&gt;lupdate&lt;/code&gt;. Since
the library I was translating uses &lt;a class="reference external" href="https://cmake.org"&gt;CMake&lt;/a&gt; as its build
tool, this is done using the &lt;code&gt;qt5_create_translation&lt;/code&gt; macro and adding the
&lt;code&gt;-I&lt;/code&gt; flag with the header files path to the &lt;code&gt;OPTIONS&lt;/code&gt; parameter.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c"&gt;# Foo/src/CMakeLists.txt&lt;/span&gt;
&lt;span class="nb"&gt;qt5_create_translation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;QM_FILES&lt;/span&gt;
    &lt;span class="s"&gt;Bar.cpp&lt;/span&gt;
&lt;span class="hll"&gt;    &lt;span class="s"&gt;foo_fr.ts&lt;/span&gt;
&lt;/span&gt;    &lt;span class="s"&gt;OPTIONS&lt;/span&gt; &lt;span class="s"&gt;-I&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CMAKE_CURRENT_SOURCE_DIR&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/../include&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;!-- vim: ft=pelican.rst --&gt;
</content><category term="Qt"></category><category term="CMake"></category></entry><entry><title>Portable Vim on Windows</title><link href="https://www.marinlagace.ca/en/2020/portable-vim-on-windows.html" rel="alternate"></link><published>2020-12-01T21:36:00-05:00</published><updated>2020-12-01T21:36:00-05:00</updated><author><name>Marin</name></author><id>tag:www.marinlagace.ca,2020-12-01:/en/2020/portable-vim-on-windows.html</id><summary type="html">&lt;p class="first last"&gt;How to configure a portable version of Vim on Windows to work with
Fugitive and Ultisnips.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;When doing &lt;span class="os"&gt;Windows&lt;/span&gt; development, I usually use &lt;a class="reference external" href="https://www.vim.org/"&gt;Vim&lt;/a&gt; under &lt;a class="reference external" href="https://www.cygwin.com"&gt;Cygwin&lt;/a&gt;. I use my
little &lt;a class="reference external" href="https://www.marinlagace.ca/en/2020/portable-cygwin.html"&gt;Cygwin hack&lt;/a&gt; to make it portable.
This allows me to easily copy my &lt;span class="app"&gt;Cygwin&lt;/span&gt; installation along with all my
settings to multiple computer.&lt;/p&gt;
&lt;p&gt;I rely heavily on &lt;a class="reference external" href="http://github.com/tpope/vim-fugitive"&gt;Fugitive&lt;/a&gt; which is a
great &lt;span class="app"&gt;Vim&lt;/span&gt; plugin for &lt;span class="app"&gt;Git&lt;/span&gt;. Unfortunately, it runs extremely slowly
on my main work computer. So, on that computer, I use &lt;a class="reference external" href="https://portableapps.com/apps/development/gvim_portable"&gt;gVim Portable&lt;/a&gt; from the
&lt;span class="app"&gt;PortableApps&lt;/span&gt; platform. It works great. The tricky part is making it work
along with &lt;span class="app"&gt;Git&lt;/span&gt; (for &lt;span class="app"&gt;Fugitive&lt;/span&gt;) and &lt;span class="lang"&gt;Python&lt;/span&gt; (for &lt;a class="reference external" href="https://github.com/sirver/UltiSnips"&gt;UltiSnips&lt;/a&gt;). It involves installing &lt;span class="app"&gt;Git&lt;/span&gt;
along with the proper version of &lt;span class="lang"&gt;Python&lt;/span&gt; and tweaking a configuration
file of &lt;span class="app"&gt;gVim Portable&lt;/span&gt;.&lt;/p&gt;
&lt;div class="section" id="installing-portable-git"&gt;
&lt;h2&gt;Installing Portable Git&lt;/h2&gt;
&lt;p&gt;Download it from their &lt;a class="reference external" href="https://git-scm.com/download/win"&gt;website&lt;/a&gt;. Make sure
to download the portable version.&lt;/p&gt;
&lt;img alt="Portable Git Download" class="align-center" src="https://www.marinlagace.ca/en/images/Portable_Git_Download.png" /&gt;
&lt;p&gt;Then, install it alongside of &lt;span class="app"&gt;gVim&lt;/span&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;e:
├── gVimPortable
│   ├── App
│   ├── ...
│   ├── gVimPortable.exe
│   └── ...
└── PortableGit
    ├── bin
    ├── ...
    ├── git-bash.exe
    ├── git-cmd.exe
    └── ...
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="installing-python"&gt;
&lt;h2&gt;Installing Python&lt;/h2&gt;
&lt;p&gt;It is important to install the appropriate version of &lt;span class="lang"&gt;Python&lt;/span&gt;. It needs
to be a &lt;span class="lang"&gt;Python 3&lt;/span&gt; version because &lt;span class="app"&gt;UltiSnips&lt;/span&gt; does not support
&lt;span class="lang"&gt;Python 2&lt;/span&gt; anymore. Furthermore, it needs to be the &lt;span class="lang"&gt;Python&lt;/span&gt; version
expected by &lt;span class="app"&gt;Vim&lt;/span&gt;. See my &lt;a class="reference external" href="https://www.marinlagace.ca/en/2020/ultisnips-on-cygwin.html"&gt;previous article&lt;/a&gt; on installing &lt;span class="app"&gt;Ultisnips&lt;/span&gt; on
&lt;span class="os"&gt;Cygwin&lt;/span&gt; for a description of the technique to use to find out which
&lt;span class="lang"&gt;Python&lt;/span&gt; version your installation of &lt;span class="app"&gt;Vim&lt;/span&gt; expects to find on your
system.&lt;/p&gt;
&lt;p&gt;As of this writing, &lt;span class="app"&gt;gVim Portable&lt;/span&gt; needs &lt;a class="reference external" href="https://www.python.org/downloads/release/python-368/"&gt;Python 3.6&lt;/a&gt;. Furthermore,
&lt;span class="app"&gt;gVim Portable&lt;/span&gt; was compiled for 32-bit systems.&lt;/p&gt;
&lt;img alt="gVim Portable version 32bit" class="align-center" src="https://www.marinlagace.ca/en/images/gVim_Portable_version_32bit.png" /&gt;
&lt;p&gt;So the portable &lt;em&gt;x86&lt;/em&gt; version should be used.&lt;/p&gt;
&lt;img alt="Python 386 X86 Portable Download" class="align-center" src="https://www.marinlagace.ca/en/images/Python_368_X86_Portable_Download.png" /&gt;
&lt;p&gt;As for &lt;span class="app"&gt;Git&lt;/span&gt;, install it alongside &lt;span class="app"&gt;gVim&lt;/span&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;e:
├── gVimPortable
│   ├── ...
│   ├── gVimPortable.exe
│   └── ...
├── PortableGit
│   ├── ...
│   ├── git-bash.exe
│   ├── git-cmd.exe
│   └── ...
└── Python36-x86
    ├── ...
    ├── python.exe
    ├── ...
    ├── python36.dll
    └── ...
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="configuring-gvim-portable"&gt;
&lt;h2&gt;Configuring gVim Portable&lt;/h2&gt;
&lt;p&gt;We must now tell &lt;span class="app"&gt;gVim&lt;/span&gt; where to find our intallations of
&lt;span class="app"&gt;Git&lt;/span&gt; and &lt;span class="app"&gt;Python&lt;/span&gt;. For that, we must edit the
&lt;span class="path"&gt;gVimPortable.ini&lt;/span&gt; file located deep into the directory structure.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;e:
└── gVimPortable
    └── App
        └── AppData
            └── Launcher
                └── gVimPortable.ini
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Add the &lt;code&gt;PYTHON_HOME&lt;/code&gt; and &lt;code&gt;GIT_HOME&lt;/code&gt; variable definitions to the
&lt;code&gt;[Environment]&lt;/code&gt; section of the file.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;[Environment]&lt;/span&gt;
&lt;span class="na"&gt;VIM&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;%PAL:AppDir%\vim&lt;/span&gt;
&lt;span class="na"&gt;VIMRUNTIME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;%PAL:AppDir%\vim\vim80&lt;/span&gt;
&lt;span class="na"&gt;HOME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;%PAL:DataDir%\settings&lt;/span&gt;
&lt;span class="na"&gt;LANG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;%PAL:LanguageCustom%&lt;/span&gt;
&lt;span class="hll"&gt;&lt;span class="na"&gt;PYTHON_HOME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;%PAL:PortableAppsDir%\Python36-x86&lt;/span&gt;
&lt;/span&gt;&lt;span class="hll"&gt;&lt;span class="na"&gt;GIT_HOME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;%PAL:PortableAppsDir%\PortableGit&lt;/span&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Finally, modify the &lt;code&gt;PATH&lt;/code&gt; variable in your &lt;span class="path"&gt;.vimrc&lt;/span&gt; file to add the
path to your &lt;span class="app"&gt;Git&lt;/span&gt; and &lt;span class="app"&gt;Python&lt;/span&gt; installation.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;!&lt;/span&gt;empty&lt;span class="p"&gt;(&lt;/span&gt;$PYTHON_HOME&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;let&lt;/span&gt; $PATH .&lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;;&amp;#39;&lt;/span&gt; . $PYTHON_HOME . &lt;span class="s1"&gt;&amp;#39;;&amp;#39;&lt;/span&gt; . $PYTHON_HOME . &lt;span class="s1"&gt;&amp;#39;\scripts&amp;#39;&lt;/span&gt;
  &lt;span class="k"&gt;let&lt;/span&gt; $PYTHONHOME &lt;span class="p"&gt;=&lt;/span&gt; $PYTHON_HOME
&lt;span class="k"&gt;endif&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;!&lt;/span&gt;empty&lt;span class="p"&gt;(&lt;/span&gt;$GIT_HOME&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;let&lt;/span&gt; $PATH .&lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;;&amp;#39;&lt;/span&gt; . $GIT_HOME . &lt;span class="s1"&gt;&amp;#39;\bin&amp;#39;&lt;/span&gt;
&lt;span class="k"&gt;endif&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;After this, &lt;span class="app"&gt;Fugitive&lt;/span&gt; and &lt;span class="app"&gt;Ultisnips&lt;/span&gt; should work fine when editing
files in your &lt;span class="app"&gt;gvim&lt;/span&gt; installation.&lt;/p&gt;
&lt;!-- vim: ft=pelican.rst --&gt;
&lt;/div&gt;
</content><category term="Vim"></category><category term="Windows"></category></entry><entry><title>UltiSnips on Cygwin</title><link href="https://www.marinlagace.ca/en/2020/ultisnips-on-cygwin.html" rel="alternate"></link><published>2020-06-27T10:01:00-04:00</published><updated>2020-06-27T10:01:00-04:00</updated><author><name>Marin</name></author><id>tag:www.marinlagace.ca,2020-06-27:/en/2020/ultisnips-on-cygwin.html</id><summary type="html">&lt;p class="first last"&gt;UltiSnips runs on Python but which version?&lt;/p&gt;
</summary><content type="html">&lt;p&gt;&lt;a href="https://github.com/sirver/UltiSnips" class="reference external"&gt;UltiSnips&lt;/a&gt; is the plugin for
&lt;a href="https://www.vim.org/" class="reference external"&gt;Vim&lt;/a&gt; that I use the most. It allows for the creation of
macros (named &lt;em&gt;snippets&lt;/em&gt;) that insert predefined chuncks of text at the desired
location in a file. These snippets automate the insertion of repetitive lines of
code. They can be very simple like the following one which write the necessary
&lt;span class=lang&gt;C++&lt;/span&gt; code to print text to the console:&lt;/p&gt;
&lt;img src="https://www.marinlagace.ca/en/images/UltiSnips_cpp_sout.gif" alt="UltiSnips simple snippet" class=align-center&gt;
&lt;p&gt;They can be much more complex like this one which creates the header for a
&lt;span class=lang&gt;C++&lt;/span&gt; class:&lt;/p&gt;
&lt;img src="https://www.marinlagace.ca/en/images/UltiSnips_cpp_header2.gif" alt="UltiSnips complex snippet" class=align-center&gt;
&lt;p&gt;&lt;span class=app&gt;UltiSnips&lt;/span&gt; requires &lt;span class=lang&gt;Python&lt;/span&gt;3 to run. Thus, &lt;span class=app&gt;Vim&lt;/span&gt; must have
been compiled with &lt;span class=lang&gt;Python&lt;/span&gt;3 support. To check, start &lt;span class=app&gt;Vim&lt;/span&gt; with
the &lt;tt class="docutils literal"&gt;&lt;span class=pre&gt;--version&lt;/span&gt;&lt;/tt&gt; argument.&lt;/p&gt;
&lt;img src="https://www.marinlagace.ca/en/images/Cygwin_Vim_Version.png" alt="Vim Version on Cygwin" class=align-center&gt;
&lt;p&gt;Fortunately, this is the case for the version of &lt;span class=app&gt;Vim&lt;/span&gt; found in the
&lt;span class=app&gt;Cygwin&lt;/span&gt; repo.&lt;/p&gt;
&lt;p&gt;It is not enough to have installed &lt;span class=lang&gt;Python&lt;/span&gt;
for &lt;span class=app&gt;UltiSnips&lt;/span&gt; to work
out of the box. We need to have installed the same version that &lt;span class=app&gt;Vim&lt;/span&gt; was
compiled for. To check that the link between &lt;span class=app&gt;Vim&lt;/span&gt; and &lt;span class=lang&gt;Python&lt;/span&gt; works
proprely, we can simply try to run any &lt;span class=lang&gt;Python&lt;/span&gt; expression in &lt;span class=app&gt;Vim&lt;/span&gt;
using the &lt;tt class="docutils literal"&gt;:python3&lt;/tt&gt; command.
&lt;sup id=sf-ultisnips-on-cygwin-1-back&gt;&lt;a href=#sf-ultisnips-on-cygwin-1 title=" UltiSnips does not support Python2 since commit d2f42d6. It is thus important to use the :python3 command for our test. " class=simple-footnote&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;img src="https://www.marinlagace.ca/en/images/Cygwin_Vim_Python_Version_Detection.png" alt="Finding the Python version in Vim on Cygwin" class=align-center&gt;
&lt;p&gt;If the &lt;span class=app&gt;Vim&lt;/span&gt;/&lt;span class=lang&gt;Python&lt;/span&gt; link is correct, the command will be executed
without any error. Otherwise, an error message will be displayed at the bottom
of the window.&lt;/p&gt;
&lt;img src="https://www.marinlagace.ca/en/images/Cygwin_Vim_Python_Version_Error.png" alt="Error message showing the Python version in Vim on Cygwin" class=align-center&gt;
&lt;p&gt;We see here that &lt;span class=app&gt;Vim&lt;/span&gt; is looking for &lt;span class=lang&gt;Python&lt;/span&gt; 3.7. We just need to
start the &lt;span class=app&gt;Cygwin&lt;/span&gt; installation app and install the &lt;tt class="docutils literal"&gt;python37&lt;/tt&gt; package.&lt;/p&gt;
&lt;img src="https://www.marinlagace.ca/en/images/Cygwin_Python37_Package.png" alt="Python37 Package on Cygwin" class=align-center&gt;
&lt;p&gt;Once installed, &lt;span class=app&gt;UltiSnips&lt;/span&gt; should properly work.&lt;/p&gt;
&lt;!-- vim: ft=pelican.rst --&gt;
&lt;ol class=simple-footnotes&gt;&lt;li id=sf-ultisnips-on-cygwin-1&gt; &lt;span class=app&gt;UltiSnips&lt;/span&gt; does not support &lt;span class=lang&gt;Python&lt;/span&gt;2 since
commit &lt;a href="https://github.com/SirVer/ultisnips/commit/d2f42d6b43902e5b2ef7bfca2579ccb6cc9f52c0" class="reference external"&gt;d2f42d6&lt;/a&gt;.
It is thus important to use the &lt;tt class="docutils literal"&gt;:python3&lt;/tt&gt; command for our test.
 &lt;a href=#sf-ultisnips-on-cygwin-1-back class=simple-footnote-back&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</content><category term="vim"></category><category term="cygwin"></category></entry><entry><title>FileBeagle</title><link href="https://www.marinlagace.ca/en/2020/filebeagle.html" rel="alternate"></link><published>2020-05-31T19:50:00-04:00</published><updated>2020-05-31T19:50:00-04:00</updated><author><name>Marin</name></author><id>tag:www.marinlagace.ca,2020-05-31:/en/2020/filebeagle.html</id><summary type="html">&lt;p class="first last"&gt;A great directory browser for Vim worth discovering.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;&lt;a href="https://www.vim.org/" class="reference external"&gt;Vim&lt;/a&gt; has &lt;a href="https://shapeshed.com/vim-netrw/" class="reference external"&gt;netrw&lt;/a&gt; as
a built-in directory browser. It is pretty basic and some people like that.
Others find it a bit too basic or unintuitive. &lt;a href="https://tpo.pe/" class="reference external"&gt;Tim Pope&lt;/a&gt;
wrote &lt;a href="https://github.com/tpope/vim-vinegar" class="reference external"&gt;vinegar&lt;/a&gt; to "enhance
&lt;span class=app&gt;netrw&lt;/span&gt;, partially in an attempt to mitigate the need for more disruptive
'project drawer' style plugins".
&lt;sup id=sf-filebeagle-1-back&gt;&lt;a href=#sf-filebeagle-1 title=" https://github.com/tpope/vim-vinegar/blob/master/README.markdown " class=simple-footnote&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;A very popular tree explorer plugin is &lt;a href="https://github.com/scrooloose/nerdtree" class="reference external"&gt;NERDTree&lt;/a&gt;. It is very pretty and has a &lt;a href="https://www.youtube.com/watch?v=CPu9mDpSYj0" class="reference external"&gt;lot of
features&lt;/a&gt; but I find it a little
too heavy for my taste.&lt;/p&gt;
&lt;p&gt;I prefer to use &lt;a href="https://github.com/jeetsukumaran/vim-filebeagle" class="reference external"&gt;FileBeagle&lt;/a&gt;
as my directory browser. It is simple and efficient. As stated by its developer:&lt;/p&gt;
&lt;blockquote&gt;
&lt;span class=app&gt;Vim&lt;/span&gt; is a text editor, not an operating system that can edit text.
&lt;span class=app&gt;FileBeagle&lt;/span&gt; respects this, and attempts to conform to this both in
spirit and in practice. If you are looking for a plugin to serve as a
filesystem manager from within &lt;span class=app&gt;Vim&lt;/span&gt;, &lt;span class=app&gt;FileBeagle&lt;/span&gt; is not it.
&lt;span class=app&gt;FileBeagle&lt;/span&gt; does not support copying, deleting, moving/renaming, or
any other filesystem operations. &lt;span class=app&gt;FileBeagle&lt;/span&gt; lists and opens files.
&lt;sup id=sf-filebeagle-2-back&gt;&lt;a href=#sf-filebeagle-2 title=" https://github.com/jeetsukumaran/vim-filebeagle/blob/master/README.md " class=simple-footnote&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/blockquote&gt;
&lt;p&gt;The &lt;span class=kbd&gt;-&lt;/span&gt; key is mapped to open &lt;span class=app&gt;FileBeagle&lt;/span&gt; on the directory of the
current buffer. You can then use the standard &lt;span class=app&gt;Vim&lt;/span&gt; navigation keys to move
to a file or a directory or press &lt;span class=kbd&gt;-&lt;/span&gt; to go to the parent directory.
Pressing &lt;span class=kbd&gt;Enter&lt;/span&gt; will either go into the selected directory or open the
selected file for editing. There are many more functions available. I refer you
to the &lt;a href="https://github.com/jeetsukumaran/vim-filebeagle/blob/master/doc/filebeagle.txt" class="reference external"&gt;plugin's documentation&lt;/a&gt;
for more info.&lt;/p&gt;
&lt;img src="https://www.marinlagace.ca/en/images/FileBeagle.gif" alt=FileBeagle class=align-center&gt;
&lt;p&gt;I like &lt;span class=app&gt;FileBeagle&lt;/span&gt; to display hidden files and relative line numbers. Here
are the variables I set in my &lt;tt class="docutils literal"&gt;.vimrc&lt;/tt&gt; file to accomplish that.&lt;/p&gt;
&lt;div class=highlight&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=k&gt;let&lt;/span&gt; filebeagle_show_hidden&lt;span class=p&gt;=&lt;/span&gt;&lt;span class=m&gt;1&lt;/span&gt;
&lt;span class=k&gt;let&lt;/span&gt; filebeagle_show_line_numbers&lt;span class=p&gt;=&lt;/span&gt;&lt;span class=m&gt;1&lt;/span&gt;
&lt;span class=k&gt;let&lt;/span&gt; filebeagle_show_line_relativenumbers&lt;span class=p&gt;=&lt;/span&gt;&lt;span class=m&gt;0&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Give &lt;span class=app&gt;FileBeagle&lt;/span&gt; a try. You might like it.&lt;/p&gt;
&lt;!-- vim: ft=pelican.rst --&gt;
&lt;ol class=simple-footnotes&gt;&lt;li id=sf-filebeagle-1&gt; &lt;a href="https://github.com/tpope/vim-vinegar/blob/master/README.markdown" class="reference external"&gt;https://github.com/tpope/vim-vinegar/blob/master/README.markdown&lt;/a&gt;  &lt;a href=#sf-filebeagle-1-back class=simple-footnote-back&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li id=sf-filebeagle-2&gt; &lt;a href="https://github.com/jeetsukumaran/vim-filebeagle/blob/master/README.md" class="reference external"&gt;https://github.com/jeetsukumaran/vim-filebeagle/blob/master/README.md&lt;/a&gt;
 &lt;a href=#sf-filebeagle-2-back class=simple-footnote-back&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</content><category term="vim"></category></entry></feed>