Это странный код возврата, даже у меня есть псевдоним vi
по vim
.Vi с псевдонимом vim, но выход с кодом 1
Я очень признателен, если кто-нибудь может объяснить мне, почему.
Ознакомьтесь с нижеприведенными командами и результатами.
which vi
возвращает/usr/bin/vi
which vim
возвращает/usr/bin/vim
ls -al /usr/bin/vi /usr/bin/vim
возвращаетlrwxr-xr-x 1 root wheel 3 Dec 15 03:34 /usr/bin/vi -> vim -rwxr-xr-x 1 root wheel 1745984 Dec 10 18:03 /usr/bin/vim
cat ~/.vimrc
возвращаетset nocompatible silent! unmap <C-E>
vim
затем:q
, чтобы немедленно уйти. Затем возвращает0
vi
затем:q
совершенно сразу. Но проблема заключается в том здесь,echo $?
возвращается1
- И если вторая линия в
.vimrc
, т.е.silent! unmap <C-E>
, удаляется,vi
,:q
,echo $?
возвращает0
vi
затем:version
печатаетVIM - Vi IMproved 7.4 (2013 Aug 10, compiled Oct 5 2016 16:04:34) Included patches: 1-898 Compiled by [email protected] Normal version without GUI. Features included (+) or not (-): +acl +cindent -conceal +digraphs -farsi -gettext +libcall +mksession -mouse_netterm -mzscheme -profile +scrollbind +syntax +textobjects +visualextra -X11 -arabic -clientserver +cryptv -dnd +file_in_path -hangul_input +linebreak +modify_fname -mouse_sgr +netbeans_intg +python/dyn +signs +tag_binary +title +viminfo -xfontset +autocmd -clipboard +cscope -ebcdic +find_in_path +iconv +lispindent +mouse -mouse_sysmouse +path_extra -python3 +smartindent +tag_old_static -toolbar +vreplace -xim -balloon_eval +cmdline_compl +cursorbind -emacs_tags +float +insert_expand +listcmds -mouseshape -mouse_urxvt -perl +quickfix -sniff -tag_any_white +user_commands +wildignore -xsmp -browse +cmdline_hist +cursorshape +eval +folding +jumplist +localmap -mouse_dec +mouse_xterm +persistent_undo +reltime +startuptime -tcl +vertsplit +wildmenu -xterm_clipboard +builtin_terms +cmdline_info +dialog_con +ex_extra -footer -keymap -lua -mouse_gpm +multi_byte +postscript -rightleft +statusline +terminfo +virtualedit +windows -xterm_save +byte_offset +comments +diff +extra_search +fork() -langmap +menu -mouse_jsbterm +multi_lang +printer +ruby/dyn -sun_workshop +termresponse +visual +writebackup -xpm system vimrc file: "$VIM/vimrc" user vimrc file: "$HOME/.vimrc" 2nd user vimrc file: "~/.vim/vimrc" user exrc file: "$HOME/.exrc" fall-back for $VIM: "/usr/share/vim" Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 Linking: gcc -L/usr/local/lib -o vim -lm -lncurses -liconv
Я пробовал
iTerm
,Terminal
, chan ged shell доbash
,zsh
,fish
. Удалить первую строчку,set nocompatible
, в.vimrc
. Но все они вернули этот результат.
Если вам требуется дополнительная конфигурация на моем ПК, просьба дать комментарий, я предоставлю его.
Заранее благодарен.
Update
Потому что я открыл новую оболочку на основе текущей оболочки, с помощью команды, как zsh
, bash
. Он проигнорировал мой .zshrc
/.bash_profile
.
Таким образом, $PATH
не включает /usr/local/bin
. Затем вместо использования доморощенного .0 версии. which vim
указал на версию MacOS /usr/bin/vim
по умолчанию.
После попытки открыть открытую новую оболочку на command-T
и убедитесь, что which vim
возвращает /usr/local/bin/vim
, то есть версию доморощенного. vi
, :q
, echo $?
Эхо ожидается ожидаемый результат 0
.
Это решило мою проблему с кодом выхода 1 после выхода из vi
, это повлияло на команду git commit
..etc. Но я до сих пор не понимаю, почему по умолчанию MacOS версия vi
делает неожиданное поведение
Скопируйте пасту с кодом ошибки – Inian
ошибок. Оболочка была чистой после выхода «vi». Я вручную проверю код выхода последней команды на 'echo $?' И получил результат – transang
См. Http://unix.stackexchange.com/questions/14497/why-would-vim-return-non-zero-exit-code-if -i-exit-немедленно-после открытия – chepner