vi / Vim에서 여러 줄을 선택할 때 텍스트를 어떻게 삽입합니까?
에서 빔 , 어떻게 선택의 각 라인의 시작 부분에 문자를 삽입하는 방법에 대한 갈 것이라고?
예를 들어, //
각 줄의 시작 부분 에 앞에 추가 하여 코드 블록에 주석을 달고 싶다고 가정 해 봅시다 (내 언어의 주석 시스템이 블록 주석을 허용하지 않는다고 가정 /* */
). 어떻게해야합니까?
- Esc'명령 모드'로 들어가려면 누르십시오
- Ctrl+ V를 사용 하여 비주얼 블록 모드로 들어갑니다
- 주석을 달고 자하는 행에서 텍스트 열을 선택하려면 Up/ Down을 이동 하십시오.
- 그런 다음 Shift+를 i누르고 삽입하려는 텍스트를 입력하십시오.
- 그런 다음를 누르고 Esc1 초 정도 기다리면 삽입 된 텍스트가 모든 줄에 나타납니다.
더 많은 정보와 읽기를 원하시면 vim wiki에서 관련 기사를 확인하십시오 .
이렇게하면 각 줄 의 시작 부분이 "//"로 바뀝니다 .
:%s!^!//!
선택한 각 줄 의 시작 (비주얼 모드를 사용하여 선택)을 "//"로 바꿉니다 .
:'<,'>s!^!//!
참고 있음 gv
(일반 모드)가 지난 시각적 선택을 복원, 이것은 때때로 유용합니다.
검색 및 바꾸기의 일반적인 패턴은 다음과 같습니다.
:s/search/replace/
'search'의 첫 번째 항목을 현재 줄의 'replace'로 바꿉니다.
:s/search/replace/g
현재 행에 대해 '검색'을 모두 '대체'로 바꿉니다. 'g'는 '전역'의 줄임말입니다.
이 명령은 현재 행에 대해서만 'search'가 나타날 때마다 'replace'로 바뀝니다. %는 전체 파일을 검색하는 데 사용됩니다. 각 교체를 대화식으로 확인하려면 확인을 위해 'c'를 추가하십시오.
:%s/search/replace/c
전체 파일에 대해 '검색'을 '대치'로 바꾸는 대화식 확인
% 문자 대신 행 번호 범위를 사용할 수 있습니다 ( '^'문자는 행 시작에 대한 특수 검색 문자입니다) .
:14,20s/^/#/
14-20 줄의 시작 부분에 '#'문자를 삽입합니다
//와 같은 다른 주석 문자를 사용하려면 명령 구분 기호를 변경하십시오.
:14,20s!^!//!
14-20 행의 시작 부분에 '//'문자 시퀀스를 삽입합니다
또는 항상 다음과 같이 // 문자를 이스케이프 처리 할 수 있습니다.
:14,20s/^/\/\//
14-20 행의 시작 부분에 '//'문자 시퀀스를 삽입합니다
편집기에 줄 번호가 표시되지 않으면 다음을 입력하십시오.
:set nu
새로 온 사람들에게 더 쉬운 또 다른 방법 :
some█
code
here
첫 번째 줄에 커서를 놓습니다 (예 :
: 1 Enter
삽입 모드로 들어가서 텍스트를 추가하려면 다음을 입력하십시오.
I / / Space
// █some
code
here
Esc명령 모드로 돌아가서 digraph를 사용하려면 누릅니다 .
j . j .
// some
// code
//█here
j한 줄 아래로 내려 가고 .마지막으로 편집 한 명령을 반복 하는 동작 명령 입니다.
그리고 또 다른 방법 :
- 줄의 시작으로 이동
- 비주얼 블록 모드로 들어가기 ( CTRL- v)
- 당신이 원하는 라인을 선택 (아래로 / 위로 이동 j/ k[온라인]와 라인에, 또는 점프 G)
- 언론 I(자본 i)
- 주석 문자를 입력하십시오
- 프레스 ESC
이것은 #
모든 줄의 시작 부분에 추가 됩니다 :
:%s/^/#/
그리고 사람들은 적절하게 주석을 달지 않는 스크립트에 대해 불평하지 않을 것입니다.
그것에 대해 멋진 생각을하고 싶다면 이것을 .vimrc에 넣으십시오.
vmap \c :s!^!//!<CR>
vmap \u :s!^//!!<CR>
그런 다음, 비주얼 모드에서, 당신은 칠 수마다 \c
에 C 블록을 omment과 \u
에 U 를 ncomment. 물론 바로 가기 키 입력을 무엇이든 변경할 수 있습니다.
또 다른 방법 :
:'<,'>g/^/norm I//
/^/
모든 라인과 일치하는 더미 패턴입니다. norm
다음 일반 모드 명령을 실행할 수 있습니다. I//
커서를 줄의 시작 부분으로 이동하는 동안 삽입 모드로 들어가라고 말한 후 다음 텍스트 (두 슬래시)를 삽입하십시오.
:g
여러 모드 사이를 이동하거나, 여러 줄을 삭제하거나 추가하거나, 커서를 움직이거나, 여러 매크로를 실행하는 등 여러 줄에서 복잡한 작업을 수행하는 데 유용한 경우가 많습니다. 패턴과 일치합니다.
코드 블록에 주석을 달기 위해 NERD Commenter 플러그인을 좋아합니다 .
일부 텍스트를 선택하십시오.
Shift-V
...select the lines of text you want to comment....
논평:
,cc
주석 해제 :
,cu
또는 라인 또는 블록의 주석 상태를 토글하십시오.
,c<space>
EnhCommentify 플러그인을 추천 할 수 있습니다 .
예. 이것을 vimrc에 넣으십시오.
let maplocalleader=','
vmap <silent> <LocalLeader>c <Plug>VisualTraditional
nmap <silent> <LocalLeader>c <Plug>Traditional
let g:EnhCommentifyBindInInsert = 'No'
let g:EnhCommentifyMultiPartBlocks = 'Yes'
let g:EnhCommentifyPretty = 'Yes'
let g:EnhCommentifyRespectIndent = 'Yes'
let g:EnhCommentifyUseBlockIndent = 'Yes'
그런 다음 ', c'로 (선택한) 줄을 주석 처리하거나 주석 처리를 제거 할 수 있습니다
주석이있는 영역을 시각적 블록으로 표시합니다 ( <C-V
).
하고 c#<ESC>p
c
"#"에 걸다- 다시 넣어
자주하는 경우 \q
.vimrc에서 바로 가기 (예 :)를 정의 하십시오.
:vmap \q c#<ESC>p
여러 줄 선택이 실제로 단락 인 경우 수동으로 줄을 선택할 필요가 없습니다. vim은 당신을 위해 그것을 할 수 있습니다 :
vip
: 전체 단락을 선택하고 표시하십시오.shift-i
: 줄 시작에 텍스트 삽입escape
: 삽입 모드 종료 / 정상 모드 입력 [행 시작이 여전히 선택됨]escape
: 줄 시작 선택 해제
각 줄의 시작 부분에 "ABC"를 삽입하려면
1) 명령 모드로 이동
2) : % 표준 I ABC
'Programing' 카테고리의 다른 글
테이블의 전체 행을 링크로 클릭 가능하게 만드는 방법은 무엇입니까? (0) | 2020.02.23 |
---|---|
표준 C ++ / C ++ 11 / C를 사용하여 파일이 존재하는지 확인하는 가장 빠른 방법은 무엇입니까? (0) | 2020.02.23 |
JavaScript Date를 자정으로 초기화하는 가장 좋은 방법은 무엇입니까? (0) | 2020.02.23 |
커밋 된 파일에 .gitignore 적용 (0) | 2020.02.23 |
모든 오류 및 경고 표시 (0) | 2020.02.23 |