Coc 지우기
-- 플러그인 설정
require('packer').startup(function(use)
-- Packer 자체
use 'wbthomason/packer.nvim'
-- Theme
use 'zaldih/themery.nvim'
use "EdenEast/nightfox.nvim" -- Packer
-- multiple-cursors 다중 커서 플러그인
use 'terryma/vim-multiple-cursors'
-- LSP Config
use 'neovim/nvim-lspconfig'
use 'jose-elias-alvarez/null-ls.nvim'
use 'williamboman/mason.nvim'
use 'williamboman/mason-lspconfig.nvim'
-- Tailwind CSS IntelliSense LSP plugin
use 'hrsh7th/nvim-compe'
use 'hrsh7th/nvim-cmp'
use 'hrsh7th/cmp-nvim-lsp'
use 'hrsh7th/cmp-buffer'
use 'hrsh7th/cmp-path'
use 'hrsh7th/cmp-nvim-lua'
use 'windwp/nvim-autopairs' -- 자동 괄호 추가
-- Prettier 플러그인
use {'nvim-treesitter/nvim-treesitter', run = ':TSUpdate'}
use {'prettier/vim-prettier', run = 'yarn install --frozen-lockfile --production'}
-- 기타 플러그인
use 'github/copilot.vim'
use 'jeffkreeftmeijer/vim-numbertoggle'
use 'majutsushi/tagbar'
use 'preservim/nerdtree'
use 'nanotech/jellybeans.vim'
use 'morhetz/gruvbox' -- 주석 처리된 다른 색상표
use 'ronakg/quickr-cscope.vim'
use 'ctrlpvim/ctrlp.vim'
use 'svermeulen/vim-cutlass'
use 'Shirk/vim-gas'
use 'nvim-lualine/lualine.nvim' -- Airline alternative for lualine (optional)
use 'vim-airline/vim-airline' -- Vim Airline
use 'vim-airline/vim-airline-themes' -- Optional themes for airline
end)
-- Mason 및 LSP 설정
require('mason').setup()
require('mason-lspconfig').setup {
-- ensure_installed = { 'gopls', 'ts_ls' }, -- 필요한 LSP 추가
}
local lspconfig = require('lspconfig')
-- gopls 설정
lspconfig.gopls.setup {
cmd = { "gopls" },
filetypes = { "go" },
root_dir = lspconfig.util.root_pattern("go.mod", ".git"),
settings = {
gopls = {
analyses = {
unusedparams = true,
},
staticcheck = true,
},
},
}
-- LSP Config
lspconfig.ts_ls.setup {
capabilities = capabilities,
}
lspconfig.tailwindcss.setup {
capabilities = capabilities,
}
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities.textDocument.completion.completionItem.snippetSupport = false -- 스니펫 지원 비활성화
-- nvim-cmp 설정
local cmp = require'cmp'
cmp.setup {
snippet = {
expand = function(args)
-- Snippet 확장을 위한 설정
end,
},
mapping = {
['<C-n>'] = cmp.mapping.select_next_item(),
['<C-p>'] = cmp.mapping.select_prev_item(),
['<C-Space>'] = cmp.mapping.complete(),
['<CR>'] = cmp.mapping.confirm({ select = true }),
},
sources = {
{ name = 'nvim_lsp' }, -- LSP 소스 추가
{ name = 'buffer' },
{ name = 'path' },
{ name = 'nvim_lua' },
},
}
-- nvim-treesitter 설정
require'nvim-treesitter.configs'.setup {
ensure_installed = { "go", "typescript", "javascript", "tsx" },
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
indent = {
enable = true
},
incremental_selection = {
enable = true,
keymaps = {
init_selection = "<CR>",
node_incremental = "<CR>",
node_decremental = "<BS>",
scope_incremental = "<TAB>",
},
},
}
-- vim-airline 설정
vim.cmd [[
let g:airline#extensions#tabline#enabled = 1
let g:airline_theme = 'luna'
let g:airline_powerline_fonts = 1
]]
-- multiple-cursors 설정
vim.g.multi_cursor_use_default_mapping = 0
vim.g.multi_cursor_next_key = '<C-n>'
vim.g.multi_cursor_prev_key = '<C-p>'
vim.g.multi_cursor_skip_key = '<C-x>'
vim.g.multi_cursor_quit_key = '<Esc>'
-- C-n을 여러 번 누르기 힘들기 때문에 한 번에 동일한 문자열이 선택되게 설정
vim.api.nvim_set_keymap('n', '<C-n>', '<Plug>(multi_cursor_next)', { noremap = false, silent = true })
-- 파일에서 Prettier 실행
vim.api.nvim_set_keymap('n', '<leader>p', ':Prettier<CR>', { noremap = true, silent = true })
-- 비동기 방식으로 Prettier 실행
vim.api.nvim_set_keymap('n', '<leader>pa', ':PrettierAsync<CR>', { noremap = true, silent = true })
-- 단축키 지정
-- 편집 모드
vim.api.nvim_set_keymap('i', 'jk', '<ESC>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('i', 'kj', '<ESC>', { noremap = true, silent = true })
-- 명령 모드
-- <Ctrl + h, l>로 이전, 다음 탭으로 이동
vim.api.nvim_set_keymap('n', '<C-j>', ':tabprevious<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<C-k>', ':tabnext<CR>', { noremap = true, silent = true })
-- <Ctrl + j, k>로 이전, 다음 버퍼로 전환
vim.api.nvim_set_keymap('n', '<C-h>', ':bp<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<C-l>', ':bn<CR>', { noremap = true, silent = true })
-- <Shift + h, l>로 현재 버퍼 삭제
vim.api.nvim_set_keymap('n', '<S-h>', ':bp<bar>sp<bar>bn<bar>bd<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<S-l>', ':bp<bar>sp<bar>bn<bar>bd<CR>', { noremap = true, silent = true })
-- 우측 하단에 터미널 생성
vim.api.nvim_set_keymap('n', '<F2>', ':botright new<CR>:terminal<CR>:resize 10<CR>:set winfixheight<CR>:set nonu<CR>iLS_COLORS=$LS_COLORS:\'di=1;33:ln=36\'<CR>', { noremap = true, silent = true })
-- 터미널 모드
-- 터미널 모드에서 <Ctrl + w> 누르면 명령 모드로 전환
vim.api.nvim_set_keymap('t', '<C-w>', '<C-\\><C-n>', { noremap = true, silent = true })
-- 터미널 모드에서 jk 또는 kj를 누르면 <ESC>
vim.api.nvim_set_keymap('t', 'jk', '<ESC>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('t', 'kj', '<ESC>', { noremap = true, silent = true })
-- <ESC> 입력 시 <C-\><C-n> 실행
vim.api.nvim_set_keymap('t', '<ESC>', '<C-\\><C-n>', { noremap = true, silent = true })
-- 명령 및 비주얼 모드
-- iamroot 자동 주석
vim.api.nvim_set_keymap('n', '<F9>', '<ESC>o/*<CR> * IAMROOT, <C-R>=strftime("%Y.%m.%d")<CR>: <CR>*/<CR><ESC><UP><UP><END>', { noremap = true, silent = true })
-- vim 설정
-- 탭 정지 = 2칸
vim.o.tabstop = 2
-- 쉬프트 이동 거리 2칸
vim.o.shiftwidth = 2
-- 줄 번호 표시
vim.wo.number = true
-- 괄호 짝 강조
vim.o.showmatch = true
-- 하위 디렉터리 모두 path에 추가
vim.o.path = vim.o.path .. ',**'
-- 탐색 문자열 강조
vim.o.hlsearch = true
-- 항상 상단에 탭 라인 출력
vim.o.showtabline = 2
vim.o.tabpagemax = 10
if vim.fn.has('nvim') then
vim.o.inccommand = 'nosplit' -- nvim live substitute
end
-- vim과 OS의 클립보드 동기화
vim.o.clipboard = 'unnamedplus'
-- TrueColor 사용 가능
vim.o.termguicolors = true
-- 모든 마우스 기능 사용
vim.o.mouse = 'a'
-- viewoptions에서 options 제거
vim.o.viewoptions = vim.o.viewoptions:gsub('options', '')
-- 문법 강조
if vim.fn.has("syntax") then
vim.cmd('syntax on')
end
-- 하이라이트 정의
vim.cmd [[
highlight Normal guibg=NONE
highlight EndOfBuffer guibg=NONE
highlight LineNr guibg=NONE gui=bold guifg=white
highlight ColorColumn guibg=White
]]
-- 함수 정의: tabsize를 size로 변경
function SetTab(size)
vim.cmd("set shiftwidth=" .. size)
vim.cmd("set tabstop=" .. size)
vim.cmd("set softtabstop=" .. size)
end
-- tagbar 설정
vim.g.tagbar_position = 'right'
-- NERDTree 설정
vim.api.nvim_set_keymap('n', '<F1>', ':NERDTreeToggle<CR>:TagbarToggle<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<C-w>t', ':NERDTreeFocus<CR>', { noremap = true, silent = true })
vim.g.NERDTreeWinSize = 80
-- vim-cutlass 설정
vim.api.nvim_set_keymap('n', 'c', 'd', { noremap = true, silent = true })
vim.api.nvim_set_keymap('x', 'c', 'd', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', 'cc', 'dd', { noremap = true, silent = true })
-- 기본 네오빔 옵션
vim.o.list = true -- 탭 문자가 표시되도록 list 옵션 활성화
vim.o.listchars = "tab:│ ,trail:·,extends:>,precedes:<" -- 리스트 문자 설정
-- 탭 관련 설정
vim.o.expandtab = false -- 탭 문자를 실제 탭 문자로 사용
vim.o.shiftwidth = 2 -- 자동 들여쓰기 시 사용할 공백 수
vim.o.tabstop = 2 -- 탭을 표시할 때 사용하는 공백 수
-- colorscheme 설정
vim.cmd("colorscheme nordfox")
'Neovim' 카테고리의 다른 글
[RockyOS9] Neovim typescript Tagbar 추가하기 (0) | 2024.12.21 |
---|