답변:
이러한 사용자 정의 명령은 어떻습니까?
:command! -bang -range -nargs=1 -complete=file MoveWrite <line1>,<line2>write<bang> <args> | <line1>,<line2>delete _
:command! -bang -range -nargs=1 -complete=file MoveAppend <line1>,<line2>write<bang> >> <args> | <line1>,<line2>delete _
"텍스트를 새 파일로 이동"한다는 것은 현재 파일에서 해당 텍스트를 잘라 내고 해당 텍스트 만 포함하는 새 파일을 만드는 것을 의미한다고 가정합니다.
다양한 예 :
:1,1 w new_file
줄 번호 1의 텍스트 만 포함하는 새 파일을 만들려면:5,50 w newfile
5 행에서 50 행까지의 텍스트가 포함 된 새 파일을 작성하려면:'a,'b w newfile
마크의 텍스트가 포함 된 새 파일을 만듭니다 a
마크를b
위의 내용은 텍스트 만 복사하고 해당 텍스트가 포함 된 새 파일을 만듭니다. 그런 다음 나중에 삭제해야합니다.
동일한 범위와 d
명령을 사용하여 수행 할 수 있습니다 .
:5,50 d
5 행에서 50 행으로 텍스트를 삭제하는 방법:'a,'b d
마크에서 텍스트를 삭제하는 a
표시로b
또는 dd단일 회선 케이스 에 사용 합니다.
대신 시각적 모드를 사용하여 텍스트를 선택한 다음 텍스트를 선택하는 :
동안 적중 하면 명령 행에 다음이 표시됩니다.
:'<,'>
선택한 텍스트를 나타냅니다. 그런 다음 명령을 확장하여 다음을 수행 할 수 있습니다.
:'<,'>w >> old_file
어떤 것이다 추가 기존 파일에 텍스트를. 그런 다음 위와 같이 삭제하십시오.
:2,3 d | new +put! "
고장 :
:2,3 d
-2 ~ 3 행 삭제|
기술적으로 이것은 첫 번째 명령의 출력을 두 번째 명령으로 리디렉션하지만 첫 번째 명령은 아무것도 출력하지 않으므로 명령을 함께 연결하는 것입니다.new
-새로운 버퍼를 연다+put! "
-명명되지 않은 레지스터 ( "
) 의 내용을 버퍼에 넣습니다.
!
)은 내용이 현재 줄 앞에 놓 이도록합니다 . 이로 인해 파일 끝에 빈 줄이 생깁니다. 파일이 없으면 파일 맨 위에 빈 줄이 있습니다.'<,'>d | new | 0put "
명확성 을 위해 쓸 수도 있습니다 .
시각 모드에서 텍스트를 선택한 다음을 눌러 y버퍼에 "잉크"하거나 (복사) 버퍼 d에 "삭제"하려면을 누릅니다.
그런 다음 :split <new file name>
vim 창을 분할 p하고 눌린 텍스트를 붙여 넣을 수 있습니다. 정상적으로 파일을 작성하십시오.
분할을 다시 닫으려면 닫으려는 분할을 전달하십시오 :q
.
:x
대신 통과하면 쓰기와 닫기를 하나로 결합하여 5 단계로 만들 수 있습니다. : P