한 줄에 주석을 달고 주석을 해제하고 싶다고 가정해 보겠습니다.
나도 할 수 있다는 걸 알아
:s!^!//!
그런 다음
:s!^//!!
이제 이것을 선으로 사용하고 싶다면 어떻게 해야 할까요?
원래,만약에줄은 다음으로 시작 //
하고 삭제합니다.기타추가하세요.
이 명령을 두 개가 아닌 하나의 바로가기에 매핑하고 싶습니다.
답변1
나는 이것이 직접적으로 이루어질 수 없다고 확신합니다. 그러나 나는 당신을 위해 기능을 생각해 냈습니다. 이것을 당신의 ~/.vimrc
:
function! Toggle()
s!^\(\s*/\?[^/\s]/\?\)!xxx//\1!e
s!^\(\s*\)//!\1!e
s!^xxx//!//!e
endfunc
(이렇게 하면 xxx//
이미 줄의 시작 부분에 있는 내용이 변경 되지만 //
이런 일이 거의 발생하지 않는 것 같습니다.) 언제든지 를 사용하여 호출할 수 있지만 :call Toggle()
키/조합에 매핑하는 것이 더 편리할 수 있습니다. 아래에서는 이를 Ctrl+ 에 매핑합니다 /. 물론 원하는 키 조합으로 대체할 수 있습니다(다른 조합으로 매핑하는 데 도움이 필요한지 묻습니다). 또한 이것을 다음 항목에 넣으십시오 ~.vimrc
.
nnoremap <C-/> :call Toggle()<CR>
vnoremap <C-/> :call Toggle()<CR>
inoremap <C-/> <Esc>:call Toggle()<CR>i
Ctrl+ 는 각각 /일반, 시각적 및 삽입 모드의 기능에 매핑됩니다. 삽입 매핑은 삽입 모드로 돌아가지만 커서는 줄의 시작 부분으로 이동합니다. 일반 패턴을 유지하려면 i
줄 끝에서 제거 하면 됩니다 inoremap
.
(공백을 처리하도록 업데이트되었습니다. //
공백을 제거한 후 항상 줄의 시작 부분에 삽입합니다)