Hot answers tagged

4

You mention in the comments, that the file Python.h is located in the directory $LOCAL_INSTALL/include/python3.8. This directory is not in the search path for include files. So it has to be added manually. export CFLAGS="-I$LOCAL_INSTALL/include/python3.8" ./configure ... The configure script adds the compiler flags from the environment variable ...


3

:read inserts text from a given file. When you start with empty file, it already has one (virtual, empty) line. So if you do :0read then the text is added after 0th line (that is, before the first and only line), and then the former line #1 gets shifted to the end of file. You can't prevent it, only to remove it. Personally, I'd prefer :read filename | ...


3

The C API of Python evolves with the version of Python. In this case, function PySlice_AdjustIndices was introduced in this commit to supercede function PySlice_GetIndicesEx, but it seems this function was only released starting with Python 3.5.4 and 3.6.1. Since your Vim seems to default to pythonthreedll=python36.dll (inferred from error message E370: ...


3

What program is called when K is pressed is set by keywordprg. By default, this is set to man (the linux manual). Changing it to pydoc so as to get Python documentation will do the trick, but then you don't the manual being checked anymore - which is an issue if, for example, you're working with C code, as C's library code has documentation in the man system ...


2

What I would do is the following: ESC :w to write (save) the file. Then :e number12.py. That will open a new buffer in the current window, if the file doesn't exist.


2

In my case I had to run this command: pip3 install --user jedi


2

I haven't had time to test more than the first code-block, but the others are mostly mechanical transformations. function MyLinks(pat, strip) abort return glob(a:pat, v:false, v:true) \ ->map({_, v -> printf('[%s](%s)', fnamemodify(v, ':t:r')->substitute(printf('^%s', a:strip), '', ''), fnamemodify(v, ':t'))}) \ ->join("\n&...


2

There are a few minor issues with most of your lines ignoring specific patterns. %-G%Oh no!\ %m : You have an extra % there, turning the first character into a %O (a command to overread the matched part) rather than a literal O. You also have a trailing space there, so it would only match a line with a space at the end! You can fix that to %-GOh no!\ %m. ...


2

It seems that when you copied the snippet you forgot to add the indentation spaces in the python snippet conditional code as shown in the error message: Executed snippet code: 1 2 if t[2] and t[2][0] not in [',', '.', '?', '-', ' ']: 3 snip.rv = ' ' 4 else: 5 snip.rv = '' 6 Try to change it to: snippet im "create an inline ...


1

A substitution like this works for all scenarios: %s/print(\(.*\))/log.info(" ".join([\1]))/ Grab everything within print brackets (.*) using regex replace the match with a join statement surrounding the match replace the print with log.info (or whatever is required) Here is the test script if anyone wants to try it for themselves: import logging,...


1

I followed the instructions given by puremourning at https://www.reddit.com/r/vim/comments/mbdt2e/environment_variables_on_vimspector/ I used a shell variable to run a script whose output is the JSON required for the env key; and type coercion to coerce this JSON string into the env map It is illustrated in puremourning's example: shell variable: https://...


1

You can create a function for that (easier with python :h if_pyth). # intial setup import inspect` potential_modules = ['django', 'sys', 'os'] for module_name in potential_modules: exec(f"from {module_name} import *") def add_import_on_trigger() func_name = get_the_word_under_cursor(); module_name = inspect.getmodule(func_name) ...


1

Because my system does not name the default python interpreter as python3, but as python I simply added a shell alias: alias python3='python'


1

The syntax error is happening because the function call is passing an async=True keyword argument. The async term has become a reserved keyword in recent Python, so it's not allowed as a keyword argument anymore. If you load this source code in a Python interpreter, it's quite possible that it won't complain about it right away. Python is an interpreted ...


1

Remove the lines that open the quickfix list (:copen). Aside—if you use :execute for simple Ex commands, it’s usually enough to do just the command (so just :copen, :wincmd p, etc.). Even the colon’s aren’t necessary in most places.


1

If using vimspector, you can set the python launch argument to point to the python interpreter that debugpy uses to debug your application. It's even in the example https://github.com/puremourning/vimspector#python


1

If you have a Vim version with Python support (you can check that in vim --version or :version and see if you have +python3 or +python3/dyn), then you can use py3eval() to evaluate the expression inside Vim itself. This should work: xnoremap <Leader>p c<C-R>=py3eval(@")<CR><Esc> (Note: This assumes Python 3. There are similar ...


1

You must escape spaces in directory names using a backslash. Also note that "autoload" subdirectory is not a proper place to put your python files.


1

Here are the commands I use to create a python 3.6.0 pyenv on a Mac using homebrew. Please note that I use neovim but the process to create a pyenv will not be much different for vim. Install readline and xz along with pyenv and pyenv-virtualenv brew install pyenv pyenv-virtualenv readline xz Install python 3.6.0 CFLAGS="-I$(brew --prefix openssl)/...


1

You can compile Vim from source to configure which interpreter it should use. The full instructions can be found on the YouCompleteMe wiki. It turns out the method described in the original post is correct: configuring the installation with the following options should have Vim link against Python 3.7 ./configure \ --enable-python3interp=yes \ ...


1

Following the hint from filbranden I got rid of the error message by recompiling the plugin via Python. Vundle must be run in first place, to guarantee the latest version is fetched from the repository. From normal mode: :PluginInstall Then in the shell compilation must be triggered manually: cd ~/.vim/bundle/YouCompleteMe python3 install.py --clang-...


1

Here's a pure vimscript function that builds up the command by searching for functions (def) and classes (class). You may need to adjust the filename modifiers or the command; parameters or global vars could be used for that if one wanted to build a plugin. " ~/.vim/autoload/python.vim function python#runTest() abort const l:file = expand('%:p') if ...


1

I have managed to automate this feature using vimscript-python. Add this function to your ~/.vimrc: function! RunCurrentPythonTest() python3 << EOF import re import vim # https://vimhelp.org/if_pyth.txt.html cursor = vim.current.window.cursor test_filename = vim.eval("expand('%p')") test_name = None class_name = None for line_no in range(...


1

Check :version of your gvim. It should have +python3/dyn there for the python3 support. Both python3 and gvim should be 64 bit. (Windows binaries from vim.org are 32bit) Then try adding to your vimrc: set pythonthreedll=python38.dll set pythonthreehome=C:/Users/nikhi/AppData/Local/Programs/Python/Python38/


1

Specifying the python version in the script like #!/usr/bin/python3 (instead of just #!/usr/bin/python) solves the problem.


1

As Martin points out in the comments, this has been fixed. Either update vim or add the newer syntax file to your configuration.


Only top voted, non community-wiki answers of a minimum length are eligible