Создание строки комментария Python только с командами VIM - PullRequest
0 голосов
/ 29 января 2019

У меня есть функция vim:

function! Pycom(word)
    let a:inserted_word = ' ' . a:word . ' '
    let a:word_width = strlen(a:inserted_word)
    let a:length_before = (118 - a:word_width) / 2
    let a:hashes_before = repeat('#', a:length_before)
    let a:hashes_after = repeat('#', 118 - (a:word_width + a:length_before))
    let a:hash_line = repeat('#', 118)
    let a:word_line = '# '. a:hashes_before . a:inserted_word . a:hashes_after

    :put =toupper(a:word_line)
endfunction
noremap <leader>pc :call Pycom('')<Left><Left>

, которая создает комментарии Python.Вывод выглядит примерно так:

# ########################################### Hello World ############################################

Как мне создать отображение клавиш для размещения в моем vimrc, чтобы создать строку комментариев только с командами Vim?Мне нужно сделать это, потому что я использую PyCharm и в режиме эмуляции Vim он не позволяет вызывать функции.

1 Ответ

0 голосов
/ 29 января 2019

Если бы просто :function отсутствовало, вы могли бы встроить отдельные команды в длинную, неприглядную последовательность команд.Но вряд ли эмуляция Vim просто пропустит функции;проблема заключается в том, что сам Vimscript тесно связан с самим Vim и в основном определяется поведением его единственной реализации внутри Vim.Таким образом, я бы предположил, что strlen(), repeat() и даже :put ={expression} не будут работать в PyCharm, также.

Большинство эмуляций Vim просто предлагают базовые :map команды.Не зная ничего о PyCharm, можно попробовать следующие общие подходы:

  • Если эмуляция предлагает команду :! (или :{range}!) для вызова внешних команд, вы можете реализовать эту функциональность ввнешняя команда, реализованная на любом языке программирования, который вы предпочитаете.(Если эмуляция не предлагает команду :{range}!, вам нужно сначала :write буфер и передать каким-либо образом имя файла и текущее местоположение внешней команде.)
  • Некоторые эмуляции также предлагаютнестандартная команда для вызова их собственных функций редактора ядра (так что вы можете реализовать ее с этим) или даже произвольный пользовательский код;например, для редактора на основе NodeJS это может быть код JavaScript.

В общем, эмуляции Vim весьма ограничены и могут эмулировать только основные функции vi (хотя я также видел пользовательскиереализации некоторых популярных плагинов Vim, таких как surround.vim).

Alternative

Чтобы получить больше специальных возможностей Vim в вашей IDE, используйте одновременно обоих ;в вашей среде IDE очень легко настроить внешний инструмент, который запускает Vim с текущим файлом (и позицией).Автоматическая перезагрузка изменений (в Vim через :set autoread) позволяет одновременно редактировать исходный код в обоих.

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