시각적으로 선택한 텍스트를 UNIX 명령에 파이프하고 VIM의 현재 버퍼에 출력을 추가하는 방법
문제
VIM을 사용하여 시각적 모드에서 선택한 텍스트를 UNIX 명령으로 파이프하고 현재 파일의 끝에 출력을 추가하려고합니다. 예를 들어, 다음과 같은 SQL 명령이 있다고 가정합니다.
SELECT * FROM mytable;
다음과 같은 일을하고 싶습니다.
<ESC>
V " select text
:'<,'>!mysql -uuser -ppass mydb
그러나 출력이 현재 선택된 텍스트를 덮어 쓰는 대신 파일 끝에 출력을 추가하고 싶습니다. 당신은 아마 이것이 어디로 가는지 볼 것입니다. VIM을 간단한 SQL 편집기로 사용하고 있습니다. 그렇게하면 VIM을 편집, 조정, 테스트 SQL 코드를 테스트 할 필요가 없습니다.
해결책
선택한 텍스트를 파일 끝에 복사하는 것은 어떻습니까? 사본을 선택하고 명령을 실행하는 것은 어떻습니까? 동일한 명령을 반복해서 반복하지 않으려면 사용하여 순서를 녹음 할 수 있습니다. q
또는 새 명령을 추가하십시오. 후자를 다음과 같이 시도했습니다.
:com -range C <line1>,<line2>yank | $ | put | .,$ !rev
그것으로 일부 줄을 선택한 다음 입력 할 수 있습니다. :C
. 이것은 먼저 선택을 잡아 당긴 다음 파일의 끝으로 이동하여 Yanked 텍스트를 붙여 넣고 명령을 실행합니다 (rev
이 경우) 새 텍스트를 통해.
다른 팁
더 프로그램 적 접근 방식을 선호하는 경우
:call append(line("$"), system("command", GetSelectedText()))
어디 GetSelectedText
재사용 가능한 기능입니다.
func! GetSelectedText()
normal gv"xy
let result = getreg("x")
normal gv
return result
endfunc
노력하다
:r | YourCommand
예를 들어:
:r ! echo foo
추가합니다 foo
버퍼에.
제휴하지 않습니다 StackOverflow