Если вы хотите сделать некоторые вызовы Python без компиляции vim с интерпретатором Python (это позволит вам писать плагины на Python, а в любом случае это также необходимо для Omnicomplete), вы можете попробовать это так:
:.!python -c "import os; print os.getcwd()"
Это скажет вам, где вы находитесь на диске (текущий путь).
Теперь давайте нумеруем несколько строк, начиная с пустого файла, чтобы мы могли легко увидеть результат:
:.!python -c "for i in range(1,101): print i"
(строки чисел vim от 1 до 0)
Теперь у нас есть только номер каждой строки в каждой строке до строки 100.
Теперь давайте поместим небольшой скрипт в ваш текущий путь (как показано выше) и запустим его, посмотрим, как он работает. Давайте скопировать вставить этот глупый. В действительности вы найдете наиболее полезным сделать скрипт, который выводит по одной строке на строку, но вам не нужно это делать, как показывает этот скрипт:
print "hi"
try:
while True:
i=raw_input()
print "this was:",i
except EOFError:
print "bye"
Так, например, вы можете позвонить (представьте, что вы назвали это "what.py"):
: 10,20! Python what.py
(обратите внимание, что заполнение имен файлов с помощью табуляции работает, поэтому вы можете убедиться, что оно действительно находится в пути)
Как видите, каждая строка подается в сценарий в качестве стандартного ввода. Сначала он выводит «привет», в конце «пока» и между ними для каждой строки, которую вы выводите «это было:» плюс строка. Таким образом, вы можете обрабатывать построчно. Обратите внимание, что вы можете делать более сложные вещи, чем обрабатывать построчно, вы можете рассмотреть предыдущие строки. Для таких вещей я бы предпочел импортировать sys и сделать это так:
import sys
print "hello"
for i in sys.stdin.readlines():
i = i.rstrip("\n") # you can also prevent print from doing \n instead
print "here lyeth",i
print "see you"
Надеюсь, это поможет.