<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Vis on meliplug.info</title><link>https://meliplug.info/tags/vis/</link><description>Recent content in Vis on meliplug.info</description><generator>Hugo -- 0.160.0-DEV</generator><language>en-us</language><managingEditor>ywbird@naver.com (ywbird)</managingEditor><webMaster>ywbird@naver.com (ywbird)</webMaster><lastBuildDate>Fri, 17 Jul 2026 13:53:54 +0900</lastBuildDate><atom:link href="https://meliplug.info/tags/vis/rss.xml" rel="self" type="application/rss+xml"/><item><title>vis-korea-ime 포팅하기</title><link>https://meliplug.info/articles/vis-korea-ime/</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0900</pubDate><author>ywbird@naver.com (ywbird)</author><guid>https://meliplug.info/articles/vis-korea-ime/</guid><description>&lt;p&gt;&lt;a href="https://codeberg.org/ywbird/vis-korea-ime" target="_blank" rel="noopener noreferrer" class="external" &gt;https://codeberg.org/ywbird/vis-korea-ime[↗]&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;최근 Emacs랑 이거저거 editor 사용해 보고 있는데, vis에 한글 입력이 없더라구요. &lt;br /&gt;
vis 또한 플러그인으로 Lua를 사용하길래, kiyoon 님의 &lt;a href="https://github.com/kiyoon/Korean-IME.nvim" target="_blank" rel="noopener noreferrer" class="external" &gt;&lt;code&gt;Kiyoon/Korean-IME.nvim&lt;/code&gt;[↗]&lt;/a&gt;
(이 또한 &lt;a href="https://github.com/lifthrasiir/hangeul.vim" target="_blank" rel="noopener noreferrer" class="external" &gt;lifthrasiir/hangeul.vim[↗]&lt;/a&gt;
의 Lua 버전 재작성)을 vis로 포팅했습니다. &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;구현 과정에서 neovim과 vis의 keymap 구현 방식의 차이 때문에 좀 고생했습니다.&lt;/p&gt;
&lt;h2 id="noremap의-부재"&gt;
&lt;a href="#noremap%ec%9d%98-%eb%b6%80%ec%9e%ac" class="anchor"&gt;noremap의 부재&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;먼저 neovim의 keymap 설정 방식은 아래와 같습니다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;vim.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;&amp;#34;i&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;lt;space&amp;gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kr"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;finish_2s&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;lt;space&amp;gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&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;noremap&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="n"&gt;silent&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="n"&gt;expr&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="n"&gt;desc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;해석해 보자면,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;i&amp;quot;&lt;/code&gt; : &lt;code&gt;INSERT&lt;/code&gt; 모드에서&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;&amp;lt;space&amp;gt;&amp;quot;&lt;/code&gt; : &lt;code&gt;&amp;lt;space&amp;gt;&lt;/code&gt; 키를 누르면&lt;/li&gt;
&lt;li&gt;&lt;code&gt;finish_2s()&lt;/code&gt; : 해당 함수를 실행하고&lt;/li&gt;
&lt;li&gt;&lt;code&gt;return &amp;quot;&amp;lt;space&amp;gt;&amp;quot;&lt;/code&gt; : &lt;code&gt;&amp;lt;space&amp;gt;&lt;/code&gt; 를 키 입력한다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;noremap = true&lt;/code&gt; : 제귀 키 입력을 방지하고,&lt;/li&gt;
&lt;li&gt;&lt;code&gt;silent = true&lt;/code&gt; : 입력(&lt;code&gt;&amp;lt;space&amp;gt;&lt;/code&gt;)의 결과를 숨긴다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;expr = true&lt;/code&gt; : 함수의 반환 값을 입력으로 사용한다. &lt;br /&gt;
(이게 없다면 &lt;code&gt;&amp;lt;space&amp;gt;&lt;/code&gt; 는 키 입력으로 처리되지 않음)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;반면, vis에서는 아래와 같습니다.&lt;/p&gt;</description></item></channel></rss>