vim-줄을 세지 않고 큰 텍스트 블록을 삭제하는 방법?
vim에서는 종종 큰 텍스트 블록을 삭제하거나 복사합니다. 예를 들어 텍스트 줄을 세어
50dd
50 줄을 삭제할 수 있습니다.그러나 삭제할 줄 수를 알지 않고도이 큰 텍스트 블록을 어떻게 삭제합니까?
저는 vim 전문가는 아니지만이 상황에서 사용하는 것은 "시각 모드"입니다. 명령 모드에서
V
(capital)을 입력하십시오 . 그런 다음 위 / 아래로 이동하여 삭제하려는 블록을 강조 표시합니다 (모든 일반적인 이동 명령이 작동 함). 그런 다음
x
또는로 제거하십시오
d
.
시작 줄로 이동하여 입력하십시오
ma
( "a"표시). 그런 다음 마지막 줄로 이동하여
d'a
"a"를 표시하려면 삭제 하십시오 .현재에서 표시된 행까지의 모든 행이 삭제됩니다 (포함). 또한 환경이 후자에게 축복을받지 않을 가능성이
vi
있을 때 와 호환됩니다
vim
.
당신은 (어떤 명령도 삭제 옵션을 사용할 수 있습니다) 또한 비주얼 모드를 사용할 수 있습니다
vipvap
, 단락을 선택
v2ap
두 단락의 선택
dap
, 작품
d2ap
도.
[
]
같은 블록 내에서 삭제할 수 있습니다
da[
참고로 : 객체 유형. vim 문서에서 : 섹션 4.
http://vimdoc.sourceforge.net/htmldoc/visual.html
4. Operating on the Visual area *visual-operators*
...
The objects that can be used are:
aw a word (with white space)
iw inner word
aW a WORD (with white space)
iW inner WORD
as a sentence (with white space)
is inner sentence
ap a paragraph (with white space)
ip inner paragraph
ab a () block (with parenthesis)
ib inner () block
aB a {} block (with braces)
iB inner {} block
a< a <> block (with <>)
i< inner <> block
a[ a [] block (with [])
i[ inner [] block
여기에는 더 나은 답변이 많이 있지만 완전성을 위해 위에서 언급 한 훌륭한 답변 중 일부를 읽기 전에 사용했던 방법을 언급 할 것입니다.24-39 행에서 삭제한다고 가정하십시오. ex 명령을 사용할 수 있습니다
:24,39d
당신은 또한 사용하여 라인을 k 수 있습니다
:24,39y
24-39 줄 이상을 찾아서 바꾸십시오.
:24,39s/find/replace/g
당신이를 통해 행 번호를 설정 한 경우
set number
당신 간단하게 할 수 있습니다
dNNG
현재 위치에서 NN을 줄을 삭제한다. 따라서 삭제하려는 줄의 시작 부분으로 이동하고 삭제하려는
d50G
마지막 줄이라고 가정하면됩니다.
그것은
큰 블록
이 무엇인지에 달려 있습니다. 어쩌면 당신은 단락을 삭제하는 것을 의미
dip
할 것입니다.
몇 가지 가능성이 있으며, 가장 좋은 것은 작업하는 텍스트에 따라 다릅니다. 두 가지 가능성이 떠 오릅니다.
- 시각 모드 (
V
,,S-V
...)로 전환 하고 커서를 움직여 텍스트를 선택한 후d
- 다음을 사용하여 전체 단락을 삭제하십시오.
dap
전체 블록이 화면에 표시되면 상대 숫자 설정을 사용할 수 있습니다. : help relativenumber를 참조하십시오. 7.3에서 사용 가능
커서를 블록의 시작 또는 끝 부분에 놓고 시각적 모드 (shift-v)로 들어갈 수 있습니다. 그런 다음 원하는 블록이 강조 표시 될 때까지 위 또는 아래로 이동하십시오. 마지막으로 y를 눌러 텍스트를 복사하거나 d를 눌러 텍스트를 자릅니다.
여기에 이미 언급 된 다른 동작과 함께 동작도
/{pattern}<CR>
있으므로 foo가 포함 된 행으로 삭제하려는 경우을 수행 할 수 있습니다
dV/foo<CR>
.
V
기본적
/
으로 문자 방식 이므로 모션을 선 방향으로 강제하기 위해 여기에 있습니다 .
줄을 세는 것은 너무 지루하지만 '단락'을 세는 것은 그렇게 나쁘지 않습니다. '{'및 '}'은 커서를 커서 전후의 첫 번째 빈 줄로 각각 이동합니다. 커서 이동 작업은 삭제와 결합 할 수 있으며 다른 몇 가지 답변도 비슷한 방식 (행은 dd, 문서 끝은 dG 등)을 사용했습니다.
예를 들면 다음과 같습니다.
/* Lorem ipsum dolor sit amet, consectetur adipiscing elit. */
Lorem *ipsum(void) {
return dolor(sit, amet);
}
If your cursor starts above the comment block, 'd}' deletes the comment block, and 'd2}' deletes both the comment block and the code block. If your cursor starts below the code block, 'd{' deletes the code, and 'd2{' deletes both. Of course, you can skip over one block by moving the cursor first: '{d{' or '}d}'.
If you're consistent with your whitespace, or you can count the paragraphs at a glance, this should work. The Vim help file has more cursor tricks if you're interested.
You can also enter a very large number, and then press dd
if you wish to delete all the lines below the cursor.
Deleting a block of text
Assuming your cursor sits at the beginning of the block:
V/^$<CR>d (where <CR> is the enter/return key)
Explanation
- Enter "linewise-visual" mode:
V
- Highlight until the next empty line:
/^$<CR>
- Delete:
d
Key binding
A more robust solution:
:set nowrapscan
:nnoremap D V/^\s*$\\|\%$<CR>d
Explanation
- Disable search wrap:
:set nowrapscan
- Remap the
D
key (to the following commands)::nnoremap D
- Enter "linewise-visual" mode:
V
- Highlight until the next empty/whitespace line or EOF:
/^\s*$\\|\%$<CR>
- Delete:
d
'programing' 카테고리의 다른 글
i ++와 ++ i의 차이점은 무엇입니까? (0) | 2020.05.13 |
---|---|
Android에서 URI 빌더를 사용하거나 변수가있는 URL을 작성하십시오. (0) | 2020.05.13 |
HTML 페이지에서 이미지 드래그 비활성화 (0) | 2020.05.13 |
Swift iOS 앱에서 상태 표시 줄을 숨기려면 어떻게합니까? (0) | 2020.05.13 |
Windows 탐색기 "명령 프롬프트" (0) | 2020.05.13 |