In the middle of the desert you can say anything you want
Is nice! It transparently got all vim’s configs plugins and they seems to work!
set runtimepath^=~/.vim runtimepath+=~/.vim/after
let &packpath = &runtimepath
source ~/.vimrc
A Complete Guide to Neovim Configuration for Python Development - jdhao’s blog
deoplete for faster completions, jedi-vim for goto and friends.
davidhalter/jedi-vim: Using the jedi autocompletion library for VIM.
Interesting bindings:
let g:jedi#usages_command = "<leader>n"
let g:jedi#goto_command = "<leader>d"
let g:jedi#rename_command = "<leader>r"
let g:jedi#documentation_command = "K"
But it didn’t work for packages not living inside the default python environment, and manually each venv would be tedious. poet-v to the rescue!
let g:poetv_executables = ['poetry']
map <leader>va :PoetvActivate<CR>
Deoplete1 is an autocomplete framework (nvim-only, was my last reason for switching), deoplete-jedi2 makes it use jedi.
To select on enter, had to add this to vimrc/nvimrc:
set completeopt+=noinsert
In general deoplete faq in vim help is much longer than the one on their github repo.
nvie/vim-flake8: Flake8 plugin for Vim, <F7> to run it on the current buffer.
Found a post1 about it.
But I like much more Click’s way to do this (Options — Click Documentation (8.0.x)):
@click.option(
"--username", prompt=True,
default=lambda: os.environ.get("USER", "")
)
Of course, os.get.environ can be replaced by python-decouple’s config().
Lastly, ini files support interpolation2 (%(whatever)s)! Final solution:
[settings]
EXPORT=../../exports
CATS_INPUT=%(EXPORT)s/cats.json
@click.option(
"--input-file",
"-i",
type=click.Path(exists=True, path_type=Path),
default=lambda: config("CATS_INPUT"),
)
Also TIL if I use quotes in the ini file, they’ll become part of the final filename.
Stumbled upon python-decouple · PyPI, which seems like a “better” dotenv (supports casting, defaults etc)
For example, this is a settings.ini in poetry project root:
[settings]
ECHO=True
I can overwrite these parameters like ECHO=False poetry run python myscript.py
Neat!
Python Best Practices for a New Project in 2021 - Alex Mitelman
Describes a setup that uses poetry, black, flake8, pytest, mypy and new to me isort to sort imports.
The Fast track section has a TL;DR of how to create that setup.
I also really like this intro to poetry: Package Python Projects the Proper Way with Poetry
xdg-settings gets the award for least intuitive interface ever.
xdg-settings get default-web-browser was firefox.xdg-settings set default-web-browser qutebrowser.desktop is quietxdg-settings get default-web-browser is still firefox.echo $? returned 2, which is file not found basically.-h (only --help), and having --list as a parameter, but get/set as commands.> xdg-settings set default-web-browser
xdg-settings: invalid application name
oh well.
Created a file with -> in the name, it didn’t appear on mobile, checked sync logs - not there because the name is “illegal”. Is not allowing > a global thing or only for Android?
For an executable (..qutebrowser.sh) to be an ‘application’, it has to have a .desktop file in ~/.local/share .1
For qutebrowser, created this:
[Desktop Entry]
Name=Qutebrowser
Comment=Qutebrowser
Exec="~/.local/bin/qb %f"
Terminal=true
Type=Application
StartupNotify=true
MimeType=application/x-www-browser;
Keywords=python;
desktop-file-validate qutebrowser.desktopsudo update-desktop-databasesudo desktop-file-install qutebrowser.desktop then put it in /usr/share/applications 2This describes all the things needed to set qb as default browser: New option for open link with browser · Issue #716 · RocketChat/Rocket.Chat.Electron
At the end, symlinked /usr/bin/qb to it’s location in my home folder, maybe the universe will come crashing on me but then I don’t have to mess with the usual creation of bash runner scripts in ~/.local/bin/.. to have it globally available. Including for things like update-alternatives that seem to want a global thing.
[ Main docu for this is UnityLaunchersAndDesktopFiles - Community Help Wiki. ↩︎
(learned it when it failed because of no sudo) ↩︎
screen -R screename attaches a screen with this name or creates it.
<C-a> :sessionname newscreenname renames an existing instance~/.screenrc exists. Some useful settings:
defscrollback 200000 for “infinite” scrollbackdeflog on to log everything automaticallyscreen when no screen is installed1 : connect to it with ssh from any other server that does have screen installed.thought of this myself and really proud of it ↩︎
sshfs mounts a remote folder to one on the local filesystem.
sshfs server:/data/me ./local-folder -p 12345sshfs -o Ciphers=aes128-ctr -o Compression=no server:/data/me ./local-folder -p 12345 may be fasterWhen I tried it at the beginning it was horribly slow, the problem was the zsh prompt that had info about the current git repo. Disabling it or using bash solved the issue.
If you copy a directory, there may be symlinks there, that will also show fine when you tree or cat or whatever. What saved me was their different color in the terminal.
.. How did people do this in b/w terminals?
TODO How can I avoid this in the future, given my heavy symlinks use?