1

I would like to do a check like

if system($(uname -m | sed 's/x86_//;s/i[3-6]86/32/') == 64
    Plug 'valloric/youcompleteme', { 'do': './install.py --all' }
else
    Plug 'valloric/youcompleteme', { 'do': './install.py --clang-complete --system-libclang --omnisharp-completer --gocode-completer --tern-completer --racer-completer' }
endif
  • Welcome to this site @Arturo. We value well written questions which show efforts to solve the problem first. Here your expression doesn't have matching brackets and you don't describe which error you get. Please edit your question to address these problems. – statox May 01 '17 at 10:10
  • What do you need the check for? If it's to see if 64 Numbers are supported you might use has('num64'). – Octaviour May 01 '17 at 13:52

1 Answers1

0

The code you're looking for is the following:

if system('uname -m | grep 64') == 0
    echo '64 bit system'
else
    echo '32 bit system'
endif

Your call to system system($(uname -m | sed 's/x86_//;s/i[3-6]86/32/') doesn't have a matching number of brackets.

Also you don't need to use the $(...) syntax since system() take a string to execute as parameter.

Finally you don't need to use sed, grep is enough to detect the presence of a substring in a string.

statox
  • 49,782
  • 19
  • 148
  • 225
  • I wonder if has('num64') is the same? – Martin Tournoij May 01 '17 at 15:18
  • 1
    You could also use uname -p and not have to bother with grep or 'sedat all. That would make the testif system('uname -p') == "x86_64\n". Note that the output ofsystem()` generally includes a terminating newline. – garyjohn May 01 '17 at 19:08
  • @garyjohn You're right: I used the grep version to avoid using the new line character in the condition but using one command instead of two is indeed better :) – statox May 02 '17 at 07:47
  • @Carpetsmoker I don't know. The doc says 64-bit Number support but I guess you can compile Vim with this flag on a 32 bit system? I'll try to make some test when I have more time. – statox May 02 '17 at 07:49