Проверка скрипта скрипта Vim

" 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' 

Как vimscript выше, я хочу сопоставить ярлык с ключевым словом расширения, зависящим от платформы vim. На самом деле мой macbook использует разный макет, но мне нравится простота использования символа “ `на клавиатуре, поэтому я сопоставляю с $, который остается на том же месте на Mac Pro-клавиатуре (макет da).

Но похоже, что сценарий отлично работает на Linux, но не работает на Mac. Я что-то пропустил или мне нужно добавить что-то, чтобы этот скрипт работал на Mac OSX?

я могу ответить на свой вопрос, для сравнения строки в vimscript мы должны использовать =~ вместо == . Обратный – !~

Поэтому отредактируйте эту строку, if s:uname == "Darwin" if s:uname =~ "Darwin" чтобы этот маленький скрипт работал.

Я переписываю это как функцию:

 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() 

Я надеюсь, что это помогает кому-то. В случае, если кто-то заинтересован в моем .vimrc , проверьте мои dotFiles

Linux, OS X, FreeBSD, UNIX и дистрибутив (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