Codeium: Vim/Neovim용 무료 Copilot 대안
요약
Windsurf는 Vim 및 Neovim 사용자를 위해 빠르고 무료인 Copilot 대안으로 소개되었습니다. 이 플러그인은 AI 코딩 초능력을 제공하며, 다양한 명령어와 구성 옵션을 통해 사용자 정의가 가능합니다. 개발자들은 이를 통해 강력한 코드 자동 완성 기능을 자신의 워크플로우에 통합할 수 있습니다.
핵심 포인트
- Vim/Neovim 전용 무료 Copilot 대안 플러그인입니다.
- 다양한 키 바인딩을 커스터마이징하여 사용 편의성을 높일 수 있습니다.
- 특정 파일 타입이나 상황에서 Codeium 기능을 활성화/비활성화할 수 있습니다.
Vim 및 Neovim을 위한 빠르고 무료인 Copilot 대안
Windsurf는 모든 주요 IDE에서 AI를 사용하여 코드를 자동 완성합니다. 우리는 이 Windsurf 플러그인의 구현체를 Vim과 Neovim에 출시하여 이러한 현대적인 코딩 초능력을 더 많은 개발자에게 제공하고자 합니다. 온라인에서 Windsurf를 빠르게 사용해 보고 싶다면 저희 플레이그라운지를 확인하세요.
기여 환영합니다! 플러그인 관련 풀 리퀘스트(pull requests)와 이슈(issues) 제출을 자유롭게 해주세요.
설치
Exafunction/windsurf.vim
원하는 vim 플러그인 매니저를 사용하거나 수동으로 설치하세요. 아래에 설치 옵션이 있습니다. -
실행
:Codeium Auth
을 실행하여 플러그인을 설정하고 Windsurf를 사용하기 시작하세요.
전체 명령어 및 구성 옵션 목록은 :help codeium에서 확인하거나, 이 가이드에서 Windsurf 사용법에 대한 빠른 튜토리얼을 참고할 수 있습니다.
전체 구성 옵션 목록은 :help codeium을 실행하여 확인할 수 있습니다.
가장 인기 있는 몇 가지 옵션을 아래에 강조했습니다.
Windsurf는 제안(suggestion)을 제어하기 위해 다음 기능을 제공합니다:
| 동작 | 함수 | 기본 바인딩 |
|---|---|---|
| 현재 제안 지우기 | codeium#Clear() | <C-]> |
| 다음 제안 | codeium#CycleCompletions(1) | <M-]> |
| 이전 제안 | codeium#CycleCompletions(-1) | <M-[> |
| 제안 삽입 | codeium#Accept() | <Tab> |
| 수동으로 제안 트리거 | codeium#Complete() | <M-Bslash> |
| 제안에서 단어 수락 | codeium#AcceptNextWord() | <C-k> |
| 제안에서 줄 수락 | codeium#AcceptNextLine() | <C-l> |
Windsurf의 기본 키 바인딩은 다음을 설정하여 비활성화할 수 있습니다:
let g:codeium_disable_bindings = 1
또는 Neovim에서는:
vim.g.codeium_disable_bindings = 1
만약 <Tab> 바인딩만 비활성화하고 싶다면, g:codeium_no_map_tab 옵션을 사용할 수도 있습니다.
위의 동작들을 다른 키에 바인딩하고 싶다면, Vim에서는 다음과 같은 형태일 수 있습니다:
imap <script><silent><nowait><expr> <C-g> codeium#Accept()
imap <script><silent><nowait><expr> <C-h> codeium#AcceptNextWord()
imap <script><silent><nowait><expr> <C-j> codeium#AcceptNextLine()
...
또는 Neovim에서 (wbthomason/packer.nvim 또는 folke/lazy.nvim 사용):
-- folke/lazy.nvim을 사용하는 경우 여기의 `use`를 제거하세요.
use {
'Exafunction/windsurf.vim',
...
(설치 후 :Codeium Auth를 실행했는지 확인하세요.)
Windsurf는 vim 설정 파일 (vimrc/init.vim)에서 g:codeium_filetypes 변수를 설정하여 특정 파일타입에 대해 비활성화할 수 있습니다:
let g:codeium_filetypes = {
\ "bash": v:false,
\ "typescript": v:true,
...
Windsurf는 대부분의 파일타입에서 기본적으로 활성화됩니다.
또한 g:codeium_enabled 변수를 사용하여 codeium을 기본적으로 비활성화할 수 있으며, :CodeiumEnable를 실행하여 버퍼별로 수동으로 활성화할 수 있습니다:
let g:codeium_enabled = v:false
또는 Neovim에서:
vim.g.codeium_enabled = false
또는 g:codeium_filetypes_disabled_by_default 변수를 사용하여 모든 파일타입의 codeium을 비활성화하고, g:codeium_filetypes 변수를 사용하여 지정된 파일타입에 대해서만 선택적으로 codeium을 활성화할 수 있습니다:
" let g:codeium_enabled = v:true
let g:codeium_filetypes_disabled_by_default = v:true
let g:codeium_filetypes = {
...
만약 자동 완성 트리거를 비활성화하고 싶다면:
let g:codeium_manual = v:true
" 대신 `CycleOrComplete()`을 사용하는 것이 좋을 수 있습니다.
" 이렇게 하면 제안의 순차적인 사이클링도 첫 번째 것을 트리거합니다.
...
제안의 자동 텍스트 렌더링(제안에 나타나는 회색 텍스트)을 비활성화하려면:
let g:codeium_render = v:false
Windsurf 상태는 codeium#GetStatusString() 함수를 호출하여 생성할 수 있습니다. Neovim에서는 대신 `vim.api.nvim_call_function(
-
Windsurf가 제안이 없으면
'*'를 반환합니다. -
Windsurf 응답을 기다리는 중입니다.
노멀 모드(normal mode)에서 상태 표시줄은 Windsurf가 활성화되었는지 비활성화되었는지를 'ON' 또는 'OFF'로 보여줍니다.
상태 표시줄에 이를 표시하려면 .vimrc 파일에 다음 줄을 추가하세요.
set statusline+={…}%3{codeium#GetStatusString()}
Windsurf 로고가 없는 더 짧은 버전:
set statusline+=%3{codeium#GetStatusString()}
VIM에서 상태 표시줄을 구성하는 방법에 대한 추가 정보는 :help statusline을 확인하세요.
vim-airline은 커밋 3854429d부터 Windsurf를 기본적으로 지원합니다.
codeium#Chat() 함수를 호출하거나 Codeium Chat 명령어를 사용하면 현재 프로젝트에서 검색 및 인덱싱이 활성화되고 새로운 브라우저 창에 Codeium Chat이 실행됩니다.
:call codeium#Chat()
:Codeium Chat
프로젝트 루트는 Vim의 현재 작업 디렉터리에서 특정 파일이나 디렉터리가 존재하는지 확인하고, 하나를 찾을 때까지 상위 디렉터리로 올라가면서 결정됩니다. 이 힌트 목록은 사용자 설정이 가능하며 기본값은 다음과 같습니다:
let g:codeium_workspace_root_hints = ['.bzr','.git','.hg','.svn','_FOSSIL_','package.json']
참고로, 채팅을 실행하면 원격 측정(telemetry)이 활성화됩니다.
{
'Exafunction/windsurf.vim',
events = 'BufEnter'
...
Plug 'Exafunction/windsurf.vim', { 'branch': 'main' }
Plugin 'Exafunction/windsurf.vim'
use 'Exafunction/windsurf.vim'
다음 명령을 실행하세요. Windows에서는 ~/.vim을 $HOME/vimfiles로 대체할 수 있습니다.
:
git clone https://github.com/Exafunction/windsurf.vim ~/.vim/pack/Exafunction/start/windsurf.vim
다음 명령을 실행하세요. Windows에서는 ~/.config를 $HOME/AppData/Local로 대체할 수 있습니다.
:
git clone https://github.com/Exafunction/windsurf.vim ~/.config/nvim/pack/Exafunction/start/windsurf.vim
AI 자동 생성 콘텐츠
본 콘텐츠는 HN OpenAI Codex의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기