React, Js, Ts 등의 속도를 높이기 위해 neovim을 설정하는 방법

안녕하십니까



안녕하세요 렌나루입니다.
오늘 저는 React, Js, Ts 등의 속도를 높이는 것을 목표로 하는 네오빔 구성을 다시 작성했습니다.

재료



  • 도구:

  • Neovim - 버전 >= 0.7이 필요하지만 야간 버전을 사용하겠습니다
  • .

  • Ripgrep - 빠른 검색 도구


  • 네오빔 플러그인:

  • Packer.nvim - Neovim용 플러그인 관리자

  • catppuccin - 매우 멋진 테마

  • Lualine.nvim - Lua로 작성된 매우 빠르고 구성하기 쉬운 Neovim 상태 표시줄

  • LspKind - VSCode와 유사한 픽토그램

  • CMP - Lua로 코딩된 neovim용 완성 플러그인

  • Nvim-Lspconfig - Nvim LSP용 빠른 시작 구성

  • Mason.nvim - LSP 서버, DAP 서버, 린터 및 포맷터를 쉽게 설치하고 관리합니다.

  • LuaSnip - Lua로 작성된 Neovim용 스니펫 엔진

  • Nvim-Treesitter - Neovim용 Treesitter 구성 및 추상화 계층

  • Autopairs - 자동 페어링

  • Ts-Autotag - treesitter를 사용하여 html 태그를 자동으로 닫고 이름을 자동으로 바꿉니다

  • Telescope - 찾기, 필터링, 미리보기, 선택. 모든 루아, 항상.

  • Nvim-Web-Devicons - neovim용 vim-web-devicons의 Lua 포크

  • Bufferline - Neovim을 위한 세련된 버퍼라인

  • Lspsaga - 고성능 UI가 있는 neovim의 내장 lsp를 기반으로 하는 경량 lsp 플러그인

  • Null-Ls - Neovim을 언어 서버로 사용하여 Lua를 통해 LSP 진단, 코드 작업 등을 주입합니다
  • .


    구조(설정 후)



    📂 .config/nvim
    ├── 📂 after
    │  └── 📂 plugin
    │     ├── 🌑 auto.rc.lua
    │     ├── 🌑 bufferline.rc.lua
    │     ├── 🌑 catppuccin.rc.lua
    │     ├── 🌑 cmp.rc.lua
    │     ├── 🌑 lspkind.rc.lua
    │     ├── 🌑 lualine.rc.lua
    │     ├── 🌑 mason.rc.lua
    │     ├── 🌑 telescope.rc.lua
    │     └── 🌑 treesitter.rc.lua
    ├── 🌑 init.lua
    ├── 📂 lua
    │  ├── 🌑 maps.lua
    │  ├── 🌑 plugins.lua
    │  └── 🌑 settings.lua
    └── 📂 plugin
       ├── 🌑 lspconfig.rc.lua
       ├── 🌑 lspsaga.rc.lua
       └── 🌑 null-ls.rc.lua
    

    네오빔 설정



    자, 이제 네오빔을 설정하자!

    네오빔 설치



    먼저, neovim을 설치해야 합니다. aur 도우미aur와 함께 paru에서 설치하겠습니다.

    paru -S neovim-git
    

    디렉토리 생성



    다음과 같이 3개의 디렉토리를 생성해야 합니다.

    mkdir after/plugin -p
    mkdir plugin
    mkdir lua
    

    Neovim 기본 설정 및 키맵



    먼저 ./lua/settings.lua를 생성하고 다음과 같이 만듭니다.

    vim.cmd("autocmd!")
    
    local config = {
      encoding = "utf-8",
      fileencoding = "utf-8",
      title = true,
      autoindent = true,
      smartindent = true,
      expandtab = true,
      hlsearch = true,
      backup = false,
      laststatus = 2,
      cmdheight = 1,
      showcmd = true,
      scrolloff = 3,
      shell = "zsh",
      backupskip = { "/tmp/*", "/private/tmp/*" },
      inccommand = "split",
      ignorecase = true,
      smarttab = true,
      breakindent = true,
      shiftwidth = 2,
      tabstop = 2,
      wrap = false,
      backspace = { "start", "eol", "indent" },
      cursorline = true,
      termguicolors = true,
      winblend = 0,
      wildoptions = "pum",
      pumblend = 5,
      background = "dark",
      swapfile = false
    }
    
    vim.scriptencoding = "utf-8"
    vim.wo.number = true
    vim.opt.path:append({ "**" })
    vim.opt.wildignore:append({ "*/node_modules/*" })
    vim.opt.formatoptions:append({ "r" })
    vim.opt.clipboard:append({ "unnamedplus" })
    
    vim.api.nvim_create_autocmd("InsertLeave", {
      pattern = "*",
      command = "set nopaste"
    })
    
    vim.cmd([[let &t_Cs = "\e[4:3m"]])
    vim.cmd([[let &t_Ce = "\e[4:0m"]])
    
    for i, v in pairs(config) do
      vim.opt[i] = v
    end
    

    그런 다음 ./lua/maps.lua를 생성하고 다음과 같이 만듭니다.

    local keymap = vim.keymap
    
    keymap.set('n', 'x', '"_x')
    
    keymap.set('n', '+', '<C-a>')
    keymap.set('n', '-', '<C-x>')
    
    keymap.set('n', 'dw', 'vb"_d')
    
    keymap.set('n', '<C-a>', 'gg<S-v>G')
    
    keymap.set('n', 'te', ':tabedit<Return><C-w>w', { silent = true })
    keymap.set("n", "tg", "gt")
    keymap.set("n", "tG", "gT")
    keymap.set('n', 'ss', ':split<Return><C-w>w', { silent = true })
    keymap.set('n', 'sv', ':vsplit<Return><C-w>w', { silent = true })
    
    keymap.set('n', '<Space>', '<C-w>w')
    keymap.set('', 'sh', '<C-w>h')
    keymap.set('', 'sk', '<C-w>k')
    keymap.set('', 'sj', '<C-w>j')
    keymap.set('', 'sl', '<C-w>l')
    
    keymap.set('n', '<C-w><left>', '<C-w><')
    keymap.set('n', '<C-w><right>', '<C-w>>')
    keymap.set('n', '<C-w><up>', '<C-w>+')
    keymap.set('n', '<C-w><down>', '<C-w>-')
    

    원하는 경우 이 두 구성을 변경할 수 있습니다!

    마지막으로 다음과 같이 ./init.lua에서 이 두 파일이 필요합니다.

    require("settings")
    require("maps")
    

    플러그인 관리자 설치:



    아래 명령을 실행하여 Packer을 설치합니다.

    Unix, Linux, Darwin



    git clone --depth 1 https://github.com/wbthomason/packer.nvim\
     ~/.local/share/nvim/site/pack/packer/start/packer.nvim
    

    Windows



    git clone https://github.com/wbthomason/packer.nvim "$env:LOCALAPPDATA\nvim-data\site\pack\packer\start\packer.nvim"
    

    그런 다음 ./lua/plugins.lua를 다음과 같이 만듭니다.

    local success, packer = pcall(require, "packer")
    if (not success) then
      print("Packer not found!")
      return
    end
    
    vim.cmd([[packadd packer.nvim]])
    
    packer.startup(function(use)
      use "wbthomason/packer.nvim"
      use { "catppuccin/nvim", as = "catppuccin" }
      use "hoob3rt/lualine.nvim"
      use "onsails/lspkind-nvim"
      use "hrsh7th/nvim-cmp"
      use "hrsh7th/cmp-nvim-lsp"
      use "hrsh7th/cmp-buffer"
      use "neovim/nvim-lspconfig"
      use 'williamboman/mason.nvim'
      use 'williamboman/mason-lspconfig.nvim'
      use "L3MON4D3/LuaSnip"
      use { "nvim-treesitter/nvim-treesitter", run = ":TSUpdate" }
      use "windwp/nvim-autopairs"
      use "windwp/nvim-ts-autotag"
      use { "nvim-telescope/telescope.nvim", tag = "0.1.0", requires = { "nvim-lua/plenary.nvim" } }
      use 'nvim-telescope/telescope-file-browser.nvim'
      use "kyazdani42/nvim-web-devicons"
      use "akinsho/bufferline.nvim"
      use "glepnir/lspsaga.nvim"
      use "jose-elias-alvarez/null-ls.nvim"
      use "MunifTanjim/prettier.nvim"
      use "MunifTanjim/eslint.nvim"
    end)
    

    그런 다음 다음과 같이 ./init.lua에서 요청합니다.

    require("plugins")
    

    이제 neovim을 다시 시작하고 실행하십시오.

    :PackerInstall
    

    자체(packer.nvim)를 삭제하라는 메시지가 표시되더라도 걱정하지 마세요. 그냥 y라고 말하세요.

    플러그인 설정



    내 플러그인 구성의 경우 내 dotfiles 저장소에서 가져와야 합니다.


    낫렌나루 / 도트파일


    내 개인 도트 파일






    도트파일


    내 개인 도트 파일



    재료



    프로그램
    이름



    🎨 색 구성표

    Nord & Catppuccin


    🚀 창 관리자
    Mutter

    💾 런처
    Ulauncher

    🌍 웹 브라우저
    Firefox

    🖊️ 텍스트 편집기
    Neovim

    🐚 쉘
    ZSH

    ⌨️ 터미널
    Hyper

    🎵 뮤직 플레이어
    Spotify

    특허


    Dotfiles는 MIT LICENSE의 조건에 따라 사용할 수 있습니다.


    View on GitHub


    연결



    홈페이지: Click Me
    링크: Click Me

    좋은 웹페이지 즐겨찾기