Как я могу сделать псевдонимы оболочки доступными при окружении из Vim?

У меня была та же проблема, и я решил изменение файла правил udev как это:

SUBSYSTEM=="input", GROUP="input", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="4242", ATTRS{idProduct}=="e131", MODE:="666", GROUP="users"

И теперь я могу считать регистратор RFID при помощи libusb функции.

11
04.02.2014, 15:21
4 ответа

Старый вопрос, но самым чистым решением для vim в zsh было добавление псевдонима к ~ / .zshenv , файлу, который zsh загружает для всех оболочек, для входа в систему, интерактивных или иных. Это позволяет избежать запуска vim или zsh с флагами и любых возможных проблем с этим.

Здесь есть хорошее объяснение ~ / .zshenv vs ~ / .zshrc : http://tanguy.ortolo.eu/blog/article25/shrc

Обычно zsh всегда является источником ~ / .zshenv . Источник интерактивных оболочек ~ / .zshrc и источник оболочек входа ~ / .zprofile и ~ / .zlogin . Таким образом, интерактивная оболочка входа в систему с исходными кодами ~ / .zshenv ~ / .zprofile ~ / .zlogin ~ / .zlogin и неинтерактивная оболочка без входа в систему, такая как та, которую vim использует для запуска команд только исходных кодов ~ /.zshenv .

13
27.01.2020, 19:57

Похож это работает на zsh:

  • Гарантируйте это $ZDOTDIR= каталог, где .zshrc расположен. Например, export ZDOTDIR=$HOME
  • В .vimrc, set shell=zsh\ -i или set shellcmdflag+=i для того же эффекта.

-i то, потому что при запуске в интерактивном режиме, zshell загрузки $ZDOTDIR/.zshrc. Посмотрите man zsh и поиск $ZDOTDIR для деталей.

5
27.01.2020, 19:57

Я верю, когда Вы находитесь в vim и Вы используете :!some_command это использует любую оболочку, определяется переменной среды $SHELL.

Это настраивается, таким образом, Вы могли измениться путем переопределения $SHELL поведение в Вашем $HOME/.vimrc файл для использования zsh вместо этого.

:set shell
shell=/bin/bash
:set shell=zsh\ -i

Или в Вашем .vimrc использование 1 из этих 2 строк

 set shell=/bin/bash\ -i
 set shell=/bin/zsh\ -i

Справка Vim

Посмотрите :help shell из vim для большего количества информации.

:!{cmd}                 Execute {cmd} with the shell.  See also the 'shell'
                        and 'shelltype' option.
                        Any '!' in {cmd} is replaced with the previous
                        external command (see also 'cpoptions').  But not when
                        there is a backslash before the '!', then that
                        backslash is removed.  Example: ":!ls" followed by
                        ":!echo ! \! \\!" executes "echo ls ! \!".
                        After the command has been executed, the timestamp of
                        the current file is checked timestamp.
0
27.01.2020, 19:57
  • 1
    Нет, как я сказал: "Если я делаю:! повторите 0$ для наблюдения то, что окружает Vim, использует, это производит '/bin/zsh'" –  Nathan Long 04.02.2014, 15:34
  • 2
    @NathanLong - нет я думаю, что это вводит в заблуждение Вас, посмотрите мои обновления. энергия –  slm♦ 04.02.2014, 15:36
  • 3
    @slm вытягивает значение от $SHELL. Таким образом, Ваша оболочка /bin/bash. Если моя оболочка /bin/zsh, это - то, что это будет использовать. –  Patrick 04.02.2014, 15:40

Установив shell = / usr / bin / zsh \ -l в .vimrc решил мою проблему

Примечание:

Я использую: linux mint 17.1

0
27.01.2020, 19:57

Теги

Похожие вопросы