2016-09-14 4 views
3

Я установил clang-format-3.8 через apt-get. Теперь я пытаюсь использовать его в gVim, но он не работает. Я проверил и clang-format-3.8 существует в папке /usr/share/vim/addons/syntax.clang-format не работает под gVim

Но когда я вхожу :pyf /usr/share/vim/addons/syntax/clang-format-3.8.py в моей командной строки VIM, она возвращает:

E319: Sorry, the command is not available in this version.

Я использую gVim 7.4 под Ubuntu 16.04.

+0

Vim in Ubuntu скомпилирован с Python 3 вместо Python 2. Вам нужно скомпилировать свой собственный vim с Python 2, чтобы получить этот подключаемый модуль. – Danh

ответ

3

Двоичного Vim поставляется с Ubuntu 16.04 компилируются с Python 3. VIM аддоны из лязга формата написано Python 2.

Вам нужно либо:

  • написать свой собственный аддон по Python 3
  • Составьте свой собственный Vim с Python 2, который является самым простым способом

инструкции по созданию Vim с Python можно найти в Google.

+0

Я ожидаю, что я не единственный, у кого есть эта проблема, t хочу скомпилировать с py2 (я уверен, что это вызовет новые конфликты с другими плагинами), есть ли какие-либо дополнения для Python 3? Я не могу найти какую-либо работу – Jonas

+0

Сначала проверьте vimrc. В моем случае, нет конфликта при переключении на Python 2. К сожалению, afaik, пока нет доступного добавления. Сделай сам – Danh

7

ответ Dähn является правильным, что двоичная Vim, который поставляется с Ubuntu 16.04 компилируется с Python 3, а не Python 2. clang-format-3.8.py сценария в 16.04 clang-format-3.8 пакет Ubuntu не совместим с Python 3.

Но последняя clang-format.pyделает работы с Python 3. Вы можете получить его здесь:

https://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/clang-format.py

Я думаю, что это был просто вопрос сдачи круглых скобок вокруг print заявлений.

Сохраните этот файл где-то на вашем компьютере, например /usr/local/share/vim/addons/syntax/.

Этот скрипт использует clang-format как бинарное имя, так что вы хотите установить clang-format пакет, который устанавливает команду clang-format как символическая ссылка на clang-format-3.8.

Поскольку Vim теперь загружается скрипт Python 3, заменить команду вашего :pyf (не доступен) с :py3f:

:py3f /usr/local/share/vim/addons/syntax/clang-format.py

+0

Спасибо за ваш ответ. Я установил 'clang-format' через apt-get. Он создал файл 'clang-format.py' по моему выбранному пути:'/usr/share/vim/addons/syntax'. Я переписал его с помощью ссылки и попробовал ее на gvim с помощью:: pyf3/usr/share/vim/addons/syntax/clang-format.py'. Он не работал и дал мне сообщение «Не команда редактора ...». Что я сделал не так? – Jonas

+0

Моя ошибка. Это должно быть ': py3f', а не': pyf3'. Редактирование моего ответа, чтобы отразить это. – suncho

+0

Кроме того, будьте осторожны при принятии решения о сохранении/установке чего-либо в '/ usr' за пределами'/usr/local': http://www.linuxfromscratch.org/blfs/view/svn/introduction/position.html Если вы сохраните его в '/ usr' вне'/usr/local', ваш недавно загруженный 'clang-format.py' может быть перезаписан дистрибутивом при обновлении. – suncho

2

Я решил проблему по-другому, используя комбинацию bash и vim команд.

Во-первых, я установил clang-format пакет

# apt-get install clang-format-3.5 

(я выбираю вариант 3.5, но вы можете выбрать другой)

Во-вторых, тест, если clang-format работает

$ clang-format-3.5 -style=Google test.cpp 

Затем запустите vim

$ vim test.cpp 

vim позволяет запускать внешнюю команду и распечатать его вывод в текущий буфер

:r ! clang-format-3.5 -style=Google % 

(более подробная информация о внешних командах в vim https://www.linux.com/learn/vim-tips-working-external-commands)

Это добавит вывод clang-format в текущий буфер. Для того, чтобы заменить текущий буфер, который желаемый эффект, указать строки для вывода в

:%! clang-format-3.5 -style=Google % 

(первый % означает, что все строки в текущем файле)

Вы можете сделать этот процесс более продуктивным путем определения новых команд в vim (с использованием command) для визуальных и командных режимов.