developer tip

vi에서 여러 줄을 어떻게 삭제합니까?

optionbox 2020. 8. 2. 18:22
반응형

vi에서 여러 줄을 어떻게 삭제합니까?


나는 다음을 따르려고 노력했다.

VI 편집기에서 선택된 텍스트를 삭제하는 방법

그러나

5dd

준다

E492 : 편집기 명령이 아님 : 5dd

그런 다음 시도했습니다.

5d

한 줄만 삭제합니다. 여러 줄을 어떻게 삭제합니까?


명령 모드 (일명 "Ex 모드")에서 명령을 입력 한 것처럼 들립니다. 이러한 맥락에서 :5d5 번 줄은 제거 될 것입니다. 내용은 5dd즉, 커서에서 시작하여 다섯 개 결과의 줄을 제거 - - 의도 한대로 작업을 일반 모드에서 입력으로 명령을 접두사하지 않습니다 :.


나는 이것을 더 쉽게 발견한다

  1. VISUAL 모드로 이동 Shift+v
  2. 선을 선택하십시오
  3. d 지우는 것

https://superuser.com/questions/170795/how-can-i-select-and-delete-lines-of-text-in-vi


줄 번호를 알고 있으면 여러 줄 (범위)을 삭제할 수 있습니다.

:[start_line_no],[end_line_no]d

참고 : d는 삭제를 나타냅니다.

여기서
start_line_no는 삭제하려는 시작 줄 번호이고 end_line_no는 삭제하려는 끝 줄 번호입니다. 시작과 끝을 포함하여 시작과 끝 사이의 줄이 삭제됩니다.

예 :

:45,101d

45와 101을 포함하여 45와 101 사이의 줄이 삭제됩니다.


일반 모드에서 사용하기 위해 나열된 명령 ( :명령 모드의 접두사 ).
Vim에서 테스트했습니다.

라인 금액별 :

  • NUM은dd - 삭제 NUM 개 (예를 들면 현재 커서 위치에서 카운트를 시작 DOWN 라인 5dd전류 선 및 그 아래 4 개 라인 => 삭제 전류 선 및 삭제를 ( NUM-1 ), 그 아래 행 )
  • NUMdk - 삭제 NUM의 전류 선 및 전류 선 자체에서 라인을 (예를 들면 3dk현재의 라인과 상기 3 개 행을 삭제한다 => 현재 라인 삭제 NUM 그 위에 선 )

줄 번호로 :

  • dNUM은G - 라인 삭제됩니다 현재 줄에서을 (포함) UP 라인 번호 NUM (포함) (커서가 줄에 현재있는 경우 예를 들어 5 d2G삭제됩니다 라인 2-5 포함)
  • dNUM은gg - 행을 삭제합니다 현재 라인에서 (포함) DOWN 라인 번호에 NUM (포함) (커서가 줄에 현재있는 경우 예를 들어 2 d6gg2-6 행을 삭제 포함합니다)
  • ( 유일한 명령 모드 ) :NUM1의 ,NUM2는d - 라인을 삭제합니다 줄 번호 NUM1 (포함) DOWN 라인 번호에 NUM2 (포함)를 . 참고 : num1num2 보다 큰 경우 — vim은Backwards range given, OK to swap (y/n)?

d5d 다섯 줄 "잘라 내기"

나는 보통 중간에 숫자를 던져 넣습니다.

d7l = 7 글자 삭제


비 시각적 모드 방법을 선호하고 라인 번호를 알고 있다면 다른 간단한 방법을 제안하고 싶습니다.

45 행에서 101 행까지 텍스트를 삭제하고 싶습니다.

내 방법은 명령 모드에서 아래 명령을 입력하도록 제안합니다.

45Gd101G

읽는다 :

45 행 ( 45G)으로 이동 한 후 d현재 행에서 101 행 ( )까지 텍스트 ( )를 삭제하십시오 101G.

에 있습니다 vim당신이 사용할 수있는 gg대신에 G.

@Bonnie Varghese의 답변과 비교하십시오 :

:45,101d[enter]

그의 대답에서 위의 명령은을 포함하여 9 번 입력해야하며 enter, 내 대답은 8-10 번 입력해야합니다. 따라서 내 방법의 속도는 비슷합니다.

개인적으로, 나는 나 자신이 선호 45Gd101G이상 :45,101d이 경우가에서 VI의 명령 구문에 스틱처럼 때문에 :

+---------+----------+--------------------+
| syntax  | <motion> | <operator><motion> |
+---------+----------+--------------------+
| command |   45G    |        d101G       |
+---------+----------+--------------------+

Esc키를 눌러 편집 모드가 아닌지 확인하십시오. 삭제할 첫 번째 행에 커서를 놓습니다. 를 입력하십시오 :5dd. 현재 줄과 다음 네 줄을 삭제해야합니다.

또는 라인 번호 매기기를 켠 경우 ...

Press the Esc key to make sure your are not in an edit mode. Enter :#,#d where '#' stands for the beginning and ending line numbers to be deleted.


If you want to delete a range AFTER a specific line trigger you can use something like this

:g/^TMPDIR/ :.,+11d

That deletes 11 lines (inclusive) after every encounter of ^TMPDIR.


it is dxd, not ddx

if you want to delete 5 lines, cursor to the beginning of the first line to delete and d5d


To delete all the lines use - ESC gg dG To delete few lines lets say 5 then use ESC 5dd


  1. Esc to exit insert mode
  2. :1enter go to line 1 (replace '1' with the line you are interested in)
  3. 5dd delete 5 lines (from the current line)

Type :set number (for numbered lines).

참고URL : https://stackoverflow.com/questions/15912868/how-can-i-delete-multiple-lines-in-vi

반응형