2011-11-27 3 views
2

작은 Vim 스크립트를 작성하고 있습니다. 옵션 gdefault에 따라 대체에 /g이 포함되거나 필요하지 않습니다.'gdefault'와 독립적으로 대체 하시겠습니까?

사용자 설정에 관계없이 대체를 독립적으로 만드는 방법은 무엇입니까?

gdefault 테스트 이외에도 더 좋은 방법이 있습니까?

답변

3

나는 당신이 무엇을 요구하고 있는지 확실하지 않지만, 이와 같은 일을하는 전형적인 방법은 use'rs '옵션 설정을 저장하고, 원하는 옵션을 변경하고, 명령을 실행 한 다음 사용자 설정을 복원하는 것입니다. 예를 들어,

let user_gdefault = &gdefault 
set nogdefault 
s/something/something else/g 
let &gdefault = user_gdefault 

당신은 더 나은 시도/마침내 구조를 사용하고 싶은 경우

let user_gdefault = &gdefault 
try 
    set nogdefault 
    s/something/something else/g 
finally  
    let &gdefault = user_gdefault 
endtry 
+1

당신은 의미가 옳습니다. 기본적으로, 대체적으로 (gdefault가 켜져있는 것처럼)/(꺼짐) 대체적으로 그 일에 대해 거의 물어볼 필요가없는 방법이 있는지 묻고있었습니다. (유추 : 비교 연산자 ==, ==, ==? <- 그 의미의 것) – Rook

+2

또 다른 방법은'execute 's/somthing/somethingelse /'입니다. (& gdefault? 'g': '') – tungd

+0

@tungd - Certanly better! 좋은 생각. – Rook

0

gdefault의 대체 독립을하는 또 다른 방법은 대신 대체() 함수를 사용하는 것입니다. 예를 들어

:

call setline('.', substitute(getline('.'), 'something', 'somethingelse', 'g')) 

대용의() 함수 gdefault 독립적이다. 이 함수의 패턴 일치는 항상 magic 옵션이 설정되고 cpoptions가 비어있는 것처럼 작동합니다. 그러나, 그것은 여전히 ​​ignorecase를 따른다.

관련 문제