install

[!NOTE|label:verify]

$ vim +"py3 print('hello') +qa"

[!TIP|label:official CI pipelines]

OSX

[!TIP]

$ brew install pcre2 gettext libtool

tips:

$ ./configure --help
`configure' configures this package to adapt to many kinds of systems.

Usage: auto/configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
      --help=recursive    display the short help of all the included packages
  -V, --version           display version information and exit
  -q, --quiet, --silent   do not print `checking ...' messages
      --cache-file=FILE   cache test results in FILE [disabled]
  -C, --config-cache      alias for `--cache-file=config.cache'
  -n, --no-create         do not create output files
      --srcdir=DIR        find the sources in DIR [configure dir or `..']

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc.  You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --includedir=DIR        C header files [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR           info documentation [DATAROOTDIR/info]
  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR            man documentation [DATAROOTDIR/man]
  --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
  --htmldir=DIR           html documentation [DOCDIR]
  --dvidir=DIR            dvi documentation [DOCDIR]
  --pdfdir=DIR            pdf documentation [DOCDIR]
  --psdir=DIR             ps documentation [DOCDIR]

X features:
  --x-includes=DIR    X include files are in DIR
  --x-libraries=DIR   X library files are in DIR

Optional Features:
  --disable-option-checking  ignore unrecognized --enable/--with options
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --enable-fail-if-missing    Fail if dependencies on additional features
     specified on the command line are missing.
  --disable-darwin        Disable Darwin (Mac OS X) support.
  --disable-smack   Do not check for Smack support.
  --disable-selinux   Do not check for SELinux support.
  --disable-xsmp          Disable XSMP session management
  --disable-xsmp-interact Disable XSMP interaction
  --enable-luainterp=OPTS      Include Lua interpreter.  default=no OPTS=no/yes/dynamic
  --enable-mzschemeinterp      Include MzScheme interpreter.
  --enable-perlinterp=OPTS     Include Perl interpreter.  default=no OPTS=no/yes/dynamic
  --enable-pythoninterp=OPTS   Include Python interpreter. default=no OPTS=no/yes/dynamic
  --enable-python3interp=OPTS  Include Python3 interpreter. default=no OPTS=no/yes/dynamic
  --enable-tclinterp=OPTS      Include Tcl interpreter. default=no OPTS=no/yes/dynamic
  --enable-rubyinterp=OPTS     Include Ruby interpreter.  default=no OPTS=no/yes/dynamic
  --enable-cscope         Include cscope interface.
  --disable-netbeans      Disable NetBeans integration support.
  --disable-channel       Disable process communication support.
  --enable-terminal       Enable terminal emulation support.
  --enable-autoservername Automatically define servername at vim startup.
  --enable-multibyte      Include multibyte editing support.
  --disable-rightleft     Do not include Right-to-Left language support.
  --disable-arabic        Do not include Arabic language support.
  --disable-farsi         Deprecated.
  --enable-xim            Include XIM input support.
  --enable-fontset        Include X fontset output support.
  --enable-gui=OPTS       X11 GUI. default=auto OPTS=auto/no/gtk2/gnome2/gtk3/motif/haiku/photon/carbon
  --enable-gtk2-check     If auto-select GUI, check for GTK+ 2 default=yes
  --enable-gnome-check    If GTK GUI, check for GNOME default=no
  --enable-gtk3-check     If auto-select GUI, check for GTK+ 3 default=yes
  --enable-motif-check    If auto-select GUI, check for Motif default=yes
  --disable-gtktest       Do not try to compile and run a test GTK program
  --disable-icon-cache-update        update disabled
  --disable-desktop-database-update  update disabled
  --disable-largefile     omit support for large files
  --disable-canberra      Do not use libcanberra.
  --disable-libsodium      Do not use libsodium.
  --disable-acl           No check for ACL support.
  --enable-gpm=OPTS       Use gpm (Linux mouse daemon). default=yes OPTS=yes/no/dynamic
  --disable-sysmouse      Don't use sysmouse (mouse in *BSD console).
  --disable-nls           Don't support NLS (gettext()).

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --with-mac-arch=ARCH    current, intel, ppc or both
  --with-developer-dir=PATH    use PATH as location for Xcode developer tools
  --with-local-dir=PATH   search PATH instead of /usr/local for local libraries.
  --without-local-dir     do not search /usr/local for local libraries.
  --with-vim-name=NAME    what to call the Vim executable
  --with-ex-name=NAME     what to call the Ex executable
  --with-view-name=NAME   what to call the View executable
  --with-global-runtime=DIR    global runtime directory in 'runtimepath', comma-separated for multiple directories
  --with-modified-by=NAME       name of who modified a release version
  --with-features=TYPE    tiny, normal or huge (default: huge)
  --with-compiledby=NAME  name to show in :version message
  --with-lua-prefix=PFX   Prefix where Lua is installed.
  --with-luajit           Link with LuaJIT instead of Lua.
  --with-plthome=PLTHOME   Use PLTHOME.
  --with-python-command=NAME  name of the Python 2 command (default: python2 or python)
  --with-python-config-dir=PATH  Python's config directory (deprecated)
  --with-python3-command=NAME  name of the Python 3 command (default: python3 or python)
  --with-python3-config-dir=PATH  Python's config directory (deprecated)
  --with-tclsh=PATH       which tclsh to use (default: tclsh8.0)
  --with-ruby-command=RUBY  name of the Ruby command (default: ruby)
  --with-x                use the X Window System
  --with-gnome-includes=DIR Specify location of GNOME headers
  --with-gnome-libs=DIR   Specify location of GNOME libs
  --with-gnome            Specify prefix for GNOME files
  --with-motif-lib=STRING Library for Motif
  --with-tlib=library     terminal library to be used

Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  LIBS        libraries to pass to the linker, e.g. -l<library>
  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
              you have headers in a nonstandard directory <include dir>
  CPP         C preprocessor
  XMKMF       Path to xmkmf, Makefile generator for X Window System

Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.

Report bugs to the package provider.
# optional
$ NPROC=$(getconf _NPROCESSORS_ONLN)

$ make distclean && make clean
$ ./configure --with-features=huge \
              --enable-cscope \
              --enable-largefile \
              --enable-rubyinterp=dynamic \
              --with-python3-config-dir=$(python3-config --configdir) \
              --enable-python3interp=dynamic \
              --with-lua-prefix=$(brew --prefix) \
              --enable-luainterp=dynamic \
              --enable-libsodium \
              --enable-multibyte \
              --with-tlib=ncurses \
              --enable-terminal \
              --enable-autoservername \
              --enable-nls \
              --with-mac-arch=current \
              --enable-darwin \
              --with-compiledby="marslo <marslo.jiao@gmail.com>" \
              --prefix=/usr/local/vim \
              --exec-prefix=/usr/local/vim \
              --enable-fail-if-missing

## ... build ...
$ make
# or
$ make -j${NPROC}
# or
$ make -j$(nproc)

## ... install ...
$ sudo make install
# or uninstall if necessary
$ sudo make uninstall && sudo make install

# if /usr/local/vim/bin/vim is not updated, manaual copy src/vim to /usr/local/vim/bin/vim
$ [[ 1 -ne $(md5sum src/vim /usr/local/vim/bin/vim | awk '{print $1}' | uniq | wc -l) ]] && sudo command cp -fv src/vim /usr/local/vim/bin/vim

## ... validate ...
$ src/vim --version
$ make indenttest
$ make -C runtime/doc vimtags VIMEXE=../../src/vim

## ... check object files ...
$ otool -L "src/vim" |  grep '\.dylib\s' | grep -v '^\s*/usr/lib/'
$ lipo -archs "src/vim" | grep '^x86_64$'

## ... check language support ...
macvim_excmd() {
  ./src/vim -u NONE -i NONE -f -X -V1 -es "$@" -c 'echo ""' -c 'qall!' 2>&1
}
macvim_excmd -c 'lua print("Test")'
macvim_excmd -c 'perl VIM::Msg("Test")'
macvim_excmd -c 'py3 import sys; print("Test")'
macvim_excmd -c 'ruby puts("Test")'
macvim_excmd -c 'lang es_ES' -c 'version' | grep Enlazado
$ vim --version
VIM - Vi IMproved 9.1 (2024 Jan 02, compiled Jan  8 2024 16:50:47)
macOS version - x86_64
Included patches: 1-16
Compiled by marslo <marslo.jiao@gmail.com>
Huge version without GUI.  Features included (+) or not (-):
+acl               +file_in_path      +mouse_urxvt       -tag_any_white
+arabic            +find_in_path      +mouse_xterm       -tcl
+autocmd           +float             +multi_byte        +termguicolors
+autochdir         +folding           +multi_lang        +terminal
+autoservername    -footer            -mzscheme          +terminfo
-balloon_eval      +fork()            +netbeans_intg     +termresponse
+balloon_eval_term +gettext           +num64             +textobjects
-browse            -hangul_input      +packages          +textprop
++builtin_terms    +iconv             +path_extra        +timers
+byte_offset       +insert_expand     -perl              +title
+channel           +ipv6              +persistent_undo   -toolbar
+cindent           +job               +popupwin          +user_commands
-clientserver      +jumplist          +postscript        +vartabs
+clipboard         +keymap            +printer           +vertsplit
+cmdline_compl     +lambda            +profile           +vim9script
+cmdline_hist      +langmap           -python            +viminfo
+cmdline_info      +libcall           +python3/dyn       +virtualedit
+comments          +linebreak         +quickfix          +visual
+conceal           +lispindent        +reltime           +visualextra
+cryptv            +listcmds          +rightleft         +vreplace
+cscope            +localmap          +ruby/dyn          +wildignore
+cursorbind        +lua/dyn           +scrollbind        +wildmenu
+cursorshape       +menu              +signs             +windows
+dialog_con        +mksession         +smartindent       +writebackup
+diff              +modify_fname      +sodium            -X11
+digraphs          +mouse             +sound             -xattr
-dnd               -mouseshape        +spell             -xfontset
-ebcdic            +mouse_dec         +startuptime       -xim
+emacs_tags        -mouse_gpm         +statusline        -xpm
+eval              -mouse_jsbterm     -sun_workshop      -xsmp
+ex_extra          +mouse_netterm     +syntax            -xterm_clipboard
+extra_search      +mouse_sgr         +tag_binary        -xterm_save
-farsi             -mouse_sysmouse    -tag_old_static
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
       defaults file: "$VIMRUNTIME/defaults.vim"
  fall-back for $VIM: "/usr/local/vim/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -I/usr/local/include -I/usr/local/Cellar/openjdk/21.0.1/libexec/openjdk.jdk/Contents/Home/include -I/usr/local/opt/openldap/include -I/usr/local/opt/curl/include -I/usr/local/opt/binutils/include -I/usr/local/opt/sqlite/include -I/usr/local/opt/readline/include -I/usr/local/opt/openssl/include -I/usr/local/opt/node@21/include -I/usr/local/opt/tcl-tk/include -I/usr/local/Cellar/icu4c@71.1/71.1/include -I/usr/local/opt/llvm/include -I/usr/local/opt/libiconv/include -I/usr/local/opt/ncurses/include -DMACOS_X -DMACOS_X_DARWIN -I/usr/local/include -I/usr/local/opt/tcl-tk/include -I/usr/local/Cellar/libsodium/1.0.19/include -D_REENTRANT -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Linking: gcc -L/usr/local/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/openldap/lib -L/usr/local/opt/curl/lib -L/usr/local/opt/binutils/lib -L/usr/local/opt/python@3.12/lib -L/usr/local/opt/tcl-tk/lib -L/usr/local/opt/sqlite/lib -L/usr/local/opt/openssl/lib -L/usr/local/opt/node@21/lib -L/usr/local/Cellar/icu4c@71.1/71.1/lib -L/usr/local/opt/ncurses/lib -L/usr/local/opt/libiconv/lib -L/usr/local/opt/llvm/lib -L/usr/local/opt/llvm/lib/c++ -Wl,-rpath,/usr/local/opt/llvm/lib/c++ -o vim -lm -lncurses -L/usr/local/Cellar/libsodium/1.0.19/lib -lsodium -liconv -lintl -framework AppKit
  • additonal options

    • --enable-fontset # no GUI selected; xim has been disabled

    • --enable-xim # no GUI selected; xim has been disabled

    • --enable-perlinterp

    • --enable-tclinterp

    • --enable-rubyinterp

    • --with-python3-command=python # using :python instead of :py

    • --enable-mzschemeinterp

    • --with-mac-arch

    • --with-developer-dir

    • --with-global-runtime

    • --with-modified-by

    • --enable-terminal : yes

    • --enable-browse : only for {Win32, Athena, Motif, GTK and Mac GUI}

  • default options

    • --with-local-dir : /usr/local

    • --with-vim-name : vim

    • --with-ex-name : ex

  • dislabed

    • --disable-smack

    • --disable-selinux

    • --disable-netbeans : no

    • --disable-channel : no

    • --disable-rightleft : no

    • --disable-arabic : no

  • none supported

    • --with-client-server

    • --enable-browse

  • options for GUI

    [!TIP] references:

    • --with-x

    • --disable-darwin --enable-gui=athena

    • --disable-darwin --with-x --enable-gui=motif

    • --disable-darwin --enable-gui=carbon

    • --enable-gui --enable-darwin --with-mac-arch --enable-xim

    [!TIP] references:

    export CFLAGS="-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/Developer/Headers/FlatCarbon/"

    in xCode 11.3: - `/Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/CarbonCore.r` - `/Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Headers/Carbon.h` - `/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Headers/Carbon.h`

--HEAD from brew

[!NOTE|label:references:]

## ... dependencies ...
$ xcodebuild -runFirstLaunch

$ brew install macvim --HEAD --debug -v

## ... build ...
$ ./configure --with-features=huge \
              --enable-multibyte \
              --enable-perlinterp \
              --enable-rubyinterp \
              --enable-tclinterp \
              --enable-terminal \
              --with-tlib=ncurses \
              --with-compiledby=Homebrew \
              --with-local-dir=/usr/local \
              --enable-cscope \
              --enable-luainterp \
              --with-lua-prefix=/usr/local/opt/lua \
              --enable-luainterp \
              --enable-python3interp \
              --disable-sparkle \
              --with-macarchs=x86_64
$ make

$ cd /tmp/macvim-20241016-10795-v4fko9/src/MacVim
$ builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -strip-unsigned-binaries -strip-deterministic -strip-tool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip -resolve-src-symlinks -remove-static-executable /tmp/macvim-20241016-10795-v4fko9/src/MacVim/macvim-askpass /tmp/macvim-20241016-10795-v4fko9/src/MacVim/build/Release/MacVim.app/Contents/Resources

# codesigning
$ /usr/bin/codesign --force --sign - --entitlements /tmp/macvim-20241016-10795-v4fko9/src/MacVim/build/MacVim.build/Release/MacVim.build/MacVim.app.xcent --timestamp\=none --generate-entitlement-der /tmp/macvim-20241016-10795-v4fko9/src/MacVim/build/Release/MacVim.app
$ builtin-RegisterExecutionPolicyException /tmp/macvim-20241016-10795-v4fko9/src/MacVim/build/Release/MacVim.app
# validate
$ cd /tmp/macvim-20241016-10795-v4fko9/src/MacVim
$ builtin-validationUtility /tmp/macvim-20241016-10795-v4fko9/src/MacVim/build/Release/MacVim.app -no-validate-extension -infoplist-subpath Contents/Info.plist

# RegisterWithLaunchServices
$ cd /tmp/macvim-20241016-10795-v4fko9/src/MacVim
$ /System/Library/Frameworks/CoreServices.framework/Versions/Current/Frameworks/LaunchServices.framework/Versions/Current/Support/lsregister -f -R -trusted /tmp/macvim-20241016-10795-v4fko9/src/MacVim/build/Release/MacVim.app

## ... additional steps ...
# changing dylib ID
$ /usr/bin/env codesign --verify /usr/local/Cellar/macvim/HEAD-a24ac02/MacVim.app/Contents/Frameworks/PSMTabBarControl.framework/Versions/A/PSMTabBarControl

# codesigning
$ /usr/bin/env codesign --display --file-list - /usr/local/Cellar/macvim/HEAD-a24ac02/MacVim.app/Contents/Frameworks/PSMTabBarControl.framework/Versions/A/PSMTabBarControl
  • copy MacVim.app to /Applications

    $ cp -r /usr/local/Cellar/macvim/HEAD-a24ac02/MacVim.app /Applications/

Linux

[!NOTE|label:references:]

vim

install python3.11 and vim9

  • python3.11

    [!TIP|label:references:]

    # ubuntu
    #                        to provide python3-config
    #                                    v
    $ sudo apt install python3.11 python3.11-dev
    $ NPROC=$(getconf _NPROCESSORS_ONLN)
    $ curl -O https://www.python.org/ftp/python/3.11.6/Python-3.11.6.tgz |
      tar xzf - -C /opt/python &&
      cd /opt/python
    
    $ sudo ./configure --enable-optimizations --enable-shared --prefix=/opt/python/python3.11
    # or
    $ ./configure --enable-optimizations --enable-shared --with-lto --with-system-expat --with-ensurepip
    $ sudo make -j ${NPROC}
    $ sudo make altinstall
    $ export LD_LIBRARY_PATH=/opt/python/Python-3.11.6:$LD_LIBRARY_PATH
    
    # optional
    $ echo 'PATH=$PATH:/usr/local/bin'
  • lua 5.4.6 ( with shared libs )

    [!TIP]

    $ mkdir /opt/lua
    $ curl -fsSL https://www.lua.org/ftp/lua-5.4.6.tar.gz | tar xzf - -C /opt/lua
    $ cd /opt/lua/lua-5.4.6
    
    $ patch --ignore-whitespace < <(curl -fsSL https://gist.githubusercontent.com/marslo/767e339e32e0dbc038a3e00e3c8a7cba/raw/01f29ac774a468221082f4d504b013d264435567/Makefile.patch)
    $ cd src
    $ patch --ignore-whitespace < <(curl -fsSL https://gist.githubusercontent.com/marslo/767e339e32e0dbc038a3e00e3c8a7cba/raw/01f29ac774a468221082f4d504b013d264435567/src.Makefile.patch)
    
    # build
    $ make all test
    # install
    $ sudo make install
  • ruby ( via rbenv )

    [!TIP]

    $ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
    
    $ ~/.rbenv/bin/rbenv init
    $ echo 'export PATH="$PATH:$HOME/.rbenv/bin"' >> ~/.bashrc
    $ echo 'eval "$(/home/marslo/.rbenv/bin/rbenv init - bash)"' >> ~/.bashrc
    
    $ rbenv install 3.3.0
    $ rbenv global 3.3.0
  • vim9

    $ git clone https://github.com/vim/vim && cd vim
    $ ./configure --with-features=huge \
                  --enable-cscope \
                  --enable-rubyinterp=dynamic \
                  --enable-python3interp=dynamic \
                  --with-python3-config-dir=$(python3.12-config --configdir) \
                  --enable-luainterp=dynamic \
                  --with-lua-prefix=/usr/local \
                  --enable-libsodium \
                  --enable-multibyte \
                  --with-tlib=ncurses \
                  --enable-terminal \
                  --enable-autoservername \
                  --enable-nls \
                  --with-compiledby="marslo <marslo.jiao@gmail.com>" \
                  --prefix=/usr/local/vim \
                  --exec-prefix=/usr/local/vim \
                  --enable-fail-if-missing
    
    $ make -j${NPROC}
    # or
    $ make -j$(nproc)
    $ sudo make install
    
    $ sudo alternatives --install /usr/local/bin/vim      vim      /usr/local/vim/bin/vim      99
    $ sudo alternatives --install /usr/local/bin/vimdiff  vimdiff  /usr/local/vim/bin/vimdiff  99
    $ sudo alternatives --install /usr/local/bin/vimtutor vimtutor /usr/local/vim/bin/vimtutor 99
    $ sudo alternatives --auto vim
    $ sudo alternatives --auto vimdiff
    $ sudo alternatives --auto vimtutor
    $ ./configure --with-features=huge \
                  --enable-python3interp \
                  --with-python3-config-dir=$(python3.11-config --configdir) \
                  --enable-libsodium \
                  --enable-multibyte \
                  --with-tlib=ncurses \
                  --enable-terminal \
                  --enable-autoservername \
                  --enable-nls \
                  --with-compiledby="marslo <marslo.jiao@gmail.com>" \
                  --prefix=/usr/local/vim \
                  --exec-prefix=/usr/local/vim \
                  --enable-fail-if-missing
    $ /usr/local/bin/vim --version
    VIM - Vi IMproved 9.1 (2024 Jan 02, compiled Jan  4 2024 18:32:13)
    Included patches: 1-11
    Compiled by marslo <marslo.jiao@gmail.com>
    Huge version without GUI.  Features included (+) or not (-):
    +acl               +file_in_path      +mouse_urxvt       -tag_any_white
    +arabic            +find_in_path      +mouse_xterm       -tcl
    +autocmd           +float             +multi_byte        +termguicolors
    +autochdir         +folding           +multi_lang        +terminal
    +autoservername    -footer            -mzscheme          +terminfo
    -balloon_eval      +fork()            +netbeans_intg     +termresponse
    +balloon_eval_term +gettext           +num64             +textobjects
    -browse            -hangul_input      +packages          +textprop
    ++builtin_terms    +iconv             +path_extra        +timers
    +byte_offset       +insert_expand     -perl              +title
    +channel           +ipv6              +persistent_undo   -toolbar
    +cindent           +job               +popupwin          +user_commands
    -clientserver      +jumplist          +postscript        +vartabs
    -clipboard         +keymap            +printer           +vertsplit
    +cmdline_compl     +lambda            +profile           +vim9script
    +cmdline_hist      +langmap           -python            +viminfo
    +cmdline_info      +libcall           +python3/dyn       +virtualedit
    +comments          +linebreak         +quickfix          +visual
    +conceal           +lispindent        +reltime           +visualextra
    +cryptv            +listcmds          +rightleft         +vreplace
    +cscope            +localmap          +ruby/dyn          +wildignore
    +cursorbind        +lua/dyn           +scrollbind        +wildmenu
    +cursorshape       +menu              +signs             +windows
    +dialog_con        +mksession         +smartindent       +writebackup
    +diff              +modify_fname      -sodium            -X11
    +digraphs          +mouse             -sound             +xattr
    -dnd               -mouseshape        +spell             -xfontset
    -ebcdic            +mouse_dec         +startuptime       -xim
    +emacs_tags        -mouse_gpm         +statusline        -xpm
    +eval              -mouse_jsbterm     -sun_workshop      -xsmp
    +ex_extra          +mouse_netterm     +syntax            -xterm_clipboard
    +extra_search      +mouse_sgr         +tag_binary        -xterm_save
    -farsi             -mouse_sysmouse    -tag_old_static
       system vimrc file: "$VIM/vimrc"
         user vimrc file: "$HOME/.vimrc"
     2nd user vimrc file: "~/.vim/vimrc"
          user exrc file: "$HOME/.exrc"
           defaults file: "$VIMRUNTIME/defaults.vim"
      fall-back for $VIM: "/usr/local/vim/share/vim"
    Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -g -O2 -D_REENTRANT -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
    Linking: gcc -Wl,--as-needed -o vim -lm -lelf -lselinux -lncurses -lrt -ldl

shell script

  • vim

    #!/usr/bin/env bash
    
    VIM_SRC=$(dirname $(readlink -f $0))/vimsrc
    
    if [ ! -d "$VIM_SRC" ]; then
      echo "Bad VIM source path. Exit."
      exit 1
    fi
    
    pushd $VIM_SRC
    git clean -dffx *
    git checkout -- *
    make clean distclean
    
    git pull
    ./configure --prefix=$HOME/.marslo/myprograms/vim74 \
                --enable-pythoninterp=yes \
                --with-python-config-dir=/usr/local/lib/python2.7/config \
                --enable-rubyinterp=yes \
                --with-features=huge \
                --disable-smack \
                --enable-fail-if-missing \
                --with-compiledby=marslo@appliance > vim-build.log
    
    make -j3 >> vim-build.log
    make install >> vim-build.log
    
    popd

gvim

#!/bin/bash

VIM_SRC=$(dirname $(readlink -f $0))/vimsrc

if [ ! -d "$VIM_SRC" ]; then
  echo "Bad VIM source path. Exit."
  exit 1
fi

pushd ${VIM_SRC}
git clean -dffx *
git checkout -- *
make clean distclean

git pull
./configure --enable-gui=gnome2 \
            --enable-cscope \
            --enable-multibyte \
            --enable-xim \
            --enable-fontset \
            --with-features=huge \
            --enable-pythoninterp=yes \
            --enable-rubyinterp=yes \
            --enable-python3interp=yes \
            --disable-smack \
            --enable-fail-if-missing \
            --with-compiledby=marslo@china \
            --prefix=/home/marslo/.vim/tools > vim-build.log
make -j3 >> vim-build.log
make install >> vim-build.log

popd

Windows

[!NOTE] by cygwin

setup environment ( via cygwin )

  • mandatory

    • gcc

    • gcc-g++

    • make

    • ncurses

    • bc (Math)

  • optional

    • Flex

    • bison

    • gettext

    • gettext-devel

    • textinfo

  • other

    • wget

    • curl

    • tree

    • rsync

    • scp

    • lynx

using apt-cyg to install cygwin package

$ wget http://rawgit.com/transcode-open/apt-cyg/master/apt-cyg
$ mv apt-cyg{.txt,}
$ install apt-cyg /bin

gvim.exe

> make -B \
       -f Make_cyg.mak \
       PYTHON=/cygdrive/c/Marslo/MyProgramFiles/Python27 \
       DYNAMIC_PYTHON=yes \
       PYTHON_VER=27 \
       PYTHON3=/cygdrive/c/Marslo/MyProgramFiles/Python35 \
       DYNAMIC_PYTHON3=yes \
       PYTHON3_VER=35 \
       FEATURES=huge \
       IME=yes \
       GIME=yes \
       MBYTE=yes \
       CSCOPE=yes \
       USERNAME=Marslo.Jiao \
       USERDOMAIN=China \
       GUI=yes

vim.exe

> make -B \
       -f Make_cyg.mak \
       PYTHON=/cygdrive/c/Marslo/MyProgramFiles/Python27 \
       DYNAMIC_PYTHON=yes \
       PYTHON_VER=27 \
       PYTHON3=/cygdrive/c/Marslo/MyProgramFiles/Python35 \
       DYNAMIC_PYTHON3=yes \
       PYTHON3_VER=35 \
       FEATURES=huge \
       IME=yes \
       GIME=yes \
       MBYTE=yes \
       CSCOPE=yes \
       USERNAME=Marslo.Jiao \
       USERDOMAIN=China \
       GUI=no

Last updated