" 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