Vim의 전역 명령으로 더 적은 내용을 입력하고 시간을 절약하세요!
6040 단어 globalvimneovimproductivity
Vim의 글로벌(
:h :g
명령은 현재 편집된 파일에서 Ex 명령(Ex 명령의 흔한 예로는 d
(삭제),t
(복제),s
(교체),m
(이동) 등이 있다.만약 적절하게 사용한다면, 그것은 너의 대량의 타자 시간을 절약할 수 있다.g
다음 구문을 따릅니다.:[range]g[lobal]/{pattern}/[cmd]
여기서 나는 기본적인, 약간 고급스러운, 고급스러운 용례를 소개할 것이다.만약 이것이 당신이 처음 사용한 것이라면g
고급 버전을 따를 필요가 없습니다. 더 많은 사용 경험을 얻은 후에 언제든지 돌아올 수 있습니다.Vim을 배우는 데는 대량의 근육 기억이 필요하다.나는 줄곧 Vim의 새로운 것을 배우고 있다.🤓언제 사용합니까?
한 파일에서 같은 Ex 명령을 반복하는 것을 발견할 때마다 "내가 어떻게
:g
로 이 임무를 한 번에 완수할 수 있겠는가?"라고 생각해야 한다.기본 용례
기본적인 용례부터 시작해서 더 복잡한 용례로 넘어가자.
"const"파일이 여러 개 있는 경우 모두 삭제해야 합니다.
const hello = "world";
const foo = "bar";
const baz = "qux";
// and many more const...
뛰다:g/const/d
그들은 떠났다!방금 무슨 일이 있었어요?
우리는
g
모드를 주었습니다. "const"
문자열입니다.패턴과 일치하는 모든 선 g
을 찾았습니다.이 일치에 대한 실행 d
(삭제).g
기본적으로 명령이 전달되지 않으면 p
(인쇄)가 실행됩니다.해봐: :g/const/
.그것도 범위를 받아들인다.10행과 20행 사이의 모든 빈 줄을 없애고 싶다면.다음과 같은 방법으로 수행할 수 있습니다.
:10,20g/^$/d
주: ^$
는 빈 줄에 사용되는 정규 표현식 모드입니다.더 높은 용례
우리 계속해서 더욱 기이한 용례를 토론합시다.
다음을 가정하고 행 순서를 뒤집으려면 다음과 같이 하십시오.
const one = 1;
const two = 2;
const three = 3;
const four = 4;
:g
를 사용하려면 다음과 같이 하십시오.:global/^/m 0
우리는 다음과 같은 것을 얻을 수 있다.const four = 4;
const three = 3;
const two = 2;
const one = 1;
멋있는데 어떻게 일하는 거예요?m 0
행을 대상 행 번호(행 0)로 이동합니다(상세 정보:h :m
.만약 당신이 수동으로 조작하고 싶다면, 첫 번째 줄, 운행 :m 0
, 다음 줄, 운행 :m 0
, 다음 줄, 운행 :m 0
등으로 이동할 수 있습니다. 이 줄들이 점점 최신 줄 위에 놓여 있음을 알 수 있습니다.다른 것은 g
한 걸음에 도착했다는 것이다.(참고로 ^
는 선의 시작 모델이다.파일의 모든 행을 선택합니다.멋있어!😎
교체
g
와 s
를 결합할 수 있습니다.good, bad, ugly
you're so good it's bad
nothing bad here
만약 우리가 모든'나쁨'을'좋음'으로 바꾸고 싶지만'좋음'을 포함하는 줄에서만 할 수 있다면 우리는 다음과 같이 할 수 있다.:g/good/s/bad/nice/g
우리는 다음과 같은 것을 얻을 수 있다.good, nice, ugly
you're so good it's nice
nothing bad here
고급 용례
g
매크로와 함께 사용할 수 있습니다.구문은 다음과 같습니다.:g/keyword/norm! @q
다음 항목에 대한 간단한 설명을 가정해 봅시다.import lib1
import lib2
const something = 'else';
import lib3
// ...and many more imports
우리의 임무는:{}
모든 LIB 포장import
가 포함되지 않은 줄에서 매크로를 실행하고 싶지 않다.이것은 우리가 매 줄에 매크로를 단독으로 적용해야 한다는 것을 의미합니까?g
를 사용하면 "import"을 포함하는 줄에만 매크로를 적용할 수 있습니다!만약 당신이 100여 줄에서 이 일을 완성해야 한다면 시간을 절약할 수 있을 것이라고 상상해 보세요.만약 우리가 이미 설치vim-surround(스피드 브래킷 포장에 사용)를 했다면, 다음은 우리의 방법입니다!
import lib1
의 "i"위에 놓고 다음을 실행합니다.qq0w~ysiw{q
// qq = record macro in q register
// 0 = go to beginning of line
// w = jump one word
// ~ = capitalize letter under cursor
// ysiw{ = vim-surround: add {} around lib1
// q = exit recording
import lib1
:g
를 포함하는 줄에서만 매크로를 실행합니다!:g/import/norm! @q
바로 여기에 있습니다.import { Lib1 }
import { Lib2 }
const something = 'else';
import { Lib3 }
// and more...
g
도 다른 범위를 받아들인다.구문은 다음과 같습니다.:g/pattern1/, /pattern2/ {cmd}
이것은 {cmd}
패널 1과 패널 2 (포함) 사이의 "블록"에만 적용됩니다.하나의 실제 용례는 우리가 다음과 같은 내용을 가지고 있다고 가정하는 것이다.
const something = {
c: 'x',
b: 'x',
a: 'x',
d: 'x',
}
const else = {
d: 'x',
c: 'x',
a: 'x',
b: 'x',
}
const a = 'hello'
const b = 'foo'
const c = 'bar'
우리는 안에 있는 키something
와 else
를 정렬하고 싶을 뿐, 다른 것은 아무것도 원하지 않는다.하면, 만약, 만약...
:g/\v\{/+1,/\v}/-1 sort
이제 객체의 모든 컨텐트가 정렬되고 다른 모든 컨텐트는 정렬되지 않습니다.const something = {
a: 'x',
b: 'x',
c: 'x',
d: 'x',
}
const else = {
a: 'x',
b: 'x',
c: 'x',
d: 'x',
}
const c = 'bar'
const a = 'hello'
const b = 'foo'
이것이 바로 우리가 원하는 것이다.구체적인 상황은 다음과 같습니다.
:g/\v\{/+1,/\v}/-1 sort
\v
-vim의 마법 활성화\{
- 선택{
(전의특수 문자)+1
- 경기 후 응용 범위 1행을 표시한다-1
- 경기sort
-vim의 선별방법너는 네가 그것으로 무엇을 할 수 있다고 생각하니?
읽어주셔서 감사합니다.나는 매일vim 힌트를 공유하기 위해 트위터 계정을 만들었다.만약 네가 흥미가 있다면 따라가라!😁
Reference
이 문제에 관하여(Vim의 전역 명령으로 더 적은 내용을 입력하고 시간을 절약하세요!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/iggredible/save-time-by-typing-less-with-vim-s-global-command-30m2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)