개발자라면 한 번쯤은 코드에 다양한 구분 기호를 추가하거나 변경해야 하는 상황을 마주치게 됩니다. 특히 Neovim 사용자는 이러한 작업을 더 간편하게 수행하고 싶어 할 것입니다. 오늘 소개할 nvim-surround는 이러한 니즈를 충족시켜 주는 훌륭한 도구로, Lua로 작성되어 성능과 유연성을 모두 갖추었습니다. 이 플러그인은 구분 기호를 추가, 변경, 삭제하는 것을 매우 쉽게 만들어 주며, 사용자에게 필요한 모든 기능을 제공합니다.
nvim-surround의 주요 기능
nvim-surround는 다음과 같은 뛰어난 기능을 제공합니다:
- 구분 기호 추가/변경/삭제: 선택한 텍스트에 대해 다양한 구분 기호를 쉽게 추가하거나 변경할 수 있습니다. 예를 들어, HTML 태그나 함수 호출을 포함한 다양한 구분 기호를 지원합니다.
- 도트 반복: 이전 작업을 도트(
.) 키로 반복할 수 있어 효율적인 작업이 가능합니다. - 버퍼 로컬 매핑 설정: 각 버퍼에 따라 다른 설정을 적용할 수 있습니다.
- 가장 가까운 구분 기호로 점프: 수정이 필요한 가장 가까운 구분 기호로 빠르게 이동할 수 있습니다.
- 문자별 별칭 사용: 사용자가 지정한 문자로 여러 텍스트 객체를 대체할 수 있습니다. 예를 들어,
q로 따옴표(',", ``)를 대체할 수 있습니다. - 사용자 정의 구분 기호: Lua 패턴, Vim 모션, Tree-sitter 노드를 사용하여 사용자 정의 구분 기호를 설정할 수 있습니다.
- 시각적 피드백: 선택된 텍스트에 대해 하이라이트를 제공하여 어떤 구분 기호가 적용될지 미리 확인할 수 있습니다.
설치 방법
nvim-surround는 여러 플러그인 관리자와 함께 사용할 수 있습니다. 여기서는 두 가지 예시를 소개합니다.
vim.pack를 사용하는 경우
-- Neovim 버전 0.12 이상이 필요합니다!
vim.pack.add({
{
src = "https://github.com/kylechui/nvim-surround",
version = vim.version.range("4.x"), -- 안정성을 위해 버전을 지정하세요
}
})
lazy.nvim을 사용하는 경우
{
"kylechui/nvim-surround",
version = "^4.0.0", -- 안정성을 위해 버전을 지정하세요
event = "VeryLazy",
-- 추가 설정은 아래와 같이 가능합니다
-- config = function()
-- require("nvim-surround").setup({
-- -- 설정 내용
-- })
-- end
}
기본 사용법
nvim-surround의 핵심 작업은 추가(add), 삭제(delete), 변경(change)입니다. 각각의 작업은 다음과 같은 키맵으로 수행할 수 있습니다:
아래는 몇 가지 예시입니다:
Old text Command New text
--------------------------------------------------------------------------------
surround_words ysiw) (surround_words)
surround_words ysiw( ( surround_words )
make strings ys$" "make strings"
[delete around me!] ds] delete around me!
remove <b>HTML tags</b> dst remove HTML tags
'change quotes' cs'" "change quotes"
<b>or tag types</b> csth1<CR> <h1>or tag types</h1>
delete(function calls) dsf function calls
여기서 주의할 점은 여는 구분 기호(()로 감싸는 경우 선택된 텍스트 앞뒤에 공백이 추가되지만, 닫는 구분 기호())로 감싸면 공백이 포함되지 않는다는 것입니다.
실무에서의 활용 시나리오
개발자는 nvim-surround를 사용하여 다음과 같은 작업을 효율적으로 수행할 수 있습니다:
- HTML 태그 작업: 웹 프로젝트에서 HTML 태그를 자주 추가하거나 삭제해야 할 때, nvim-surround를 사용하면 더욱 빠르게 작업할 수 있습니다. 예를 들어, <div>
태그를 추가하고 싶다면csd<CR>을 입력하면 간편하게 수행할 수 있습니다. - 코드 리팩토링: 자주 사용하는 함수 호출에 괄호를 추가하거나 변경할 때도 유용합니다. 예를 들어, csf
를 사용하여 함수를 감싸는 괄호를 쉽게 변경할 수 있습니다. - 가독성 향상: 코드의 가독성을 높이기 위해 다양한 구분 기호로 텍스트를 감싸는 작업을 손쉽게 수행할 수 있습니다.
비슷한 도구와 비교
nvim-surround와 비슷한 기능을 제공하는 플러그인으로는 vim-surround`가 있습니다. 그러나 nvim-surround는 Neovim에 최적화되어 있으며 Lua로 작성되어 더 나은 성능과 확장성을 제공합니다. 또한, nvim-surround는 Tree-sitter와의 통합을 통해 더욱 복잡한 텍스트 객체를 다룰 수 있는 기능을 제공합니다.
추천 대상
nvim-surround는 Neovim을 사용하는 모든 개발자에게 추천합니다. 특히 HTML, JavaScript, Python 등 다양한 프로그래밍 언어에서 작업하는 개발자라면 코드의 가독성을 높이고 편리한 개발 환경을 구축하는 데 큰 도움이 될 것입니다.
자세한 정보는 nvim-surround GitHub 페이지에서 확인해보세요. 이 플러그인을 활용하여 더 효율적이고 즐거운 코딩 경험을 누려보시기 바랍니다!