Как запустить оболочку Vim из пути скрипта? - PullRequest
2 голосов
/ 30 августа 2011

Результаты поиска вернули тоны вопросов и ответов, и я не знаю, как перефразировать это лучше, поэтому извините, если это дубликат:

Я запускаю скрипт на Python с Vim. Сценарий находится на ~/path/to/my/script.py, и по этому же пути находится файл таблицы стилей.

Содержимое кода открывает файл:

f = open('./stylesheet.css', 'r')
s = f.read()
f.close()

И если я запускаю свой код из Vim примерно так :!python %, он вернет: IOError: [Errno 2] No such file or directory: 'stylesheet.css'

Так что, кажется, Vim запускает мой код не из его местоположения, а из / home или root?

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

Ответы [ 3 ]

5 голосов
/ 30 августа 2011

Вы можете использовать это :lcd %:p:h | !python %.

Краткое объяснение. lcd изменяет каталог на текущий редактируемый файл - http://vim.wikia.com/wiki/Set_working_directory_to_the_current_file

Затем выполняет команду python для файла.

Единственная проблема этой команды в том, что ваш текущий каталог теперь будет (из вашего примера) ~/path/to/my/. Вам нужно будет сделать еще один :lcd, чтобы вернуться в ваш текущий каталог. Я не смог найти способ объединить все это в одну команду в vim. Может быть, кто-то еще может.

Правка - Как вернуться обратно

( убрал мой сложный метод )

для простого решения см. Комментарии ib ниже.

1 голос
/ 30 августа 2011

Чтобы открыть файл в том же каталоге, что и ваш скрипт, попробуйте что-то вроде:

import os

script_dir = os.path.dirname(__file__)
target_file = os.path.join(script_dir, 'stylesheet.css')

with open(target_file, 'r') as f:
  s = f.read()
0 голосов
/ 30 августа 2011

Ярлык в vim для текущего файла -%, поэтому вместо :!python $ введите :!python %

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...