때로는 여러 줄에 걸쳐 특정 시각적 텍스트 블록을 편집하고 싶습니다.
예를 들어 다음과 같은 텍스트를 사용합니다.
name
comment
phone
email
그리고 이렇게 보이게
vendor_name
vendor_comment
vendor_phone
vendor_email
현재 내가 지금 할 방식은 …
- 를 누른 V다음 j4 번 을 눌러 블록의 4 행을 모두 선택하십시오 .
- 와 들여 쓰기 >.
- 로 한 글자 뒤로 이동합니다 h.
- 로 시각 모드 차단으로 이동합니다 Ctrlv.
- j4 번 눌러 4 행을 선택하십시오 . 이 시점에서 공백의 4×1 시각적 블록 (4 행 1 열)을 선택했습니다.
- 를 누릅니다 C. 이것은 하나의 열만큼 왼쪽으로 들여 쓰기되어 있습니다.
" vendor_"
따옴표없이 입력 하십시오. 추가 공간을 다시 확보해야합니다.- 를 누릅니다 Esc. 이것은 Esc삽입 모드를 종료 하는 데 사용 하는 횟수 중 하나입니다 . Ctrlc첫 번째 줄만 편집합니다.
- 1 단계를 반복하십시오.
- 로 다른 방법으로 들여 쓰기하십시오 <.
단어 앞에 공백이 하나 이상 있으면 들여 쓰기 할 필요가 없습니다. 를 사용하여 시각적 블록을 지우지 않아도 공백이 필요하지 않습니다 c.
그러나 분명히해야한다면 들여 쓰기로 필요한 공백을 만들지 않고 위에서 수행 한 작업을 수행 할 수 있습니까?
또한 이유와 삽입 모드 밖으로 종료에 의해서만 작업을 한 번에 여러 줄을 편집 않는 Esc이상 Ctrlc?
보다 복잡한 예는 다음과 같습니다.
name = models.CharField( max_length = 135 )
comment = models.TextField( blank = True )
phone = models.CharField( max_length = 135, blank = True )
email = models.EmailField( blank = True )
에
name = models.whatever.CharField( max_length = 135 )
comment = models.whatever.TextField( blank = True )
phone = models.whatever.CharField( max_length = 135, blank = True )
email = models.whatever.EmailField( blank = True )
이 예에서는에 대해 수직 비주얼 블록을 수행 .
한 다음 삽입 모드 (예 : type) 동안 다시 삽입합니다 .whatever.
. 바라건대 이제이 방법의 단점을 볼 수 있습니다. 수직 위치에서 모두 동일한 텍스트 열만 선택하는 것으로 제한됩니다 .
답변
- 받는 커서를 이동
n
에서name
. - 비주얼 블록 모드 ( Ctrlv)로 들어갑니다.
- j세 번 누릅니다 (또는 3j).
I
(자본 i)를 누릅니다 .- 을 입력하십시오
vendor_
. 참고 :를 누를 때까지 (6.) 모든 줄이 업데이트 될 때까지 첫 번째 줄 의 화면 만 업데이트 Esc됩니다. - 를 누릅니다 Esc.
소문자 는 텍스트 객체 의 시작으로 해석 되기 때문에 I
소문자 대신 대문자를 사용해야합니다 . 예를 들어 태그 블록 ( ) 내부에서 선택하는 경우 자체적으로 유용합니다 .i
i
it
답변
또 다른 방법은 .( dot
) 명령을와 함께 사용하는 것입니다 I.
- 시작하려는 위치로 커서를 이동하십시오
- 프레스 I
- (예를 들어, 당신이 원하는 접두사에 입력
vendor_
) - 를 누릅니다 esc.
- 누르면 j줄을 아래로 이동
- .접두사를 자동으로 다시 삽입하여 마지막 편집을 반복하려면 입력 하십시오.
- j와 사이를 빠르게 교체.
이 기술은 종종 적은 수의 추가에 대해 시각적 블록 모드보다 빠르며 범위 내의 모든 한 줄에 텍스트를 삽입 할 필요가 없으면 여분 j의 키 를 눌러 쉽게 건너 뛸 수 있다는 이점이 있습니다. .
많은 수의 연속 된 추가의 경우 블록 접근 또는 매크로가 우수 할 수 있습니다.
답변
- 을 사용하여 수정하려는 줄을 선택하십시오 CtrlV.
-
프레스:
- I: 선택한 항목 앞에 삽입합니다.
- A: 선택한 후 추가합니다.
- c: 선택한 내용을 바꿉니다.
-
새 텍스트를 입력하십시오.
- Esc선택한 모든 줄에 변경 사항을 적용하려면 누릅니다 .
답변
매크로를 사용하여 내 작업을 기록한 다음 반복합니다.
- name 의 첫 글자에 커서를 놓습니다 .
- qqq 버퍼에 기록을 시작하려면 누르십시오 .
- 히트는 i삽입 모드를 입력로 이동합니다 vector_ 다음 공격 Esc모드 삽입 떠날.
- 이제 0라인의 시작 부분으로 돌아갑니다.
- 이제 j내려갑니다.
- 이제 q다시 기록을 중지하십시오.
이제 멋진 매크로가 생겼습니다.
3@q나머지 행을 수행하려면 매크로를 세 번 실행하도록 입력 하십시오.
답변
:%s/^/vendor_/
아니면 뭔가 빠졌습니까?
답변
2016 년 1 월 업데이트
허용되는 답변이 훌륭한 솔루션이지만 실제로는 키 입력이 약간 적으며 허용되는 답변에 따라 원칙적으로 더 잘 확장됩니다.
- 받는 커서를 이동
n
에서name
. - 비주얼 블록 모드 ( ctrlv)로 들어갑니다.
- 프레스 3j
- 를 누릅니다
I
. - 을 입력하십시오
vendor_
. - 를 누릅니다 esc.
제공된 답변보다 키 입력 횟수가 적습니다 (3 단계 비교). 수행 할 j 작업 수만 계산합니다.
라인 번호가 활성화되어 있고 (위 그림 참조) 이동하려는 라인 번호를 알고 있다면 3 단계를 #으로 변경할 수 있습니다. G여기서 #은 원하는 라인 번호입니다.
위의 예에서 이것은입니다 4G. 그러나 몇 줄 번호를 처리 할 때 명시 적 카운트가 잘 작동합니다.
답변
vi (나노가 아님) 만있는 서버의 일부 구성 파일에서 많은 줄 을 주석 처리하고 싶었 으므로 시각적 방법도 번거로 웠습니다.
- 파일 열기
vi file
- 줄 번호 표시
:set number!
또는:set number
- 그런 다음 줄 번호를 사용하여 줄 시작을 “#”으로 바꾸십시오. 어떻게?
:35,77s/^/#/
참고 : 숫자는 포함되며 35 ~ 77 행이며 둘 다 수정됩니다.
주석 처리를 제거하거나 취소하려면 간단히 :35,77s/^#//
모든 코드 줄 뒤에 텍스트 단어를 주석으로 추가하려면 다음을 사용할 수도 있습니다.
:35,77s/$/#test/
(Python과 같은 언어의 경우)
:35,77s/;$/;\/\/test/
(Java와 같은 언어의 경우)
크레딧 / 참조 :