Powerline: NeoVim์— ๋Œ€ํ•œ ์ง€์› ์ถ”๊ฐ€

์— ๋งŒ๋“  2015๋…„ 01์›” 27์ผ  ยท  23์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: powerline/powerline

์•„์ง๊นŒ์ง€๋Š” NeoVim์˜ ๋ถˆ์•ˆ์ •ํ•œ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ์ด๊ฒƒ์ด ์ฆ‰์‹œ ์‹คํ˜„ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ ์–ด์จŒ๋“  ์š”์ฒญํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ฒซ์งธ, ์ „๋ ฅ์„ ์€ NeoVim์ด ์ง€์›ํ•˜์ง€ ์•Š๋Š” bindeval ๋ฉ”์„œ๋“œ์— ์•ก์„ธ์Šคํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ๋””๋ฒ„๊น…์„ ์‹œ๋„ํ–ˆ๊ณ  Powerline์ด 703๋ณด๋‹ค ํฐ ๋ฒ„์ „์„ ๊ฐ์ง€ํ•  ๋•Œ Vim์˜ 7.4 Python API์— ์˜์กดํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. NeoVim์€ ํ˜„์žฌ ๋ฒ„์ „ 704๋กœ ๋ณด๊ณ ํ•˜์ง€๋งŒ Vim์˜ 7.4 Python API์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(neovim์— ๋Œ€ํ•œ ํ† ๋ก  ์ฐธ์กฐ /neovim#1898), ๋ถ„๋ช…ํžˆ bindeval ๋ฉ”์„œ๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. powerline์˜ ๋ฒ„์ „ ํ™•์ธ์„ ์ˆ˜์ •ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ ํ›„์—๋„ ์—ฌ์ „ํžˆ ๋‹ค์Œ ๋ฌธ์ œ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Error detected while processing function PowerlinePyeval..provider#python#Call:
line    1:
NameError("name 'powerline' is not defined",)

"์ „๋ ฅ์„ "์„ ์ฐพ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. :py import sys; print sys.path ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์˜ฌ๋ฐ”๋ฅธ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ๋ถˆ๋งŒ ์—†์ด :py import powerline ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ก์„ ์œ„ํ•ด ์ €๋Š” Python 2.7์ด homebrew๋ฅผ ํ†ตํ•ด ์„ค์น˜๋˜๊ณ  powerline 2.0์ด pip๋ฅผ ํ†ตํ•ด ์„ค์น˜๋œ Mac OS 10.10์—์„œ ์ตœ์‹  NeoVim(NVIM 0.0.0-alpha+201501262108)์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ๋’ท๋ฐ›์นจํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? ํ˜„์ƒ๊ธˆ์„ ๊ฒŒ์‹œํ•˜์‹ญ์‹œ์˜ค! ์šฐ๋ฆฌ๋Š” Bountysource ๋ฅผ ํ†ตํ•ด ํ˜„์ƒ๊ธˆ์„

cvim enhancement

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์“ธ๋ชจ์—†๋Š” "+1"์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ๋ฅผ ์ŠคํŒธํ•˜๋Š” ๊ฒƒ์„ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ฒซ ๋ฒˆ์งธ ๊ฒŒ์‹œ๋ฌผ์—์„œ "๋ฐ˜์‘" github ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

๋ชจ๋“  23 ๋Œ“๊ธ€

@abstiles powerline ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒƒ์€ powerline ๋ชจ๋“ˆ๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. __main__ ๋ชจ๋“ˆ์— ์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” powerline.vim.VimPowerline ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ์—

python foo = 1

foo ๋ณ€์ˆ˜๋ฅผ _other_์— ์ถ”๊ฐ€ํ•˜๋ฉด __main__ ๋ชจ๋“ˆ ๋ฐ”์ธ๋”ฉ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ๊ฒฝ์šฐ์—๋„ pyeval ๊ฐ€ ์ฒ˜์Œ์— ์ถ”๊ฐ€๋œ ๋ฐ”๋กœ ๊ทธ ์ด์œ ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ๋„ˆ๋ฌด ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด๋ฏ€๋กœ ์ด์ „ Vim์— ๋ฐ”์ธ๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ํ•œ ๋ฒˆ์— ๋ช‡ KiB์—์„œ ๋ช‡ MiB๋กœ ์ „์†กํ•˜๊ณ  ์ „๋ ฅ์„ ์€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์†๋„์— ๊ฒฐ์ฝ” ๊ทผ์ ‘ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ๋ฌธ์ž์—ด์„ ๋คํ”„ํ•˜๋Š” ๋ฐ๋Š” ์—ฌ์ „ํžˆ ๋งŽ์€ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. NeoVim์€ ์†Œ์ผ“์„ ํ†ตํ•ด msgpack์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์†๋„๊ฐ€ ํ›จ์”ฌ ๋Š๋ ค์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Vim ๋ฐ”์ธ๋”ฉ์„ ๋Œ€๋Œ€์ ์œผ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— NeoVim ์ง€์›์„ ๊ณง ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์„ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

&statusline
   \/
pyeval
   \/
โ€ฆ
   \/
segment function
   \/
vim.eval
   \/
result
   \/
displayed statusline

๊ดœ์ฐฎ์ง€๋งŒ

&statusline
  \/
:python          --------msgpack-rpc------>  โ€ฆ > segment function
                                                \/
vim_eval         <-------msgpack-rpc-------  vim.eval
  \/
eval result (C)  --------msgpack-rpc------>  result (Python)
                                                \/
displayed stl    <-------msgpack-rpc-------  segment function result

(๋ชจ๋“  ๊ฒฝ์šฐ์—: Vim๊ณผ์˜ ์ผ๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋ฐฉํ•ด๊ฐ€ ๋˜๋Š” ๊ฐ ์„ธ๊ทธ๋จผํŠธ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๋ฐ˜๋ณต๋จ) ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ณผ ์ˆ˜์žˆ๋Š” ์œ ์ผํ•œ ๋Œ€์•ˆ์€

startup notification  -------msgpack-rpc------->  powerline
                                                     \/
                                                     โ€ฆ
                                                     \/
                                                  segment.startup
                                                     \/
&statusline function  <------msgpack-rpc--------  list of things needed from NeoVim
  \/
computed list of things ----------msgpack-rpc-----------------------------+
                                                                          |
&statusline                                                               |
  \/                                                                      |
:python (+computed list of things)  -------msgpack-rpc------->  renderer  |    ----->  โ€ฆ > segment function
                                                                   \/     \/                    \/
displayed statusline                <------msgpack-rpc--------  cached result                result
                                                                                                |
&statusline                                                               +---------------------+
  \/                                                                      |
:python (+computed list of things)  -------msgpack-rpc------->  renderer  |    ----->  โ€ฆ > segment function
                                                                   \/     \/                    \/
displayed statusline                <------msgpack-rpc--------  cached result                result
                                                                                                |
โ€ฆ

, ํ•˜์ง€๋งŒ ๋ณด์‹œ๋‹ค์‹œํ”ผ NeoVim์—์„œ ํ•„์š”ํ•œ ํ•ญ๋ชฉ์ด ๊ณ„์‚ฐ๋˜๋Š” ์‹œ์ ๊ณผ ํ‘œ์‹œ๋˜๋Š” ์‹œ์  ์‚ฌ์ด์— ์ง€์—ฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ณ„์‚ฐ๋œ ๊ฒƒ์ด ์ฒ˜๋ฆฌ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ์—ฌ์œ ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ง€์—ฐ์ด ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋„ ๋‹ค์‹œ ์“ฐ๊ธฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ƒํƒœ ํ‘œ์‹œ์ค„ ๊ธฐ๋Šฅ์ด ์ง€์†์ ์œผ๋กœ ์‚ฌ๋ฌผ์„ ๊ณ„์‚ฐํ•˜์—ฌ ์ „๋ ฅ์„ ์œผ๋กœ ๋ณด๋‚ด๊ณ  ์ „๋ ฅ์„ ์ด ์ค€๋น„๋˜๋ฉด &statusline์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ณ„์† ๋ณด๋‚ด๋Š” ๋Œ€์•ˆ๋„ ์žˆ์ง€๋งŒ ์„ธ๊ทธ๋จผํŠธ ๊ธฐ๋Šฅ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋‹ค๋ฅด์ง€ ์•Š์œผ๋ฉฐ ์ด ๋ณ€ํ˜•์ด ์˜คํžˆ๋ ค ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Vim๊ณผ ํ•จ๊ป˜.

๋ชฉ๋ก์˜ ์ผ๋ถ€ ํ•ญ๋ชฉ์€ ์กฐ๊ธˆ ๋” ๋น ๋ฅธ NeoVim ์ด๋ฒคํŠธ๋กœ ๋Œ€์ฒด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•˜์ง€ ๋ชปํ•˜๋”๋ผ๋„ ์ตœ์†Œํ•œ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์„๊นŒ์š”? ๋ฒ„์ „ ์กฐ๊ฑด์„ 703 ์—์„œ 704 ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ €๋ฅผ ์–ป์€ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Error detected while processing function provider#python#Call:
line    1:
NameError("name 'powerline' is not defined",)

๋Œ€์‹ ์—:

Error detected while processing function provider#python#Call:
line    1:
AttributeError("'Nvim' object has no attribute 'bindeval'",)
NameError("name 'powerline_setup' is not defined",)
NameError("name 'powerline_setup' is not defined",)

๋‚˜๋Š”์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ํ•˜๋ฉด hasattr(vim, 'bindeval') ์— ๋Œ€ํ•œ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— bindeval ์–ด๋–ค์ด ์—†์–ด, ๋‚œ ๊ทธ๋ƒฅ ์–ป์„ :

Error detected while processing function provider#python#Call:
line    1:
NvimError('Key not found',)

๊ทธ๋ž˜์„œ ์ •ํ™•ํžˆ ์–ด๋–ค ๊ธฐ๋Šฅ์ด ์†์ƒ๋˜์—ˆ๋Š”์ง€ ๊ทธ๋ฆฌ๊ณ /๋˜๋Š” <=703์ด ํ˜„์žฌ ์ž‘๋™ํ•˜๋Š”์ง€, ๊ทธ๋ ‡๋‹ค๋ฉด Powerline์ด NeoVim๊ณผ ํ•จ๊ป˜ ์ด์ „ ๋ฐ”์ธ๋”ฉ์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐ•์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์ •ํ™•ํžˆ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

NeoVim์€ ๋ฒ„์ „ 7.0์—์„œ๋„ ์ „์ฒด Python API๋ฅผ ์ง€์›ํ•˜์ง€ _์•Š์Šต๋‹ˆ๋‹ค_. ๋ช‡ ๊ฐ€์ง€ ์„ฑ๋Šฅ ์ธก์ •์„ ์œ„ํ•ด ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ ์ „๋ ฅ์„ ์šฉ ํŒจ์น˜๊ฐ€ ์žˆ์œผ๋ฉฐ ๋ช‡ ๊ฐ€์ง€ if ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ ์ด์ƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, neovim/python-client#85, neovim/python-client#84, neovim/python-client#87์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์•„ ๋งž๋‹ค, ๋ชป์ƒ๊ฒผ๋‹ค. ๋งํฌ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ ๋˜๋Š” ๊ด€๋ จ Neovim ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ํ™œ๋™์„ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. Powerline์ด Neovim์„ ์ง€์›ํ•  ๊ณ„ํš์ด ์—†์„ ์ •๋„๋กœ Neovim๊ณผ Powerline ์‚ฌ์ด์— ๋‹จ์ˆœํžˆ ์–‘๋ฆฝํ•  ์ˆ˜ ์—†๋Š” ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์—ฌ๊ธฐ์—์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๋ง์ด ์žˆ๋Š”์ง€ ์•„๋‹ˆ๋ฉด Neovim์—์„œ Powerline์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ํฌ๋ง์„ ํฌ๊ธฐํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํˆฌํ‘œ๋„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋„ค์˜ค๋น”๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ์ „๋ ฅ์„ ์— ๋Œ€ํ•œ ์ข‹์€ ๋Œ€์•ˆ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@phiche ์ฒดํฌ ์•„์›ƒ https://github.com/bling/vim-airline

๋ฉ‹์ง„! ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค! @aarobc ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋„ค์˜ค๋น”๊ณผ ํŒŒ์›Œ๋ผ์ธ ์ค‘ ์„ ํƒ์ด ๋„ˆ๋ฌด ์–ด๋ ต๋„ค์š”...
+โˆž

@code-hunger vim-airline ์€ powerline๊ณผ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ neovim๊ณผ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@kierun ๋•๋ถ„์— ๊ฑฐ์˜ ๊ฐ™์€ ์ผ์„ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ•ญ๊ณต์‚ฌ์˜ ์œ ์ผํ•œ ๋‹จ์ ์€ ์ „๋ ฅ์„ ๊ณผ ๋ณ„๋„๋กœ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๊ณ  bash, weechat/irssi, tmux ๋“ฑ์—์„œ ์ด๋ฏธ ์ „๋ ฅ์„ ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ... ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์•ฝ๊ฐ„ ์„ฑ๊ฐ€์‹ญ๋‹ˆ๋‹ค.

@Goddard ๋‹ค์Œ์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค.

https://github.com/edkolev/promptline.vim
https://github.com/edkolev/tmuxline.vim

์œ„ ํ”„๋กœ์ ํŠธ๋Š” bash, zsh, fish ๋ฐ tmux์šฉ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ ์ƒ์„ฑ๋œ ์Šคํฌ๋ฆฝํŠธ๋Š” python๊ณผ ๊ฐ™์€ ์™ธ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

์ €๋Š” nvim์œผ๋กœ ์ „ํ™˜ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด์— ๋Œ€ํ•œ Powerline ์ง€์›์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์“ธ๋ชจ์—†๋Š” "+1"์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ๋ฅผ ์ŠคํŒธํ•˜๋Š” ๊ฒƒ์„ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ฒซ ๋ฒˆ์งธ ๊ฒŒ์‹œ๋ฌผ์—์„œ "๋ฐ˜์‘" github ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋Œ์•„๊ฐ€์„œ "+1" ๋Œ“๊ธ€์„ ์‚ญ์ œํ•˜๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ๋” ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ 2019๋…„(๊ฑฐ์˜ 2020๋…„)์ด๊ณ  ์—ฌ์ „ํžˆ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. nvim์—์„œ Powerline์ด ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด vim์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@vegerot ์ €๋Š” ์˜ค๋ž˜ ์ „์— ํฌ๊ธฐํ•˜๊ณ  ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  dein ๋˜๋Š” ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ด€๋ฆฌ์ž์™€ ํ•จ๊ป˜ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” vim-airline ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹คโ€ฆ

5 1/2๋…„, ๊ทธ๋ฆฌ๊ณ  ์—ฌ์ „ํžˆ ์ „ํ˜€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์ด ์ƒํƒœ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋˜๋Š” ์ด๊ฒƒ์ด ๋ฏธ๋ž˜์˜ ์–ด๋Š ์‹œ์ ์—์„œ ์ž‘๋™ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

5 1/2๋…„, ๊ทธ๋ฆฌ๊ณ  ์—ฌ์ „ํžˆ ์ „ํ˜€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์ด ์ƒํƒœ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋˜๋Š” ์ด๊ฒƒ์ด ๋ฏธ๋ž˜์˜ ์–ด๋Š ์‹œ์ ์—์„œ ์ž‘๋™ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์Šฌํ”„๊ฒŒ๋„ NeoVim์„ ์ง€์›ํ•˜๋Š” ๋ฐ ์ง„์ „์ด ์—†๊ณ  ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ @ZyX-I ์›๋ž˜ ์˜๊ฒฌ์„ ๋ณด๋ฉด ๋ฏธ๋ž˜์— ๋Œ€ํ•ด ๊ทธ๋‹ค์ง€ ๋‚™๊ด€์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ NeoVim์€ ๊ทธ ์‚ฌ์ด์— ํŒŒ์ด์ฌ ์ง€์›๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ณ€๊ฒฝํ–ˆ์„ ๊ฒƒ์ด๋ฏ€๋กœ(๋‚ด๊ฐ€ ์•Œ์ง€ ๋ชปํ•จ) ์ด๊ฒƒ์„ ๋‹ค์‹œ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๊ณ  ๊ทธ๋“ค์ด ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋‚˜๋Š” NeoVim ์ง€์›์ด ๊ฐ€๊นŒ์šด ์žฅ๋ž˜์— (์ ์–ด๋„ ๋‚˜์— ์˜ํ•ด) ์ถ”๊ฐ€๋  ๊ฒƒ์ด๋ผ๊ณ  ๋‚™๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ จ ์—†์Œ: ์ด ๋ฌธ์ œ๋ฅผ ์ข€ ๋” ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๊ณผ๋‹คํ•œ "+1" ๋Œ“๊ธ€์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ตœ์†Œํ•œ ์ด ์˜ค๋ฅ˜๋ฅผ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ œ ๊ฒฝ์šฐ์—๋Š” powerline์ด ์žˆ๋Š” ๋‘ ๊ฐ€์ง€ neovim์„ ๋ชจ๋‘ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ตœ์†Œํ•œ ์ด ์˜ค๋ฅ˜๋ฅผ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ œ ๊ฒฝ์šฐ์—๋Š” powerline์ด ์žˆ๋Š” ๋‘ ๊ฐ€์ง€ neovim์„ ๋ชจ๋‘ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .vimrc ์—์„œ ๋ชจ๋“  ์ „๋ ฅ์„  ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ if !has('nvim') ... endif ๋ธ”๋ก์— ๋„ฃ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰