Verificação do script Vim executando a plataforma

4
" Get running OS
let os = ""
if has("win32")
  let os="win"
else
  if has("unix")
    let s:uname = system("uname")
    if s:uname == "Darwin"
      let os="mac"
    else
      let os="unix"
    endif
  endif
endif

" Brackets expanding
let preBracket="'"
if os=="mac"
  let preBracket="$"
endif

exe 'vnoremap' . preBracket . '1 <esc>'>a)<esc>'<i(<esc>'
exe 'vnoremap' . preBracket . '2 <esc>'>a]<esc>'<i[<esc>'
exe 'vnoremap' . preBracket . '3 <esc>'>a}<esc>'<i{<esc>'
exe 'vnoremap' . preBracket . '$ <esc>'>a"<esc>'<i"<esc>'
exe 'vnoremap' . preBracket . 'q <esc>'>a''<esc>'<i''<esc>'
exe 'vnoremap' . preBracket . 'e <esc>'>a"<esc>'<i"<esc>'
" Map auto complete of (, ", ', [
exe 'inoremap ' . preBracket . '1 ()<esc>i'
exe 'inoremap ' . preBracket . '2 []<esc>i'
exe 'inoremap ' . preBracket . '3 {}<esc>i'
exe 'inoremap ' . preBracket . '4 {<esc>o}<esc>O'
exe 'inoremap ' . preBracket . 'q ''''<esc>i'
exe 'inoremap ' . preBracket . 'e ""<esc>i'

Como vimscript acima eu quero mapear o atalho para chave de suporte de expansão dependem da plataforma do vim. Na verdade, meu macbook usa layout diferente, mas eu adoro a facilidade de usar o caractere '' 'no teclado, então mapeio para $, que fica no mesmo lugar no teclado mac pro (da layout).

Mas parece que o script funciona bem no linux, mas não funciona no mac. Eu perdi alguma coisa ou preciso adicionar algo para fazer esse script funcionar no Mac OSX?

    
por nXqd 05.06.2012 / 12:44

2 respostas

3

Eu consigo responder minha própria pergunta, para comparar strings no vimscript, devemos usar =~ em vez de == . O reverso é !~

Então edite esta linha if s:uname == "Darwin" to if s:uname =~ "Darwin" para fazer este pequeno script funcionar.

Eu reescrevo isso como função:

function! GetRunningOS()
  if has("win32")
    return "win"
  endif
  if has("unix")
    if system('uname')=~'Darwin'
      return "mac"
    else
      return "linux"
    endif
  endif
endfunction
let os=GetRunningOS()

Espero que isso ajude alguém. No caso, alguém interesse no meu .vimrc , verifique meus dotFiles

    
por 09.06.2012 / 08:38
0

Linux, OS X, FreeBSD, UNIX e uma detecção distro-específica (Debian).

" OS Platform Detection
let g:platform = 0
let g:distro = 0
" more distros to detect:
"https://www.novell.com/coolsolutions/feature/11251.htm://www.novell.com/coolsolutions/feature/11251.html 
let g:uname = substitute(system("uname"), '\n\+$', '', '')
if filereadable("/etc/debian_version")
    let g:platform="Linux"
    let g:distro="Debian"
elseif has('mac')
    let g:platform="Darwin"
    let g:distro="OS X"
elseif g:uname == "FreeBSD"
    let g:platform="FreeBSD"
elseif has('unix')
    let g:platform="UNIX"
elseif has('win32') || has('win64') "win32 also matches on win64 so redundant
    let g:platform="Windows"
elseif has('win32unix')
    let g:platform="Cygwin"
else
    let g:platform="Unknown"
endif
    
por 04.01.2016 / 18:33