<?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: Tymofij</title>
    <description>The latest articles on DEV Community by Tymofij (@tymofij).</description>
    <link>https://dev.to/tymofij</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%2F967770%2F7d189224-1896-42c4-a00d-e4b6748ee7bf.jpeg</url>
      <title>DEV Community: Tymofij</title>
      <link>https://dev.to/tymofij</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tymofij"/>
    <language>en</language>
    <item>
      <title>Як модифікувати розкладку на мак? Як створити розкладку для української латинки?</title>
      <dc:creator>Tymofij</dc:creator>
      <pubDate>Tue, 24 Jan 2023 00:24:59 +0000</pubDate>
      <link>https://dev.to/tymofij/iak-modifikuvati-rozkladku-na-mak-iak-stvoriti-rozkladku-dlia-ukrayinskoyi-latinki-ffl</link>
      <guid>https://dev.to/tymofij/iak-modifikuvati-rozkladku-na-mak-iak-stvoriti-rozkladku-dlia-ukrayinskoyi-latinki-ffl</guid>
      <description>&lt;p&gt;Počnu z motyvaciji cijeji statti. Cja stattja motyvovana latynkoju ta bažannjam jiji vykorystovuvaty, a dlja cjogo potribno maty vidpovidni rozkladky.&lt;/p&gt;

&lt;p&gt;Коротка згадка про абетку латинки та те як її читати - &lt;a href="https://www.reddit.com/r/ukr_latynka/comments/108faft/%D0%B4%D0%BB%D1%8F_%D1%87%D0%BE%D0%B3%D0%BE_%D1%83%D0%BA%D1%80%D0%B0%D1%97%D0%BD%D1%81%D1%8C%D0%BA%D1%96%D0%B9_%D0%BC%D0%BE%D0%B2%D1%96_%D0%BB%D0%B0%D1%82%D0%B8%D0%BD%D0%BA%D0%B0_%D1%8F%D0%BA_%D1%97%D1%97_%D1%80%D0%BE%D0%B7%D1%83%D0%BC%D1%96%D1%82%D0%B8/" rel="noopener noreferrer"&gt;покликання&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Potencijni varianty:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Vykorystaty Horvats'ku rokladku abo jij podibnu, kotra mistyme neobhidni symvoly:
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fra6uxfkll06mjced4fdx.png" alt="Image description" width="800" height="410"&gt;
&lt;/li&gt;
&lt;li&gt;Stvoryty vlasnyj variant rozkladky. Ce mistyme nastupni peregavy:

&lt;ol&gt;
&lt;li&gt;Možlyvist' stvoryty ob'jednanu rozkladku z anglijs'koju, ščo nadast' možlyvist' pysaty jak ukrajin'skoju, tak i anglijs'koju bez zminy rozkladky.&lt;/li&gt;
&lt;li&gt;Obraty vlasne roztašuvannja dlja cyh klaviš aby bylo zručno.&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;/ol&gt;

&lt;h2&gt;
  
  
  Shema stvorennja vlasnoji rozkladky pid mac:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Instaljujemo programu pid naznoju &lt;code&gt;Ukulele&lt;/code&gt;, same vona dozvolyt' modyfikuvaty rozkladku.

&lt;ul&gt;
&lt;li&gt;instaljuvannja za dopomogoju &lt;code&gt;.dmg&lt;/code&gt; fajlu - perehodymo na &lt;a href="https://software.sil.org/ukelele/" rel="noopener noreferrer"&gt;sajt&lt;/a&gt; ,zavantažujemo, zapuskajemo cej fajl ta vykonujemo instrukciji&lt;/li&gt;
&lt;li&gt;abo instaljujemo za dopomogoju &lt;code&gt;brew&lt;/code&gt; - &lt;code&gt;brew install --cask ukelele&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Znahodymo symvoly ta kopijujemo jih:
&lt;strong&gt;Jaki symvoly nam potribno bude dodaty?&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/%C4%8C" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Č&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/%C5%A0" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Š&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/%C5%BD" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Ž&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/%C4%9C" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Ĝ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Vidkryvajemo Ukulele ta stvorjujemo novu rozkladku.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fka3424aqatv1chqdr36p.png" alt="Image description" width="800" height="951"&gt;

&lt;ol&gt;
&lt;li&gt;Prydumujemo nazvu, napryklad &lt;code&gt;English + Ukrainian&lt;/code&gt; i obyrajemo bazovu rozkladku. U vlasnomu vypadku ja obrav colemak, oskil'ky vidčuvaju, ščo pal'ci menše napružujut'sja pid čas jiji vykorystannja.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fub0khvqmrxtt3fc9pgrj.jpeg" alt="Image description" width="800" height="621"&gt;
&lt;/li&gt;
&lt;li&gt;Obyrajemo miscja kudy budemo vstaljaty 4 novi symvoly, podvijno klikajemo na obrane, zminjujemo zmist ta natyskajemo &lt;code&gt;Done&lt;/code&gt;. Vmist može buty bud' jakym, navit' nastil'ky dyvnym. Aby stvoryty ne prosto &lt;code&gt;Ukrainian latynka&lt;/code&gt; roklkadku, a ob'jednanu nam potribno dodaty novi symvoly na &lt;code&gt;option&lt;/code&gt; šar. Tobto š može = option + j, napryklad, bo j pid vkazivnym pal'cem na qwerty rozkladci. Dodavaty novi symvoly na &lt;code&gt;option&lt;/code&gt; šar abo robyty inši zaminy obyraty lyše vam. Jak toj tak i toj variant možlyvi. Ne zabud'te prorobyty analogični operaciji dlja velykyh bukv z zatysnenym &lt;code&gt;shift&lt;/code&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fglohqemtg4fwsi50xtk5.jpeg" alt="Image description" width="800" height="310"&gt;
&lt;/li&gt;
&lt;li&gt;Pislja proroblennja poperednjogi operaciji zi vsima symvolamy možemo eksportuvaty.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0jrb31gyv0czc2yfw69z.png" alt="Image description" width="800" height="962"&gt;
&lt;/li&gt;
&lt;li&gt;Znahodymo ta vidkruvajemo utvorenyj &lt;code&gt;.dmg&lt;/code&gt; -&amp;gt; podvijnyj klik.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2a1t82fn6vum14yjuly4.jpeg" alt="Image description" width="800" height="468"&gt;
&lt;/li&gt;
&lt;li&gt;Peretjagujemo, podvijnyj klik na &lt;code&gt;install for current user&lt;/code&gt; ta perezavantažujemo nout.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw68f8n7gq1qcy7eiodh6.png" alt="Image description" width="800" height="350"&gt;
&lt;/li&gt;
&lt;li&gt;Vidkruvajemo systemni nalaštuvannja -&amp;gt; keybord layout.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpmsdx54t2ffr9ut2i37m.png" alt="Image description" width="434" height="376"&gt;
&lt;/li&gt;
&lt;li&gt;Natyskajemo dodaty.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fli5krqb0f1xrqs3ki3y4.jpeg" alt="Image description" width="800" height="664"&gt;
&lt;/li&gt;
&lt;li&gt;V pošuku znahodymo za raniše prydumanoju nazvoju ta klikajemo &lt;code&gt;add&lt;/code&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv4oznsfle970sbhuh0kj.jpeg" alt="Image description" width="800" height="634"&gt;
&lt;/li&gt;
&lt;li&gt;Ja vas vitaju🔥. Vy povnocinnyj vlasnyk rozkladky z ukrajins'koju latynkoju i možete popularyzuvaty jiji iz zručnistju)&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>discuss</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>Використання nvim як повноцінний редактор для коду. nvim 2 lecture</title>
      <dc:creator>Tymofij</dc:creator>
      <pubDate>Mon, 28 Nov 2022 23:43:10 +0000</pubDate>
      <link>https://dev.to/tymofij/vikoristannia-nvim-iak-povnotsinnii-riedaktor-dlia-kodu-nvim-2-lecture-5f73</link>
      <guid>https://dev.to/tymofij/vikoristannia-nvim-iak-povnotsinnii-riedaktor-dlia-kodu-nvim-2-lecture-5f73</guid>
      <description>&lt;h2&gt;
  
  
  Про що буде поточна стаття?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Про плагіни та написання конфігурування налаштувань нвіму.&lt;/li&gt;
&lt;li&gt;Про буфери, вікна та split view.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Плагіни та налаштування
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Налаштування
&lt;/h4&gt;

&lt;p&gt;Є 2 основних способи налаштувань нвіму:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;За шляхом &lt;code&gt;~/.config/nvim/init.vim&lt;/code&gt; створюєте файл &lt;code&gt;init.vim&lt;/code&gt;. Отже конфігурація відбувається за допомогою вімскрипту. В такому випадку, все зберігається в одному файлі. Переваги: оскільки цей спосіб початково був єдиним то в гітхабі є більше прикладів і це може бути корисно для натхнення. Недоліки: вімскрипт є своєрідною мовою і він не схожий на ті, що ви вже знаєте.&lt;/li&gt;
&lt;li&gt;За шляхом &lt;code&gt;~/.config/nvim/init.lua&lt;/code&gt; створюєте файл &lt;code&gt;init.lua&lt;/code&gt;. В такому випадку конфігурація відбуватиметься мовою луа, що є досить схожою на сучасні мови програмування і має функціонал по типу імпорту файлів. Переваги: більш чистий вигляд файлу; більші можливості по налаштуванню, оскільки саме цю мову використовують для налаштувань плагінів. Недоліки: менше контенту із прикладами таких налаштувань.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Я розповім про варіант для налаштування використовючи &lt;code&gt;init.lua&lt;/code&gt;. Мою перша рекомендація це заглядніть на &lt;a href="https://learnxinyminutes.com/docs/lua/" rel="noopener noreferrer"&gt;цей ресурс&lt;/a&gt;. Тут пояснять ази мови луа і ви дійсно за 10 хвилин можете їх осягнути.&lt;/p&gt;

&lt;p&gt;Лук ап налаштувань відбувається за таким приорітетом.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;./init.lua&lt;/code&gt; в корені папки &lt;code&gt;/nvim&lt;/code&gt; сорситься автоматично, а вже файли із власними назвами – ні і їх потрібно імпортувати самостійно. При чому цей файл шукається в кожній піддирикторії, тобто в &lt;code&gt;/lua&lt;/code&gt; також шукатиметься він.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/lua&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight lua"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- це імпортує файл за локацією /lua/tima/options.lua&lt;/span&gt;
&lt;span class="c1"&gt;-- lua як директорію та як розширення писати не потрібно, воно зрозуміє&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'tima.options'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Мої налаштування вставлю в наступному абзаці у вигляді коду, аби було зручно копіювати. Кожен параметер має короткий опис за коментарем.&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="kd"&gt;local&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;backup&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                          &lt;span class="c1"&gt;-- creates a backup file&lt;/span&gt;
  &lt;span class="n"&gt;clipboard&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'unnamedplus'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;               &lt;span class="c1"&gt;-- allows neovim to access the system clipboard&lt;/span&gt;
  &lt;span class="n"&gt;cmdheight&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                           &lt;span class="c1"&gt;-- more space in the neovim command line for displaying messages&lt;/span&gt;
  &lt;span class="n"&gt;colorcolumn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'80'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;completeopt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s1"&gt;'menuone'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'noselect'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="c1"&gt;-- mostly just for cmp&lt;/span&gt;
  &lt;span class="n"&gt;conceallevel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                        &lt;span class="c1"&gt;-- so that `` is visible in markdown files&lt;/span&gt;
  &lt;span class="n"&gt;fileencoding&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'utf-8'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                  &lt;span class="c1"&gt;-- the encoding written to a file&lt;/span&gt;
  &lt;span class="n"&gt;hlsearch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                        &lt;span class="c1"&gt;-- highlight all matches on previous search pattern&lt;/span&gt;
  &lt;span class="n"&gt;ignorecase&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                       &lt;span class="c1"&gt;-- ignore case in search patterns&lt;/span&gt;
  &lt;span class="n"&gt;pumheight&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                          &lt;span class="c1"&gt;-- pop up menu height&lt;/span&gt;
  &lt;span class="c1"&gt;-- showmode = false,                        -- we don't need to see things like -- INSERT -- anymore&lt;/span&gt;
  &lt;span class="n"&gt;smartcase&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                        &lt;span class="c1"&gt;-- smart case&lt;/span&gt;
  &lt;span class="n"&gt;smartindent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                      &lt;span class="c1"&gt;-- make indenting smarter again&lt;/span&gt;
  &lt;span class="n"&gt;splitbelow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                       &lt;span class="c1"&gt;-- force all horizontal splits to go below current window&lt;/span&gt;
  &lt;span class="n"&gt;splitright&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                       &lt;span class="c1"&gt;-- force all vertical splits to go to the right of current window&lt;/span&gt;
  &lt;span class="n"&gt;swapfile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                        &lt;span class="c1"&gt;-- creates a swapfile&lt;/span&gt;
  &lt;span class="n"&gt;termguicolors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                    &lt;span class="c1"&gt;-- set term gui colors (most terminals support this)&lt;/span&gt;
  &lt;span class="n"&gt;timeoutlen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;750&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                        &lt;span class="c1"&gt;-- time to wait for a mapped sequence to complete (in milliseconds)&lt;/span&gt;
  &lt;span class="n"&gt;undofile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                         &lt;span class="c1"&gt;-- enable persistent undo&lt;/span&gt;
  &lt;span class="n"&gt;updatetime&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                        &lt;span class="c1"&gt;-- faster completion (4000ms default)&lt;/span&gt;
  &lt;span class="n"&gt;writebackup&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                     &lt;span class="c1"&gt;-- if a file is being edited by another program (or was written to file while editing with another program), it is not allowed to be edited&lt;/span&gt;
  &lt;span class="n"&gt;expandtab&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                        &lt;span class="c1"&gt;-- convert tabs to spaces&lt;/span&gt;
  &lt;span class="n"&gt;shiftwidth&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                          &lt;span class="c1"&gt;-- the number of spaces inserted for each indentation&lt;/span&gt;
  &lt;span class="n"&gt;tabstop&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                             &lt;span class="c1"&gt;-- insert 2 spaces for a tab&lt;/span&gt;
  &lt;span class="n"&gt;cursorline&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                       &lt;span class="c1"&gt;-- highlight the current line&lt;/span&gt;
  &lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                           &lt;span class="c1"&gt;-- set numbered lines&lt;/span&gt;
  &lt;span class="n"&gt;relativenumber&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                   &lt;span class="c1"&gt;-- set relative numbered lines&lt;/span&gt;
  &lt;span class="n"&gt;numberwidth&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                         &lt;span class="c1"&gt;-- set number column width to 2 {default 4}&lt;/span&gt;
  &lt;span class="c1"&gt;-- signcolumn = "yes",                      -- always show the sign column, otherwise it would shift the text each time&lt;/span&gt;
  &lt;span class="n"&gt;wrap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                            &lt;span class="c1"&gt;-- display lines as one long line&lt;/span&gt;
  &lt;span class="n"&gt;scrolloff&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                           &lt;span class="c1"&gt;-- is one of my fav&lt;/span&gt;
  &lt;span class="c1"&gt;-- sidescrolloff = 8,&lt;/span&gt;
  &lt;span class="c1"&gt;-- guifont = "monospace:h17",               -- the font used in graphical neovim applications&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;opt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shortmess&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt; &lt;span class="s1"&gt;'c'&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;v&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;pairs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&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;opt&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;v&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Плагіни:
&lt;/h4&gt;

&lt;p&gt;Для зручності використовують менеджер плагінів, наприклад, &lt;a href="https://github.com/wbthomason/packer.nvim" rel="noopener noreferrer"&gt;packer&lt;/a&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Спочатку його потрібно інсталювати: інструкцію як це зробити ви можете знайти за посиланням в їхньому гітхабі.&lt;/li&gt;
&lt;li&gt;Створюємо новий файл та імпортуємо його в основний &lt;code&gt;init.lua&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight lua"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'tima.plugins'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;В самому файлі додаємо ключову структуру:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight lua"&gt;&lt;code&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'packer'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;startup&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="n"&gt;use&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c1"&gt;-- Packer can manage itself&lt;/span&gt;
    &lt;span class="n"&gt;use&lt;/span&gt; &lt;span class="s1"&gt;'wbthomason/packer.nvim'&lt;/span&gt;
    &lt;span class="c1"&gt;-- а тут ми вже будемо додавати плагіни за бажанням&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Шаримось по гітхабу і шукаємо що нам подобається. Коли знайшли то додаємо в список у нашому файлі викорситовуючи ключове слово &lt;code&gt;use&lt;/code&gt; а далі в кавичках посилання без &lt;code&gt;github.com/&lt;/code&gt;. Якщо не прибрати &lt;code&gt;github.com/&lt;/code&gt; то також спрацює, але так виглядатиме акуратніше.&lt;/li&gt;
&lt;li&gt;Переходимо в командний режим, тобто спочатку в нормал натискаючи &lt;code&gt;ESC&lt;/code&gt;, а далі в командндий натискаючи &lt;code&gt;:&lt;/code&gt;, пишемо команду &lt;code&gt;PackerSync&lt;/code&gt;, натискаємо ентер і в нас все інстальовано.&lt;/li&gt;
&lt;li&gt;* Також ви можете зробити так, аби щоразу при збереженні файлу &lt;code&gt;plugins.lua&lt;/code&gt; виконувалась інсталяція. Інструкція як це зробити доступна на їхньому гітхабі&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Буфери/вкладки/split view
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Буфер це будь який файл завантажений до оперативної памʼяті.&lt;/li&gt;
&lt;li&gt;Вкладки це колекції буферів&lt;/li&gt;
&lt;li&gt;Вкладки можуть мати split view&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Йтимемо послідовно від найменшого до найбільшого:&lt;/p&gt;

&lt;h4&gt;
  
  
  Буфери
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;:ls&lt;/code&gt; це скорочення від &lt;code&gt;:buffers&lt;/code&gt; і це покаже список всіх відкритих буферів&lt;/li&gt;
&lt;li&gt;  В цьому списку &lt;code&gt;%a&lt;/code&gt; означає, що цей файл ми зараз переглядаємо. &lt;code&gt;+&lt;/code&gt; означає, що ми маємо не збережені зміни. &lt;code&gt;h&lt;/code&gt; показує, що файл прихований&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:bp&lt;/code&gt; - buffer previous. Відкрити попередній буфер&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:bn&lt;/code&gt; - buffer next. Відкрити наступний буфер&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:bd&lt;/code&gt; - buffer delete. Видалити буфер&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:b&amp;lt;num&amp;gt;&lt;/code&gt; відкриє буфер під обраним номером&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:e!&lt;/code&gt; аби повернути буфер до стану, в котрому ви його відкрили в цій сесії нвіму.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:q&lt;/code&gt; - закриває всі буфери&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ZZ&lt;/code&gt; - зберегти та закрити буфер&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Split view
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;c-w&amp;gt;v&lt;/code&gt; - спочатку затиснути контрол+w і згодом швидко натиснути на v відкриє вертикальний спліт із поточним файлом.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;c-w&amp;gt;s&lt;/code&gt; - спочатку затиснути контрол+w і згодом швидко натиснути на s відкриє горизонтальний спліт із поточним файлом&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ZZ&lt;/code&gt; - оскільки спліт вʼю це просто відкритий поруч ще один буфер то його можна закрити використовуючи цю саму комбінацію.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Вкладки
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;:tabnew&lt;/code&gt; - відкрити нову вкладку&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:tabclose&lt;/code&gt; - закрити обране вкладку&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gt&lt;/code&gt; - go to next tab. Перейти до наступної вкладки&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gT&lt;/code&gt; - go to previous tab. Перейти до попередньої вкладки&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;0tabnew&lt;/code&gt; - відркити нову вкладку в позиції 0&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tabmove&lt;/code&gt; - пересунути вкладку в останню позицію&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tabmove -/+&amp;lt;num&amp;gt;&lt;/code&gt; - пересунути назад/вперед вкладку&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tabmove &amp;lt;num&amp;gt;&lt;/code&gt; - пересунути на конкретну позицію під номером&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:tabs&lt;/code&gt; - покаже назви файлів, що відкриті в різних вкладках&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tabonly&lt;/code&gt; - закриє всі вкладки окрім поточної&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  ЩО із цього всього розмаїття Я ДІЙСНО ВИКОРИСТОВУЮ?
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:tabnew&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:tabclose&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gt&lt;/code&gt;/&lt;code&gt;tg&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;c-v&amp;gt;&lt;/code&gt;/&lt;code&gt;&amp;lt;c-t&amp;gt;&lt;/code&gt; при використанні &lt;a href="https://github.com/nvim-telescope/telescope.nvim" rel="noopener noreferrer"&gt;телескопу&lt;/a&gt; відкриє знайдений файл в вертикальному спліт вʼю(Vertical)/в новій вкладці(Tab)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;leader&amp;gt;a&lt;/code&gt; цей ремап використовую для &lt;a href="https://github.com/ThePrimeagen/harpoon" rel="noopener noreferrer"&gt;harpoon&lt;/a&gt; і він додає файл в список харпуну. Харпун це геніальна тема для керування буферами і дозволяє буквально ЛІТАТИ поміж 4 файлів, над котрими ви працюєте в поточний момент. &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;c-u&amp;gt;&lt;/code&gt; цей ремап відкриє список харпуну і його можна буде промодифікувати, наприклад, ви можете прибрати файл зі списку звичайним вім чином, тобто натиснути &lt;code&gt;dd&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;c-h&amp;gt;&lt;/code&gt;/&lt;code&gt;&amp;lt;c-j&amp;gt;&lt;/code&gt;/&lt;code&gt;&amp;lt;c-k&amp;gt;&lt;/code&gt; цей ремап використовується власне для зміни топ 3 буферів. Чому саме ці букви обрані? Все просто, тому що саме ці букви розташовані під пальцями в стані спокою і це найбільш зручно для частого використання.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;leader&amp;gt;h&lt;/code&gt;/&lt;code&gt;&amp;lt;leader&amp;gt;j&lt;/code&gt;/&lt;code&gt;&amp;lt;leader&amp;gt;k&lt;/code&gt;/&lt;code&gt;&amp;lt;leader&amp;gt;l&lt;/code&gt; - перестрибнути на буфер зліва/знизу/зверху/справа&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ремапи, про котрі сказав в цій секції:&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;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nvim_set_keymap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;Space&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;Nop&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;opts&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;g&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mapleader&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;' '&lt;/span&gt;  &lt;span class="c1"&gt;-- 'vim.g' sets global variables&lt;/span&gt;

&lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;shortcut&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;command&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_set_keymap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;shortcut&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;opts&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;nmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;shortcut&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'n'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;shortcut&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="c1"&gt;-- for tabs&lt;/span&gt;
&lt;span class="n"&gt;nmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'tn'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;':tabnew&amp;lt;cr&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;nmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'tc'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;':tabclose&amp;lt;cr&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;nmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'tg'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;':tabprev&amp;lt;cr&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;-- better moving management:&lt;/span&gt;
&lt;span class="n"&gt;nmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;leader&amp;gt;h'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;':wincmd h &amp;lt;cr&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;nmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;leader&amp;gt;j'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;':wincmd j &amp;lt;cr&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;nmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;leader&amp;gt;k'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;':wincmd k &amp;lt;cr&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;nmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;leader&amp;gt;l'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;':wincmd l &amp;lt;cr&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;-- harpoon:&lt;/span&gt;
&lt;span class="n"&gt;nmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;leader&amp;gt;a'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;':lua require("harpoon.mark").add_file()&amp;lt;cr&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;nmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;c-l&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;':lua require("harpoon.ui").toggle_quick_menu()&amp;lt;cr&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;nmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;c-n&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;':lua require("harpoon.ui").nav_file(1)&amp;lt;cr&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;nmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;c-e&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;':lua require("harpoon.ui").nav_file(2)&amp;lt;cr&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;nmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;c-i&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;':lua require("harpoon.ui").nav_file(3)&amp;lt;cr&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>webdev</category>
      <category>domainregistration</category>
      <category>webhosting</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Пояснення вім логіки. Як працювати в nvim?</title>
      <dc:creator>Tymofij</dc:creator>
      <pubDate>Thu, 10 Nov 2022 10:33:59 +0000</pubDate>
      <link>https://dev.to/tymofij/poiasniennia-vim-loghiki-iak-pratsiuvati-v-nvim-1850</link>
      <guid>https://dev.to/tymofij/poiasniennia-vim-loghiki-iak-pratsiuvati-v-nvim-1850</guid>
      <description>&lt;h2&gt;
  
  
  1. Апетайзер:
&lt;/h2&gt;

&lt;p&gt;У випадку якщо ви є користувачем linux/mac у вас вже інстальований vim і ви вже можете протестувати потужні команди!&lt;/p&gt;

&lt;p&gt;Відкрити навчальний файл за допомогою віму:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vimtutor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Використовуючи стрілки перейдіть до будь якого параграфу та натисніть &lt;code&gt;dap&lt;/code&gt;. Ця дія видалить параграф + порожні лінії, що оточують.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.&lt;/code&gt; і у вас видалиться ще один параграф. &lt;code&gt;.&lt;/code&gt; працює для повторення майже всіх дій.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gUiw&lt;/code&gt; - зробити всі букви в слові великими. Це може бути використане для перейменування змінної до константи. &lt;code&gt;gUU&lt;/code&gt;/&lt;code&gt;guu&lt;/code&gt; - upcase/downcase цілий рядок.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  2. Коротка історія:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Початково був створений &lt;strong&gt;vi&lt;/strong&gt; у 1976 рік&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sOERDcTb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pnnmho24m87952i9k4ib.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sOERDcTb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pnnmho24m87952i9k4ib.png" alt="Image description" width="880" height="235"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Згодом був &lt;strong&gt;vim&lt;/strong&gt;, що розшифровується як &lt;strong&gt;vi IMPROVED&lt;/strong&gt;. Vim's автор, Bram Moolenaar, зробив публічний реліз в 1991. &lt;a href="https://github.com/vim/vim"&gt;git repo&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Найбільш новий і крутий це &lt;strong&gt;nvim&lt;/strong&gt;, розшифровується як &lt;strong&gt;Neo vim&lt;/strong&gt;. Починалось це як форк vim, але згодом вони значно переписали код та додали круті фічі. &lt;a href="https://github.com/neovim/neovim"&gt;git repo&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  В чому відмінність &lt;strong&gt;nvim&lt;/strong&gt; та &lt;strong&gt;vim&lt;/strong&gt;?
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;vim&lt;/strong&gt; це проєкт "однієї людини" і він є "засміченим". В цей час &lt;strong&gt;neovim&lt;/strong&gt; розвивається за рахунок спільноти відповідно і якість коду вища.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;vim&lt;/strong&gt; є однопоточним, в той час як &lt;strong&gt;nvim&lt;/strong&gt; підтримує багатопоточність.&lt;/li&gt;
&lt;li&gt;Найбільшою відмінністю є вістутність підтримки/підтримка мови &lt;code&gt;Lua&lt;/code&gt; для кастомізації і написання власних плагінів. &lt;code&gt;Lua&lt;/code&gt; достатньо швидка, аби бути використаною для плагінів і не бути вузьким горлишком + вона значно більш читаєма аніж &lt;code&gt;Vim Script&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  3. Як завантажити?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Завантаження використовуючи homebrew:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;neovim
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Відвідайте &lt;a href="https://brew.sh/"&gt;brew.sh&lt;/a&gt; і інсталюйте цей чудовий менеджер пакетів однією командою у випадку, якщо ви його поки що не маєте(цей менеджер підтримує лише mac/linux).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/neovim/neovim/wiki/Installing-Neovim"&gt;https://github.com/neovim/neovim/wiki/Installing-Neovim&lt;/a&gt; - альтернативні варіанти/інструкція для windows.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Найсмачніше
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Vim є модальним едітором
&lt;/h3&gt;

&lt;p&gt;Це означає, що ви маєте деяку кількість режимів, між котрими перемикаєтесь в залежності від того, що саме ви зараз робите. Ця ідея здається незручною і викликає питання напочатку, але спробувавши ви закохаєтесь в неї з ймовірністю в 95%, а якщо вам пощастить потрапити в решту 5% то ви просто розширите свій кругозір і дізнаєтесь про таку цікаву концепцію. Vim це дійсно супер нова концепція для тих хто не пробував модальні едітори.&lt;/p&gt;

&lt;h3&gt;
  
  
  В чому основна перевага?
&lt;/h3&gt;

&lt;p&gt;Основна перевага в тому, що &lt;em&gt;шорткати&lt;/em&gt; можуть складатись із &lt;strong&gt;однієї літери&lt;/strong&gt;, наприклад, просто &lt;code&gt;a&lt;/code&gt; або &lt;code&gt;i&lt;/code&gt;. Тобто не є вимогою затискати  shift/control/command/function і це &lt;strong&gt;суттєво впливає на пальці&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Пальцям не доводиться перебувати в постійному напруженні і це зменшує ймовірність виникнення &lt;a href="https://uk.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BD%D0%B4%D1%80%D0%BE%D0%BC_%D0%B7%D0%B0%D0%BF%27%D1%8F%D1%81%D1%82%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB%D1%83"&gt;тунельного синдрому&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Vim може вирізняти &lt;strong&gt;послідовність натискань&lt;/strong&gt;, що також допомагає з &lt;em&gt;шорткатами&lt;/em&gt;. Тобто vim зрозуміє, що швидке натискання &lt;code&gt;ai&lt;/code&gt; це є шорткат. Наголошу на тому, що це саме послідовність натискань, немає необхідності затискати одночасно &lt;code&gt;a&lt;/code&gt;+&lt;code&gt;i&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Які режими є?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Якщо не сказано інакше то за замовчуванням всі дії виконуються перебуваючи в &lt;code&gt;normal mode&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;Основним режимом є &lt;code&gt;normal mode&lt;/code&gt;. В ньому ми пересуваємось по тексту та нам доступні всі клавіші для шорткатів. Кожна клавіша в &lt;code&gt;normal mode&lt;/code&gt; виконує певну дію. Аби перейти в нього потрібно натиснути &lt;code&gt;esc&lt;/code&gt;/&lt;code&gt;control[&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Другим за популярністю є &lt;code&gt;insert mode&lt;/code&gt;. В ньому ми власне набираємо текст, або код. Всі наші натискання друкуються в файлі, що є найбільш інтуітивним, тому із цим режимом питань не має виникнути. Аби перейти в нього потрібно натиснути &lt;code&gt;i&lt;/code&gt;. Також є інші варіанти, але про них згодом)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;command mode&lt;/code&gt; використовується для команд. Найчастіше це команди від якихось плагінів, що ви встановили. Аби перейти в нього потрібно натиснути &lt;code&gt;:&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;visual mode&lt;/code&gt; використовуємо для виділення тексту. Аби перейти в нього натискаємо &lt;code&gt;v&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  РОЗКАЖИ вже як ним користуватись!
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Базові дії:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;gg&lt;/code&gt;/&lt;code&gt;G&lt;/code&gt; = go to the start of the file/end&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;hjkl&lt;/code&gt; виконує роль стрілок. Звичайні стрілки в вімі також працюватимуть, але, будь ласка, утримайтесь від їх використання. Це буде не просто, але це 100% того варте. Перевага цього в тому, що це дозволить рукам більшу кількість часу залишатись на &lt;em&gt;homerow&lt;/em&gt;, що в свою чергу пришвидшить вас та зменшить втому. А якщо вам цікаво мотивацію появи цього то все просто😆 – в перших клавіатур не було стрілок.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UHk4tXem--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/slrw2ij8q97x83o33a22.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UHk4tXem--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/slrw2ij8q97x83o33a22.jpg" alt="Image description" width="612" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;В вімі дуже прокачана мнемоніка від англійських слів. Тому коли ви хочете зробити якусь дію подумавши про першу букву дії ви зрозумієте який шорткат натиснути.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ZZ&lt;/code&gt;= save and quit&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ZQ&lt;/code&gt; = quit without saving&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:w&lt;/code&gt; = save or &lt;code&gt;:w filename&lt;/code&gt; = save as&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;i&lt;/code&gt; = insert before the cursor&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;a&lt;/code&gt; = insert after the cursor aka append&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;I&lt;/code&gt;/&lt;code&gt;A&lt;/code&gt; = insert at the beginning of the line/end of the line&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;d&lt;/code&gt; = delete&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;y&lt;/code&gt; = yank(copy)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dd&lt;/code&gt;/&lt;code&gt;yy&lt;/code&gt; = delete/yank line&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;v&lt;/code&gt; = visual select&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;0&lt;/code&gt; = beginning of the line&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;$&lt;/code&gt; = end of the line&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;w&lt;/code&gt; = go forward 1 word&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;b&lt;/code&gt; = go backwards 1 word&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;u&lt;/code&gt; = undo operation
&lt;code&gt;control + r&lt;/code&gt; = redo operation&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/&lt;/code&gt;, &lt;code&gt;n/N&lt;/code&gt; = search, go to next result/go to previous result&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.&lt;/code&gt; = repeat last operation&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Обʼєднуючи це в послідовності ви досягаєте саме потужних дій. Ви ж за цим прийшли?)
&lt;/h4&gt;

&lt;p&gt;Пояснення як будується послідовність. Є декілька умовних груп, взявши по одній букві із кожного ви можете побудувати шорткат. Найчастіше це саме так і працює, але не для всіх випадків. Тобто не всі комбінації спрацюють.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Потрібно &lt;strong&gt;досить швидко&lt;/strong&gt; натискати послідовність, бо інакше вім не рахуватиме це за шорткат.&lt;/p&gt;

&lt;p&gt;Друга та четверта група є обовʼязковою, а перша та третє опційною.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;1- Множник, тобто число разів скільки ви хочете повторити дію.&lt;/p&gt;

&lt;p&gt;2- Що зробити?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;y=yank&lt;/li&gt;
&lt;li&gt;v=visual select&lt;/li&gt;
&lt;li&gt;d=delete&lt;/li&gt;
&lt;li&gt;c=change&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;3- Текст обʼєкт&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;i=inside&lt;/li&gt;
&lt;li&gt;a=around&lt;/li&gt;
&lt;li&gt;f=on the top&lt;/li&gt;
&lt;li&gt;t=to&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;4- Текст обʼєкт:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;w=word&lt;/li&gt;
&lt;li&gt;e=end of the word&lt;/li&gt;
&lt;li&gt;hjkl&lt;/li&gt;
&lt;li&gt;p=paragraph&lt;/li&gt;
&lt;li&gt;gg/G = start of the file&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Приклади шорткатів:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;dw&lt;/code&gt; = delete word&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dip&lt;/code&gt; = delete inside paragraph&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;5dd&lt;/code&gt; = 5 times delete line&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dt{&lt;/code&gt; = delete all characters in the current line to {&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ygg&lt;/code&gt;/&lt;code&gt;yG&lt;/code&gt; = yank to the start/end of the file&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Плагіни?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Ви можете знайти їх на &lt;a href="https://vimawesome.com/"&gt;vimawesome.com&lt;/a&gt;, або на GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Вім без доданих плагінів не є достатньо зручним тому, аби почуватись комфортно пропоную вам подивитис на наступні позиції:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/preservim/nerdtree"&gt;nerdtree&lt;/a&gt;/&lt;a href="https://github.com/nvim-tree/nvim-tree.lua"&gt;nvim-tree&lt;/a&gt; - бокова панель із файлами&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/folke/tokyonight.nvim"&gt;tokyonight&lt;/a&gt;/&lt;a href="https://github.com/morhetz/gruvbox"&gt;gruvbox&lt;/a&gt; - кольорова тема&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/nvim-lualine/lualine.nvim"&gt;lualine&lt;/a&gt; - status bar&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/tpope/vim-surround"&gt;surround&lt;/a&gt; - useful for changing " to '&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/tpope/vim-fugitive"&gt;fugitive&lt;/a&gt; - git integration&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/tpope/vim-commentary"&gt;commentary&lt;/a&gt; - comment/uncomment with a 1 shortcut in all languages&lt;/li&gt;
&lt;li&gt;Налаштування lsp і completions. Це саме те через що можна сумувати за vscode і це дійсно зручно. Тому просто погугліть як це зробити і ви знайдете хороший туторіал.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Рекомендації:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Не тисніть на себе. Повільно та стабільно!&lt;/li&gt;
&lt;li&gt;Пройдіть &lt;code&gt;vimtutor&lt;/code&gt;. Він займе в вас приблизно 30-50 хвилин.&lt;/li&gt;
&lt;li&gt;Налаштовувати вім під себе кльово, але може бути складно, тому, якщо що, можете розглянути наступні варіанти: &lt;a href="https://github.com/AstroNvim/AstroNvim"&gt;astrovim&lt;/a&gt;, &lt;a href="https://github.com/LunarVim/LunarVim"&gt;lunarvim&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>nvim</category>
      <category>tutorial</category>
      <category>linux</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
