Vim의 전역 명령으로 더 적은 내용을 입력하고 시간을 절약하세요!

Vim에 대한 자세한 내용은 다음 팁/팁을 참조하십시오!
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 한 걸음에 도착했다는 것이다.(참고로 ^는 선의 시작 모델이다.파일의 모든 행을 선택합니다.
멋있어!😎
교체gs를 결합할 수 있습니다.
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 포장
  • lib의 l대문자
  • 우리는 매크로를 만들어서 임무를 완성할 수 있다.그러나 우리는 import가 포함되지 않은 줄에서 매크로를 실행하고 싶지 않다.이것은 우리가 매 줄에 매크로를 단독으로 적용해야 한다는 것을 의미합니까?g를 사용하면 "import"을 포함하는 줄에만 매크로를 적용할 수 있습니다!만약 당신이 100여 줄에서 이 일을 완성해야 한다면 시간을 절약할 수 있을 것이라고 상상해 보세요.
    만약 우리가 이미 설치vim-surround(스피드 브래킷 포장에 사용)를 했다면, 다음은 우리의 방법입니다!
  • 매크로를 기록하여 작업 1과 작업 2를 수행합니다.커서를 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
  • 현재 "import"과 :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'
    
    
    우리는 안에 있는 키somethingelse를 정렬하고 싶을 뿐, 다른 것은 아무것도 원하지 않는다.
    하면, 만약, 만약...
    :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 - 경기
  • 전 응용 범위 1행
  • sort-vim의 선별방법
  • 여기 있다!윌의 전 세계 사령부.이것은 단지 그것이 할 수 있는 표면일 뿐이다.체험해 보세요!
    너는 네가 그것으로 무엇을 할 수 있다고 생각하니?
    읽어주셔서 감사합니다.나는 매일vim 힌트를 공유하기 위해 트위터 계정을 만들었다.만약 네가 흥미가 있다면 따라가라!😁

    좋은 웹페이지 즐겨찾기