Neovim용 GitLab 플러그인 - gitlab.vim

GitLab 플러그인은 GitLab을 Neovim과 Lua로 통합한 것입니다.

Neovim용 GitLab은 GitLab Duo Code Suggestions을 지원합니다. 코드 제안은 내장된 Control+x, Control+o 옴니 완성 키 매핑을 지원하기 위한 LSP (Language Server Protocol) 서버를 제공합니다:

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

확장 기능 설치

전제 조건:

  • 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 = { 'ruby', 'javascript' }, -- 기본값은 { 'ruby' }
      }
    })
    
  3. 선택 사항. Omni Completion을 구성합니다.
  4. 선택 사항. <Plug> 키 매핑을 구성합니다.
  5. 선택 사항. :helptags ALL을 사용하여 helptag를 설정하여 :help gitlab.txt에 접근합니다.

Omni 완성 구성

코드 제안과 함께 Omni Completion을 활성화하려면:

  1. api 범위를 가진 개인 엑세스 토큰을 생성합니다.
  2. 코드 제안 언어 서버를 설치합니다.
  3. 선택 사항. 단일 제안에 대해서도 Omni Completion 대화형을 구성합니다:

    vim.o.completeopt = 'menu,menuone'
    

지원되는 파일 유형에서 작업 중일 때, Ctrl+x, Ctrl+o를 눌러 Omni 완성 메뉴를 엽니다.

<Plug> 키 매핑 구성

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

-- 일반 모드에서 CTRL-g로 코드 제안을 켜거나 끕니다:
vim.keymap.set('n', '<C-g>', '<Plug>(GitLabToggleCodeSuggestions)')

gitlab.statusline 비활성화

기본적으로 이 플러그인은 내장 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-*

관련 주제