.vimrc에서 현재 운영 체제를 어떻게 구별 할 수 있습니까?


20

거의 동일한 구성으로 OS X와 ​​Windows에서 Vim을 사용합니다.

.vimrc두 운영 체제 에서 동일하게 사용하고 싶지만 다르게 구성해야 할 몇 가지가 있습니다.

.vimrc파일 에 추가하고 싶은 것은 :

:if <windows>
  "some windows-specific settings here
:elseif <os x>
  "some os x-specific settings here
:endif

그러나 <windows>와에 무엇을 사용 해야할지 모르겠습니다 <os x>.

이것이 가능한가?

답변:


30

NB 이전의 두 가지 답변 모두 문제 해결 방법을 알아낼 수있는 충분한 정보를 제공했지만 (나에게서지지를 받음) 실제로 전체 답변을 제공하지는 못했습니다. 같은 질문을 가진 다른 사람들이 연구를 할 필요가 없도록 내 자신의 대답을 추가하고 있습니다. 그러나 @googletorp 또는 @Azz가이 정보를 포함하도록 답변을 수정하면 답변을 삭제하고 수락합니다.

출력 :h feature-listhas("win32")및 을 사용할 수 있어야 has("macunix")하지만 후자는 OS X에 포함 된 Vim 버전 에서는 작동 하지 않습니다 . 그러나 MacVim에서는 작동합니다.

다음은 내가 사용했던 것입니다.

if has("win32")
  "Windows options here
else
  if has("unix")
    let s:uname = system("uname")
    if s:uname == "Darwin\n"
      "Mac options here
    endif
  endif
endif

has("win32")64도 64 비트 빔에, 나를 위해 일한 Windows를 비트.

블록 uname내에서 비슷한 테스트를 사용 if has("unix")하여 다른 유닉스 풍미를 구별 할 수도 있습니다 . 명령 줄에서 실행 uname하거나 uname -a비교할 내용을 확인하십시오 s:uname. 의 출력 :h matchstr()중 일부만 비교해야하는 경우 도 참조하십시오 uname.


1
레코드 : MSYS2의 vim에서 has ( "unix")는 1, has ( "win32")는 0, has ( "win32unix")는 1입니다. 따라서 has ( "win32unix")를 사용하여 구별하십시오.
user31389

4

당신은 좀 걸릴 수 있습니다 여기에

기본적으로, 당신도 사용할 수 있습니다 has(), system():

let os = substitute(system('uname'), "\n", "", "")
if os == "SunOS"
  ..
endif  

2

이것은 당신이 쫓는 것 같습니다, 나는 그것을 이해하지 못하므로 단지 당신을 연결시킬 것입니다.

/programming/2842078/how-do-i-detect-os-x-in-my-vimrc-file-so-certain-configurations-will-only-apply



1
@Rich : 모든 SU 데이터는 Creative Commons Attribution ShareAlike에 따라 라이센스가 부여 된 것으로 보입니다.
Daniel Beck

@Daniel : 흥미 롭습니다! 알려 줘서 고마워.
Rich
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.