Neovim 용 GitLab 플러그인 - gitlab.vim

GitLab 플러그인은 Neovim과 GitLab을 통합하며, Lua로 작성되었습니다.

Neovim에서 GitLab은 GitLab Duo Code Suggestions를 지원합니다.
Code Suggestions는 내장된 LSP (Language Server Protocol) 서버를 제공하여 다음의 키 매핑을 지원합니다:
Control+x, Control+o Omni Completion:

모드 키 매핑 유형 설명
INSERT Control+x, Control+o 내장 언어 서버를 통해 GitLab Duo Code Suggestions로부터 완성을 요청합니다.
NORMAL <Plug>(GitLabToggleCodeSuggestions) <Plug> 현재 버퍼에 대한 Code Suggestions를 켜거나 끕니다. 구성이 필요합니다.

확장 설치

전제 조건:

  • GitLab.com 및 자체 관리에 대해 GitLab 버전 16.1 이상이 필요합니다.
    많은 확장 기능이 이전 버전에서 작동할 수 있지만, 지원되지 않습니다.
    • GitLab Duo Code Suggestions 기능은 GitLab 버전 16.8 이상이 필요합니다.
  • Neovim 버전 0.9 이상이 필요합니다.

확장을 설치하려면 선택한 플러그인 관리자에 대한 설치 단계를 따르세요:

플러그인 관리자 없음

이 프로젝트를 포함하기 위해 다음 명령을 실행하세요.
packadd를 시작 시 사용합니다:

git clone https://gitlab.com/gitlab-org/editor-extensions/gitlab.vim.git ~/.local/share/nvim/site/pack/gitlab/start/gitlab.vim
lazy.nvim

다음과 같이 lazy.nvim 구성에 이 플러그인을 추가하세요:

{
  'git@gitlab.com:gitlab-org/editor-extensions/gitlab.vim.git',
  -- 파일이 생성되거나 열릴 때 활성화
  event = { 'BufReadPre', 'BufNewFile' },
  -- 지원되는 파일 형식이 열릴 때 활성화
  ft = { 'go', 'javascript', 'python', 'ruby' },
  cond = function()
    -- 환경 변수에 토큰이 있는 경우에만 활성화합니다.
    -- 이 줄을 제거하면 대화형 워크플로우를 사용할 수 있습니다.
    return vim.env.GITLAB_TOKEN ~= nil and vim.env.GITLAB_TOKEN ~= ''
  end,
  opts = {
    statusline = {
      -- GitLab Duo Code Suggestions 통합의 상태를 나타내기 위해 내장 상태 표시줄에 후킹
      enabled = true,
    },
  },
}
packer.nvim

다음과 같이 packer.nvim 구성에 플러그인을 선언하세요:

use {
  "git@gitlab.com:gitlab-org/editor-extensions/gitlab.vim.git",
}

확장 구성

  1. 환경 변수를 구성합니다. 다음은 가장 일반적인 것이지만, 전체 목록은
    이 플러그인의 도움말 텍스트에 있습니다: doc/gitlab.txt:

    환경 변수 기본값 설명
    GITLAB_TOKEN. 해당 사항 없음 인증된 요청에 사용할 기본 GitLab 개인 접근 토큰입니다. 제공되는 경우, 대화형 인증을 건너뜁니다.
    GITLAB_VIM_URL. https://gitlab.com 연결할 GitLab 인스턴스를 재정의합니다. 기본값은 https://gitlab.com입니다.
  2. 원하는 파일 형식을 구성합니다. 예를 들어, 이 플러그인이 Ruby를 지원하기 때문에 FileType ruby 자동 명령을 추가합니다.
    추가 파일 형식에 대해 이 동작을 구성하려면, code_suggestions.auto_filetypes 설정 옵션에 파일 형식을 추가합니다:

    require('gitlab').setup({
      statusline = {
        enabled = false
      },
      code_suggestions = {
        # 기본 언어의 전체 목록은
        # https://gitlab.com/gitlab-org/editor-extensions/gitlab.vim/-/blob/main/lua/gitlab/config/defaults.lua 
        # 'auto_filetypes' 배열을 참조하세요.
        auto_filetypes = { 'ruby', 'javascript' }, -- 기본값은 { 'ruby' }입니다.
      }
    })
    
  3. 선택사항. Omni Completion 구성합니다.

  4. 선택사항. [ 키 매핑 구성](#configure-plug-key-mappings)합니다.

  5. 선택사항. :helptags ALL을 사용하여 helptags를 설정하여
    :help gitlab.txt에 접근합니다.

Omni Completion 구성

Code Suggestions와 함께 Omni Completion을 활성화하려면:

  1. api 범위로 개인 액세스 토큰을 생성하세요.

  2. Code Suggestions 언어 서버를 설치하세요.

  3. 선택사항. 단일 제안에 대해서도 Omni Completion의 대화상자를 구성하는 것을 고려하세요:

    vim.o.completeopt = 'menu,menuone'
    

지원되는 파일 형식에서 작업할 때 Ctrl+x를 누른 다음 Ctrl+o를 눌러 Omni Completion 메뉴를 엽니다.

<Plug> 키 매핑 구성

편의를 위해 이 플러그인은 <Plug> 키 매핑을 제공합니다. <Plug>(GitLab...) 키 매핑을 사용하려면 이를 참조하는 자체 키 매핑을 포함해야 합니다:

-- 일반 모드에서 CTRL-g를 눌러 Code Suggestions를 토글합니다:
vim.keymap.set('n', '<C-g>', '<Plug>(GitLabToggleCodeSuggestions)')

gitlab.statusline 비활성화

기본적으로 이 플러그인은 Code Suggestions 통합의 상태를 표시하기 위해 내장된 statusline을 사용하는 gitlab.statusline을 활성화합니다. gitlab.statusline을 비활성화하려면 다음을 구성에 추가하세요:

require('gitlab').setup({
  statusline = {
    enabled = false
  }
})

확장에 대한 문제 보고

문제, 버그 또는 기능 요청을 gitlab.vim 문제 큐에 보고하세요.

피드백을 gitlab.vim 저장소의 문제 22에 제출하세요.

확장 제거

확장을 제거하려면 이 플러그인과 다음 명령어로 언어 서버 바이너리를 삭제하세요:

rm -r ~/.local/share/nvim/site/pack/gitlab/start/gitlab.vim
rm ~/.local/share/nvim/gitlab-code-suggestions-language-server-*

관련 주제