Vsvim: cc๋Š” ๋นˆ ์ค„์—์žˆ๋Š” ๊ฒฝ์šฐ ์ปค์„œ๋ฅผ ๋“ค์—ฌ ์“ฐ๊ธฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2012๋…„ 05์›” 08์ผ  ยท  10์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: VsVim/VsVim

cc ๋Š” ํ˜„์žฌ ํ–‰์„ ์‚ญ์ œํ•˜๊ณ  ์ปค์„œ๋ฅผ ์‚ฝ์ž… ๋ชจ๋“œ์— ๋‘ก๋‹ˆ๋‹ค ( 'autoindent'์˜ต์…˜์ด ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค).

VsVim์€ ํ•ญ์ƒ ์ปค์„œ๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ๋‘์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ผ๊ด€๋˜๊ฒŒ ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ํ•œ ๊ฐ€์ง€ ๊ฒฝ์šฐ๋Š” ๋นˆ ์ค„์— cc๋ฅผ ๋„ฃ์œผ๋ฉด ๋“ค์—ฌ ์“ฐ๊ธฐ๊ฐ€ ์•„๋‹Œ ์ฒซ ๋ฒˆ์งธ ์—ด์— ์ปค์„œ๋ฅผ ๋†“์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‹ค์Œ ์‹œ์ž‘ C # ์ฝ”๋“œ๋ฅผ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค ([]๋Š” ncursor, | icursor).

class Foo {
    public void Bar()
    [{]
    }
}

o ์„ (๋ฅผ) ๋ˆŒ๋Ÿฌ ์•„๋ž˜ ์ค„์„ ์—ฝ๋‹ˆ ๋‹ค.

class Foo {
    public void Bar()
    {
        |
    }
}

์ด์ œ Esc ๋ˆ„๋ฅด๊ธฐ :

class Foo {
    public void Bar()
    {
[ ]
    }
}

์ด์ œ cc ๋ˆ„๋ฅด์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์ด Vim๊ณผ VsVim์ด ๋‹ค๋ฅธ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. Vim์€ ์ปค์„œ๋ฅผ Bar ์•ˆ์— ๋“ค์—ฌ ์“ฐ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

class Foo {
    public void Bar()
    {
        |
    }
}

VsVim์€์ด๋ฅผ 0 ํ–‰์— ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.

class Foo {
    public void Bar()
    {
|
    }
}

๋˜๋Š” ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

class Foo {
    public void Bar()
    {
        throw new NotImplementedException()[;]
    }
}

Vim๊ณผ VsVim ๋ชจ๋‘์—์„œ ๋‹จ์ผ cc ๋Š” ์ปค์„œ๋ฅผ ๋“ค์—ฌ ์“ฐ๊ธฐ ์œ„์น˜์— ๋ฐฐ์น˜ํ•˜์ง€๋งŒ cc<Esc>cc ๋Š” ์ปค์„œ๋ฅผ VsVim์˜ ์—ด 0์— ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค (Vim์€ ์˜ค๋ฅธ์ชฝ ๋“ค์—ฌ ์“ฐ๊ธฐ์— ๋ฐฐ์น˜).

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

์ด ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ vim์—์„œ ๊ธฐ๋Œ€ํ•˜๋Š” ๋™์ž‘์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

nmap S ddO
nmap cc S

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

VsVim์—์„œ ๋ณด๋Š” ๋™์ž‘์€ gVim์—์„œ ๋ณด๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์„ค์ •์ด ํ† ๊ธ€ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‹ค์ œ๋กœ ์ƒ๋‹จ์˜ 'o'๋‹จ๊ณ„ ํ›„์— ํ–‰๋™ ์ฐจ์ด๋ฅผ ๋ด…๋‹ˆ๋‹ค. ๋‚ด ์ปค์„œ๋Š” { ์™€ ๊ฐ™์€ ์—ด์— ๋‚˜ํƒ€๋‚˜๋ฉฐ ๊ท€ํ•˜์˜ ์ปค์„œ์ฒ˜๋Ÿผ ๋“ค์—ฌ ์“ฐ๊ธฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

:set ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ถœ๋ ฅ์„ ๋ถ™์—ฌ ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

autoindent ๋Š” ๋‚ด vimrc์—์„œ ์„ค์ • ํ•œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ vsvimrc์—์„œ source ์„ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

ignorecase
incsearch
scrolloff=5
smartcase
vimrc="C:\Users\pmateescu\_vsvimrc"
vimrcpaths="C:\Users\pmateescu;C:\Users\pmateescu"
autoindent
number
tabstop=4

VsVim์€ VS์˜ ๋“ค์—ฌ ์“ฐ๊ธฐ ์„ค์ •์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ๋‹ค์Œ์€ ๋‚ด ์˜ต์…˜์ž…๋‹ˆ๋‹ค (์˜ต์…˜-> ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ-> C #-> ์„œ์‹).

  1. ๋“ค์—ฌ ์“ฐ๊ธฐ (๋ธ”๋ก ๋‚ด์šฉ, ๋Œ€์†Œ ๋ฌธ์ž, ๋ ˆ์ด๋ธ” ๋“ค์—ฌ ์“ฐ๊ธฐ, ์—ฌ๋Š” / ๋‹ซ๋Š” ์ค‘๊ด„ํ˜ธ ๋“ค์—ฌ ์“ฐ๊ธฐ ์•ˆ ํ•จ)
class MyClass
{
    public void Method()
    {
        goto MyLabel;
MyLabel:
        return;
    }
}
  1. New Lines์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
  2. ๊ฐ„๊ฒฉ : "๊ธฐํƒ€ ๊ฐ„๊ฒฉ ์˜ต์…˜ ์„ค์ •"์„ ์ œ์™ธํ•œ ๋ชจ๋“  ํ•ญ๋ชฉ์ด ์„ ํƒ๋˜์ง€ ์•Š์Œ-์ œ์–ด ํ๋ฆ„ ๋ฌธ์—์„œ ํ‚ค์›Œ๋“œ ๋’ค์— ๊ณต๋ฐฑ์„ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. "๊ตฌ๋ถ„์ž ๊ฐ„๊ฒฉ ์„ค์ •"-: ๊ธฐ๋ณธ์˜ ๊ฒฝ์šฐ ์ฝœ๋ก  ๋’ค, ์‰ผํ‘œ ๋’ค, for์˜ ์„ธ๋ฏธ์ฝœ๋ก  ๋’ค, ๊ธฐ๋ณธ์˜ ๊ฒฝ์šฐ ์ฝœ๋ก  ์•ž; "์—ฐ์‚ฐ์ž ๊ฐ„๊ฒฉ ์„ค์ •": ์•ž๋’ค.

์ด๊ฒƒ์ด ์ค‘์š”ํ•œ์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๋“ค์—ฌ ์“ฐ๊ธฐ๋ฅผ ์Šค๋งˆํŠธ, ํฌ๊ธฐ 4, ํƒญ ์œ ์ง€๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

HTH

๋„ค, ์ž๋™ ๋“ค์—ฌ ์“ฐ๊ธฐ๊ฐ€ ์ฐจ์ด ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. +๋ฅผ ์„ค์ •ํ•˜๋ฉด .c ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋ฉด ๋ณด์•˜๋˜ ๋™์ž‘์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ๋ฅผ ํ›‘์–ด ๋ณด์•˜๋Š”๋ฐ ๋นˆ ์ค„์— ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ์‚ญ์ œ ๋œ ์ค„์ด ๋น„์–ด์žˆ์„ ๋•Œ autoindent ์กด์ค‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ VsVim์€ Vim ๋“ค์—ฌ ์“ฐ๊ธฐ๋ณด๋‹ค Visual Studio ๋“ค์—ฌ ์“ฐ๊ธฐ๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. vsvim_useeditorindent ์˜ต์…˜์„ ๋น„ํ™œ์„ฑํ™”ํ•˜์—ฌ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ 2010 ๋…„์—๋Š” ๋ชจ๋“  ์–ธ์–ด๊ฐ€ ๋“ค์—ฌ ์“ฐ๊ธฐ ์„œ๋น„์Šค๋ฅผ์œ„ํ•œ ์ข‹์€ API๋ฅผ ์ œ๊ณตํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. C #์€ ์ตœ๊ณ ์ด๊ณ , VB๋Š” ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. C ++๋Š” ์ฃผ์‚ฌ์œ„์˜ ๊ตด๋ฆผ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด VS11์—์„œ ๋” ๋‚˜์•„ ์กŒ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์•„์ง ์–ผ๋งˆ๋‚˜ ๋งŽ์€์ง€ ๋ณผ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๋†€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด ์ˆ˜์ • ์‚ฌํ•ญ์„ 1.3์œผ๋กœ ์••์ถ•ํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋™์ž‘์€ ์‹ค์ œ๋กœ autoindent ์•„๋‹ˆ๋ผ cindent ํ‚ค๊ฐ€ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๋ฐ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. autoindent ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ • ํ•œ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ์‹คํ—˜ํ•˜๊ณ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ cindent ์„ค์ •๋œ C ํŒŒ์ผ์—์„œ๋งŒ ์žฌํ˜„๋ฉ๋‹ˆ๋‹ค.

๋‹น์‹  ๋ง์ด ๋งž์•„์š”, ๋‹น์‹ ์ด vim -U NONE -u NONE -cmd 'set cindent' index.cs ์™€ ํ•จ๊ป˜ ์–ธ๊ธ‰ ํ•œ ํ›„ ์ €๋„ ๊ทธ๊ฒƒ์„ ์žฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜ ์„ค์ •์—์„œ Vim์€ C์™€ ์œ ์‚ฌํ•œ ํŒŒ์ผ์—์„œ cindent ๋ฅผ ์ž๋™์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค (C # ๋ฐ JS์—์„œ :setl ์— ํ‘œ์‹œ๋จ).
๊ทธ๋Ÿฌ๋‚˜, ๊ฐ™์€ ๋™์ž‘ -์— ์ œ๊ฑฐ ๋“ค์—ฌ ์“ฐ๊ธฐ <Esc> ์— ๋‹ค์‹œ ๋“ค์—ฌ ์“ฐ๊ธฐ cc - ๋น„์— ์ผ์–ด๋‚  ๊ฒƒ cindent ํŒŒ์ผ : ๋ชจ๋‘ CSS์—์„œ ๋‚˜๋ฅผ ์œ„ํ•ด ๋‚˜ํƒ€๋‚˜์„œ HTML, ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋Ÿฌํ•œ ๊ฒฝ์šฐ์—๋Š” ํŠน์ • indentexpr ์˜ ํšจ๊ณผ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฟก๋ฟก
๋ฟก๋ฟก

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„, ์ €๋Š” ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚ฌ์Šต๋‹ˆ๋‹ค.
์ตœ์‹  ๋ฆด๋ฆฌ์Šค์—์„œ ์ˆ˜์ • ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?
:set ์ดํ›„ ์ถœ๋ ฅ

backspace="indent,eol,start"
hlsearch
ignorecase
incsearch
autoindent

@lookforit ํ˜„์žฌ๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋™์ž‘์€ ์‹ค์ œ๋กœ ํ˜„์žฌ VsVim์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š” cindent ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

์ด ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ vim์—์„œ ๊ธฐ๋Œ€ํ•˜๋Š” ๋™์ž‘์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

nmap S ddO
nmap cc S

์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด ์ง๊ด€์  ์ธ ๊ฐ๊ฐ์€ ์ค„์„ ์ง€์šฐ๊ณ  ํŽธ์ง‘์„ ์‹œ์ž‘ํ•˜๋Š” 'cc'๋Š” ์ค„ ๋ฐ”๊ฟˆ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋“ค์—ฌ ์“ฐ๊ธฐ ์ˆ˜์ค€์—์„œ ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค๋Š” ๋‚ด๋ถ€ Vim / VS ์ถ”๋ก ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ํ”„๋กœ์ ํŠธ ์ž‘์—…์— ๋“ค์–ด๊ฐ€๋Š” ๊ธธ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์€ ํ‘œ๋ฉด์ ์œผ๋กœ " o ๊ฐ€ ์ด๋ฏธํ•˜๊ณ ์žˆ๋Š” ์ผ์„ cc ์œ„ํ•ดํ•˜๋Š” ๊ฒƒ"(์ด๊ฒƒ์ด @shkm ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ž‘๋™ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค) ์ด์—ˆ์ง€๋งŒ ํ•„์š”ํ•œ ์ˆ˜์ˆ ๋กœ ์ธํ•ด ์กฐ๊ธˆ ๋” ์ž‘์—…ํ•˜์‹ญ์‹œ์˜ค.

VsVim์€ ์ด๋ฏธ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์–ธ์–ด ์„œ๋น„์Šค๊ฐ€ ์—†์„ ๋•Œ VsVim์ด ์‚ฌ์šฉํ•˜๋Š” ๋“ค์—ฌ ์“ฐ๊ธฐ ์œ ํ˜• ์ธ "vim indent"์— ๋Œ€ํ•ด ์˜ฌ๋ฐ”๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ํ…Œ์ŠคํŠธ์— ์ธํ”„๋ผ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์–ธ์–ด ์„œ๋น„์Šค๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ธฐ์กด ํ…Œ์ŠคํŠธ๋Š” ๋ชจ๋‘ "vim indent"๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ 99 %์˜ ์‚ฌ์šฉ์ž๋Š” "host indent"๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, Visual Studio์—์„œ ๋“ค์—ฌ ์“ฐ๊ธฐ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ๋”์šฑ ๋ณต์žกํ•˜๊ฒŒํ•˜๊ธฐ ์œ„ํ•ด, ํƒญ์ด ํ™•์žฅ๋˜์ง€ ์•Š์„ ๋•Œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” "vim indent"๋ฅผ๋ณด๊ณ  ํ•œ ์‚ฌ๋žŒ์ด ์•„๋ฌด๋„์—†๋Š” ๋ฒ„๊ทธ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค (๋ฌธ์ œ # 2302 ์ฐธ์กฐ). ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์‹ค์šฉ์ ์ธ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ ์•„๋ฌด๋„ "vim indent"๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜์˜ ํ•  ๋•Œ ์ด๊ฒƒ์€ ๊ทธ๋ฆฌ ๋†€๋ผ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

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