VIM, когда я окружаю для запроса использования:! удар я хотел бы, чтобы командная строка отразила меня находиться в оболочке

Я нахожусь в энергии весь день в последнее время, практикуя код. Часто времена, когда я захочу сделать что-то от подсказки - я буду использовать привязку клавиш для:! колотите и сделайте то, что когда-либо я должен сделать, затем введите выход для возврата к сценарию энергии, я продолжаю работать.

иногда я забываю, что нахожусь в оболочке и потребности ввести по абсолютному адресу вокруг для нахождения моего сценария. Есть ли способ настроить его так, чтобы моя подсказка сказала "$ энергии": или что-то подобное?

Я предполагаю, что мог попытаться создать a .bashrc_for_vim и выполненный source .bashrc_for_vim или что-то как этот, но это кажется довольно неуклюжим.

Кто-либо здесь выяснил изящный способ сделать это?

0
задан 31 January 2019 в 19:03

2 ответа

Я использую $SHLVL переменная среды, описанная в man bash как

SHLVL  Incremented by one each time an instance of bash is started.

В моем ~/.bashrc:

# set a variable to reflect SHLVL > 1
if [[ $SHLVL -gt 1 ]] ; then
    export SUBSHELL="${SUBSHELL:+$SUBSHELL}+"
else
    export SUBSHELL=""

fi

Я использую это позже в установке моего PS1 для добавления "+" для каждого уравнивают.

if [[ "$color_prompt" = yes ]]; then
#             chroot?                       Depth      green       user@host nocolor  :   green      $PWD  ref      (status) off   $ or # space             
    PS1='${debian_chroot:+($debian_chroot)}${SUBSHELL}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[1;31m\]($?)\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}${SUBSHELL}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt 

Используемый, это похоже:

walt@bat:~(0)$ uptime
 22:57:48 up 2 days,  9:51,  2 users,  load average: 2.23, 0.75, 0.41
             # start a subshell, see the first "+" appear
walt@bat:~(0)$ bash
             # start a 2nd subshell, see the second "+" appear
+walt@bat:~(0)$ bash
             # Start vim, then do :!bash
++walt@bat:~(0)$ vim foo

             # here, underneath vim, look at the process tree leading to here
+++walt@bat:~(0)$ ps -fp$$
UID        PID  PPID  C STIME TTY          TIME CMD
walt      6803  6802  0 23:10 pts/21   00:00:00 bash
+++walt@bat:~(0)$ ps -fp$$,6802
UID        PID  PPID  C STIME TTY          TIME CMD
walt      6802  6732  0 23:10 pts/21   00:00:00 vim foo
walt      6803  6802  0 23:10 pts/21   00:00:00 bash
+++walt@bat:~(0)$ ps -fp$$,6802,6732
UID        PID  PPID  C STIME TTY          TIME CMD
walt      6732  6662  0 23:10 pts/21   00:00:00 bash
walt      6802  6732  0 23:10 pts/21   00:00:00 vim foo
walt      6803  6802  0 23:10 pts/21   00:00:00 bash
+++walt@bat:~(0)$ ps -fp$$,6802,6732,6662
UID        PID  PPID  C STIME TTY          TIME CMD
walt      6662  5932  0 23:10 pts/21   00:00:00 bash
walt      6732  6662  0 23:10 pts/21   00:00:00 bash
walt      6802  6732  0 23:10 pts/21   00:00:00 vim foo
walt      6803  6802  0 23:10 pts/21   00:00:00 bash
+++walt@bat:~(0)$ ps -fp$$,6802,6732,6662,5932
UID        PID  PPID  C STIME TTY          TIME CMD
walt      5932  5795  0 Jan29 pts/21   00:00:00 bash
walt      6662  5932  0 23:10 pts/21   00:00:00 bash
walt      6732  6662  0 23:10 pts/21   00:00:00 bash
walt      6802  6732  0 23:10 pts/21   00:00:00 vim foo
walt      6803  6802  0 23:10 pts/21   00:00:00 bash
+++walt@bat:~(0)$ ps -fp$$,6802,6732,6662,5932,5795
UID        PID  PPID  C STIME TTY          TIME CMD
walt      5795  5070  0 Jan29 ?        00:00:37 /usr/lib/gnome-terminal/gnome-terminal-server
walt      5932  5795  0 Jan29 pts/21   00:00:00 bash
walt      6662  5932  0 23:10 pts/21   00:00:00 bash
walt      6732  6662  0 23:10 pts/21   00:00:00 bash
walt      6802  6732  0 23:10 pts/21   00:00:00 vim foo
walt      6803  6802  0 23:10 pts/21   00:00:00 bash
                # now unwind, returning to vim
+++walt@bat:~(0)$ exit

                # back in vim, :q!
Press ENTER or type command to continue
                # unwind
++walt@bat:~(0)$ exit
                # unwind
+walt@bat:~(0)$ exit
               # back at the top level
walt@bat:~(0)$ : and I'm out
1
ответ дан 26 October 2019 в 10:09

Vim устанавливает VIMRUNTIMEVIM) переменные среды в оболочке от :sh или :!bash, таким образом, можно обнаружить его тот путь в Вашем .bashrc:

if [ "$VIMRUNTIME" ]
then
    PS1="vim: $PS1"
fi

Вышеупомянутое снабдит префиксом Вашу существующую подсказку "энергию":. Вы могли изменить его на что-то еще, как просто vim $:, если Вы хотели. Помещенный, что в конце файла так, чтобы Ваша нормальная подсказка была настроена к тому времени, таким образом, можно или использовать его или заменить его.

Вы не можете сделать того же для Ctrl-Z, потому что это действительно возвращает Вас Вашей исходной оболочке - это не новая сессия, это - то, которое Вы запустили vim от во-первых, таким образом, это имеет ту же среду и настройки, поскольку Вы запустили с.

2
ответ дан 26 October 2019 в 10:09

Другие вопросы по тегам:

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