Lua - mode ์ฒ˜๋ฆฌ ํ•จ์ˆ˜

์†Œ๊ฐœ lua์—์„œ mode ์ธ์ž๋ฅผ ๋ฐ›์„ ๋•Œ string, table ๋ชจ๋‘๋ฅผ ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š๊ณ  ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ด๋Š” vim.keymap.set() ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋‚ด๋ถ€์—์„œ type์ด table์ด ์•„๋‹ˆ๋ฉด {mode}๋กœ ํƒœ์ด๋ธ”๋กœ ๋ฐ”๊พธ๊ณ  For๋ฌธ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์˜ˆ์ œ -- ํ•จ์ˆ˜ ์ •์˜ function my_map(mode, short, command, opts) local modes = type(mode) == 'table' and mode or { mode } for _, m in ipairs(modes) do vim.keymap.set(m, short, command, opts) end end -- ์‚ฌ์šฉ my_map('n','<leader>r', ':source %<CR>', {noremap=true}) my_map({ 'n','v' },'<leader>r', ':source %<CR>', {noremap=true})

2025-07-29 ยท 72 words

Luajit - Nvim Lsp Config

์†Œ๊ฐœ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ(Alpine Linux)์—์„œ lua-language-server ์„ค์น˜ํ•˜๊ณ  nvim์—์„œ ์„ค์ • ๋ฐ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ด ๋ณธ๋‹ค. alpine 3.2x ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•œ๋‹ค. ๊ณผ๊ฑฐ alpine ๋ฒ„์ „๋“ค์€ lua-language-server๊ฐ€ ์—†๊ฑฐ๋‚˜ nvim์˜ ๋ฒ„์ „์ด ๋‚ฎ์•„ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ง€์›์— ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ํ˜„์žฌ ์‹œ์ ์„ ๊ธฐ์ค€์œผ๋กœ ๋ชจ๋‘ ์ ์ ˆํ•œ ๋ฒ„์ „์„ ์ง€์›ํ•˜๊ณ  ํŒจํ‚ค์ง€๋„ ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์Šค ์ปดํŒŒ์ผ ๋“ฑ์˜ ๋ถ€๋‹ด์ด ์—†์–ด์กŒ๋‹ค. ์„ค์น˜ luajit๋ฐ lua-language-server ๊ทธ๋ฆฌ๊ณ  neovim๊ด€๋ จ ํŒจํ‚ค์ง€ ์„ค์น˜ ์•„๋ž˜์˜ ๊ฒฝ์šฐ nvim(neovim) ์„ค์น˜์‹œ lfs.so,penlight๋“ฑ์ด ๊ธฐ๋ณธ ํฌํ•จํ•˜๊ฒŒ ๋œ๋‹ค. (์ถ”๊ฐ€ ์„ค์น˜ ๋ถˆํ•„์š”) apk add --no-cache luajit luajit-dev lua-language-server ldoc apk add --no-cache neovim neovim-doc nvim-treesitter \ tree-sitter tree-sitter-cli tree-sitter-lua tree-sitter-bash \ tree-sitter-c tree-sitter-markdown tree-sitter-vimdoc ์„ค์ • ~/.config/nvim/init.lua์— ๋‹ค์Œ ์„ค์ •์„ ์ถ”๊ฐ€ my_project_path๋Š” ๊ฐœ๋ณ„ ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค. workspace์˜ library ๋ฒ”์œ„๊ฐ€ ํฌ๋ฉด ๋ถ€ํ•˜๊ฐ€ ์ปค์ง€๋ฏ€๋กœ ์ ๋‹นํžˆ ์กฐ์ ˆํ•ด ์ฃผ์–ด์•ผ nvim์—์„œ ๋ฌด๋ฆฌ๊ฐ€ ์—†๋‹ค. ์•„๋ž˜ ์ฃผ์„ ํ‘œ์‹œ๋œ ๋ถ€๋ถ„์„ ์ฃผ์˜ํ•ด์„œ ํ™•์ธํ•˜๊ณ  ์ž์‹ ์—๊ฒŒ ๋งž๋Š” ํ™˜๊ฒฝ์„ ์„ค์ •ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ณผ๊ฑฐ sumneko๋ผ๋Š” ์‹์œผ๋กœ ์„ค์ •ํ–ˆ๋Š”๋ฐ ํ˜„์žฌ lspconfig.lua_ls.setup์œผ๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค. -- Now set capabilities on your LSP servers local lspconfig = require'lspconfig' local my_project_path = os.getenv('HOME') .. '/.local/lib/lua' print(my_project_path) lspconfig.lua_ls.setup { --capabilities = capabilities, root_dir = lspconfig.util.root_pattern(".git", ".luarc.json", ".luarc.js"), settings = { Lua = { runtime = { version = 'Luajit', path = vim.split(package.path, ";"), }, diagnostics = { globals = {'vim'}, update_in_insert = false, }, workspace = { library = { --// ๊ธฐ๋ณธ vim ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ ๋ชจ๋“ˆ ์ถ”๊ฐ€ [vim.env.VIMRUNTIME] = true, --// ๋ชจ๋“  vim์˜ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ ๋ชจ๋“ˆ ์ถ”๊ฐ€ --[vim.api.nvim_get_runtime_file("", true)] = true, --// my project ๋ชจ๋“ˆ ์ถ”๊ฐ€ [vim.fn.expand(my_project_path)] = true, }, --// ์ œ3์˜ ๋ชจ๋“ˆ ์ œ์™ธ checkThirdParty = false, }, telemetry = { enable = false, }, }, }, } ์ฐธ๊ณ  lua-language-server - Getting Started https://github.com/sumneko/lua-language-server/wiki/Getting-Started#command-line

2025-07-27 ยท 241 words

Zig + Nvim ์„ค์ •

last updated: {{ โ€œ1710903265โ€ | date: โ€œ%Y-%m-%d %H:%Mโ€ }} Intro neovim์—์„œ zig ์„ค์ • ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ๋‹ค. Install on Alpine ์„ค์น˜ํ•˜๊ธฐ $ doas apk add zig zls neovim $ nvim ~/.local/nvim/init.lua require 'lspconfig'.zls.setup{} ๋‹ค๋ฅธ ์–ด๋–ค ์–ธ์–ด๋ณด๋‹ค๋„ ์„ค์ •์ด ๊ฐ„๋‹จํ•˜๋‹ค. zls๋Š” zig language server lspconfig๋Š” neovim์— ๋‚ด์žฅ๋œ LSP ์„ค์ •์„ ๋งํ•œ๋‹ค. nvim ์„ค์ • ํ›„ zigํŒŒ์ผ์„ ์—ด๊ณ  ์ฝ”๋”ฉํ•˜๋ฉด ๋„์›€๋ง์ด ๋‚˜ํƒ€๋‚œ๋‹ค. tab์œผ๋กœ ์ด๋™ํ•˜๊ณ  Enter๋กœ ์„ ํƒํ•œ๋‹ค. Install zls from Source ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผํ•˜๋Š” ๋ฐฉ๋ฒ•. ์ตœ์‹  ๋ฒ„์ „์˜ zig(ํ˜„์žฌ 0.12)์ด์–ด์•ผ git ์†Œ์Šค๋กœ ์ปดํŒŒ์ผ ๋œ๋‹ค. zig ์ตœ์‹  ๋ฒ„์ „์€ zig ํ™ˆ์—์„œ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ ์ ˆ์ฐจ์— ๋”ฐ๋ผ ๋นŒ๋“œํ•œ๋‹ค. $ git clone https://github.com/zigtools/zls $ cd zls $ zig build -Doptimize=ReleaseSafe $ mkdir ~/bin && cp zig-out/bin/zls ~/bin $ echo 'export PATH=$HOME/bin:$PATH' >> ~/.bash_profile $ source ~/.bash_profile $ zls --version Links Neovim setup for Zig https://terminalprogrammer.com/neovim-setup-for-zig

2024-03-12 ยท 121 words

nvim-scp - nvim์œผ๋กœ ์›๊ฒฉ ํŒŒ์ผ ํŽธ์ง‘

Intro ์›๊ฒฉ์ง€์— ์ง์ ‘ ๋กœ๊ทธ์ธํ•ด์„œ ํŽธ์ง‘ํ•  ๊ฒฝ์šฐ ๊ทธ ๊ณณ์˜ vim ๋˜๋Š” nvim ์„ ์„ค์น˜, ์„ค์ •์„ ํ•ด์ฃผ์–ด์•ผ ํŽธํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ„๋‹จํžˆ ์ˆ˜์ •ํ•˜๋Š” ์ •๋„๋ฉด ๊ธฐ๋ณธ์ ์ธ vi ์ •๋„๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๊ทธ๊ฒƒ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ข€ ๋” ์ž์„ธํ•œ ์ˆ˜์ • ๋˜๋Š” ์ฝ”๋”ฉ์„ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ถˆํŽธํ•˜๋‹ค. ๋กœ์ปฌ์—์„œ ์ž์‹ ์ด ์„ค์ •ํ•ด ๋†“์€ (n)vim์œผ๋กœ ์›๊ฒฉ์ง€ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด๋‹ค. ์กฐ์‚ฌํ•œ ๊ฒฐ๊ณผ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ๋งŽ์€๋ฐ scp๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณต์žกํ•˜์ง€ ์•Š๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์“ฐ๊ธฐ ์ข‹๋‹ค. ๊ทธ ๋ฐ–์˜ ๋ฐฉ๋ฒ•์œผ๋กœ nvim server/client mode๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•, rsync, tmux, distant.nvim ๋“ฑ์ด ์žˆ๋‹ค. Howto ๋จผ์ € ๋กœ์ปฌ์— ssh, scp ๋“ฑ์ด ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋‹น์—ฐํžˆ ๋กœ์ปฌ์— ์ž์‹ ์˜ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์„ค์น˜ ์„ค์ •๋œ (n)vim๋„ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์›๊ฒฉ์ง€์— ssh๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ๋„ ํ•„์š”ํ•˜๋‹ค. ssh์›๊ฒฉ๋กœ๊ทธ์ธ์„ ํ‚ค์ธ์ฆ์œผ๋กœ ํ•ด ๋†“์œผ๋ฉด ๋”์šฑ ํŽธ๋ฆฌํ•˜๋‹ค. (ssh-keygen์œผ๋กœ ์ƒ์„ฑ, local:id_rsa.pub -> remmote:authorized_keys ์ถ”๊ฐ€) $ vim scp://user@server-name[:port]//path-to-file.txt ๋˜๋Š” (n)vim์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ...

2023-09-07 ยท (updated 2023-09-08) ยท 164 words

Comment.nvim - nvim ์ฃผ์„์ฒ˜๋ฆฌ ํ”„๋กœ๊ทธ๋žจ

Intro ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ ๊ฐ ์–ธ์–ด๋ณ„ ์ฃผ์„์ฒ˜๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ ์ œ๊ฑฐ ํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ด€๋ จ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ค‘์— ๊ฐ€์žฅ ์ธ๊ธฐ๊ฐ€ ๋งŽ๊ณ  ์‚ฌ์šฉ์ด ํŽธ๋ฆฌํ•˜๋‹ค. Features Supports treesitter. Supports commentstring. Read :h comment.commentstring Supports line (//) and block (/* */) comments Dot (.) repeat support for gcc, gbc and friends Count support for [count]gcc and [count]gbc Left-right (gcw gc$) and Up-Down (gc2j gc4k) motions Use with text-objects (gci{ gbat) Supports pre and post hooks Ignore certain lines, powered by Lua regex Install With packer.nvim use { 'numToStr/Comment.nvim', config = function() require('Comment').setup() end } Manual Install $ cd ~/.local/share/nvim/site $ git clone https://github.com/numToStr/Comment.nvim $ cp Comment.nvim/plugin/Comment.lua plugin/ $ cp -r Comment.nvim/lua/Comment lua/ $ vi ~/.config/nvim/init.lua ... lua require('Comment').setup() :so % REFERNCE Comment.nvim Github: https://github.com/numToStr/Comment.nvim

2023-08-10 ยท 119 words