{"id":15043985,"url":"https://github.com/erotemic/vimtk","last_synced_at":"2025-08-25T18:39:07.733Z","repository":{"id":37502497,"uuid":"121890633","full_name":"Erotemic/vimtk","owner":"Erotemic","description":"A vim toolkit focused on gvim, IPython, and the terminal. ","archived":false,"fork":false,"pushed_at":"2025-03-05T01:03:38.000Z","size":471,"stargazers_count":9,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-30T01:48:51.761Z","etag":null,"topics":["cross-platform","gvim","python","vim"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Erotemic.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-02-17T20:39:20.000Z","updated_at":"2025-03-05T01:03:42.000Z","dependencies_parsed_at":"2023-11-29T01:33:11.655Z","dependency_job_id":"23c432ba-1ee3-49fc-96c4-d42a1d867e48","html_url":"https://github.com/Erotemic/vimtk","commit_stats":{"total_commits":150,"total_committers":2,"mean_commits":75.0,"dds":0.00666666666666671,"last_synced_commit":"c7ab3470bae267a634f4299e173de18f8bb0f5b6"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/Erotemic/vimtk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erotemic%2Fvimtk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erotemic%2Fvimtk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erotemic%2Fvimtk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erotemic%2Fvimtk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Erotemic","download_url":"https://codeload.github.com/Erotemic/vimtk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erotemic%2Fvimtk/sbom","scorecard":{"id":46650,"data":{"date":"2025-08-11","repo":{"name":"github.com/Erotemic/vimtk","commit":"cecf1e228be4a401f4f8a3addd6a96cd9f478fdc"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/20 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/tests.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:101: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:122: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tests.yml:124: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:129: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:141: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:286: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tests.yml:288: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tests.yml:291: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:296: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:299: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tests.yml:363: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:377: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:378: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:421: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:422: update your workflow using https://app.stepsecurity.io/secureworkflow/Erotemic/vimtk/tests.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:312","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:313","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:316","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:355","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:406","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:407","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:450","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:451","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:31","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:32","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:39","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:58","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:59","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:60","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:64","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:65","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:70","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:135","Info:   0 out of  15 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 third-party GitHubAction dependencies pinned","Info:   0 out of  18 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":8,"reason":"2 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2023-117 / GHSA-mrwq-x4v8-fh7p","Warn: Project is vulnerable to: PYSEC-2019-41 / GHSA-qfc5-mcwq-26q8"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 11 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-14T22:55:09.661Z","repository_id":37502497,"created_at":"2025-08-14T22:55:09.661Z","updated_at":"2025-08-14T22:55:09.661Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272116046,"owners_count":24876263,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-25T02:00:12.092Z","response_time":1107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cross-platform","gvim","python","vim"],"created_at":"2024-09-24T20:49:55.205Z","updated_at":"2025-08-25T18:39:07.697Z","avatar_url":"https://github.com/Erotemic.png","language":"Python","readme":"VimTk - The (mostly) Python (g)Vim toolkit \n==========================================\n\n|GithubActions| |Codecov| |Pypi| |PypiDownloads| |ReadTheDocs|\n\n\nDescription \n-----------\n\nThe tools in this package focus on, but are not exclusive to Python development\nwith gVim.  This is both a Vim plugin and a pip installable Python module.\n\n\n.. image:: https://user-images.githubusercontent.com/3186211/176559069-605e0285-f708-4f40-bc7a-6628db39b7ba.gif\n\n\nUsage \n-----\n\nWe suggest using vim-plug to manage plugins. Install vim plug like this:\n\n.. code:: bash\n\n    # Install vim-plug into your autoload directory\n    \" See: https://github.com/junegunn/vim-plug\n    curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim\n\n\nWe suggest the following vimrc as a template:\n\n.. code:: vim\n\n    \" DEMO_VIMRC: \n\n    call plug#begin('~/.vim/bundle')\n\n    Plug 'Erotemic/vimtk'\n\n    call plug#end()            \" required\n\n    filetype plugin indent on\n    syntax on\n\n    \"\"\"\" The above code should be among the first things in your vimrc\n\n\n    \" Map your leader key to comma (much easier to hit)\n    let mapleader = \",\"\n    let maplocalleader = \",\"\n    noremap \\ ,\n\n    \" Make default vimtk remaps\n    :call VimTK_default_remap()\n\n    \" Register files you use all the time with quickopen\n    \" (use \u003cleader\u003ei\u003cchar\u003e as a shortcut to specific files\n    call vimtk#quickopen(',', '~/.vimrc')\n    call vimtk#quickopen('5', '~/.bashrc')\n\n\nThis module defines many helper functions, but does not bind them to keys by\ndefault unless ``VimTK_default_remap`` is called. The default bindings are as\nfollows:\n\n.. code:: vim\n\n  noremap \u003cleader\u003eH :call vimtk#helloworld()\u003cEsc\u003e\n\n  noremap  \u003cleader\u003ea :call vimtk#execute_text_in_terminal(mode())\u003cCR\u003e\n  vnoremap \u003cleader\u003ea :call vimtk#execute_text_in_terminal(visualmode())\u003cCR\u003e\n  noremap  \u003cleader\u003em :call vimtk#execute_text_in_terminal('word')\u003cCR\u003e\n\n  noremap \u003cleader\u003eC :call vimtk#copy_current_fpath()\u003cEsc\u003e\n  noremap \u003cleader\u003eM :call vimtk#ipython_import_all()\u003cCR\u003e\n\n  command! AutoImport call vimtk#insert_auto_import()\n  noremap \u003cleader\u003epv :call vimtk#insert_print_var_at_cursor()\u003cCR\u003e\n  noremap  \u003cc-M-B\u003e :call vimtk#insert_timerit(mode())\u003cCR\u003e\u003cEsc\u003e\n  vnoremap \u003cc-M-B\u003e :call vimtk#insert_timerit(visualmode())\u003cCR\u003e\u003cEsc\u003e\n\n  noremap \u003cleader\u003ees :call vimtk#smart_search_word_at_cursor()\u003cCR\u003e\n  noremap \u003cleader\u003ego :call vimtk#open_path_at_cursor(\"e\")\u003cCR\u003e\n  noremap \u003cleader\u003egf :call vimtk#open_path_at_cursor(\"e\")\u003cCR\u003e\n  noremap \u003cleader\u003egi :call vimtk#open_path_at_cursor(\"split\")\u003cCR\u003e\n  noremap \u003cleader\u003egv :call vimtk#open_path_at_cursor(\"vsplit\")\u003cCR\u003e\n  noremap \u003cleader\u003egv :call vimtk#open_path_at_cursor(\"vsplit\")\u003cCR\u003e\n  noremap \u003cleader\u003egt :call vimtk#open_path_at_cursor(\"tabe\")\u003cCR\u003e\n  noremap gi :call vimtk#open_path_at_cursor(\"split\")\u003cCR\u003e\n\n  \" Doctest editing\n  vnoremap gd :call vimtk#py_format_doctest()\u003cCR\u003e\n  vnoremap gu :call vimtk#py_unformat_doctest()\u003cCR\u003e\n\n\nObviously you can modify the exact key bindings however you would like.\n\n\nHere is what some of these functions do:\n\n- ``vimtk#execute_text_in_terminal`` - copies the current word, line, or visual\n  selection and executes it in your most recently used terminal (perhaps\n  running IPython or bash) without needing to alt-tab or copy paste.\n  Default binding is ``\u003cleader\u003ea`` for the current line or visual selection and\n  ``\u003cleader\u003em`` for a word.\n\n- ``vimtk#ipython_import_all`` - if you are in a python module, this funciton\n  creates a few lines of code that will import everything in this module into\n  the current namespace. Note, it detects if you need to modify your pythonpath\n  and does that.  It also completely disregards ``__all__``. These lines are\n  then executed in your terminal (which should probably be an IPython session). \n  Default binding is ``\u003cleader\u003eM``.\n\n- ``vimtk#copy_current_fpath`` - Copies the path to the current file into the\n  clipboard. On non-windows the home drive is replaced with ``~``. Default\n  binding is ``\u003cleader\u003eC``.\n\n- ``vimtk#auto_import`` - Automatically inserts missing Python imports. \n\n- ``vimtk#insert_print_var_at_cursor`` - Insert a print statement around the\n  current variable your cursor is on (supports python, bash, cmake, and C++)\n  Default binding is ``\u003cleader\u003epv`` for a repr representation and\n  ``\u003cleader\u003eps`` for a ubelt repr2 representation.\n\n- ``vimtk#insert_timerit`` - Make a stub timerit and insert it at the current\n  position\n\n- ``vimtk#open_path_at_cursor`` - Open a file path or web url at your cursor. \n\n- ``vimtk#quickopen(char, fpath)`` - Use ``\u003cleader\u003e[tvio]``` to open predefined\n  files / directories\n\n- ``vimtk#py_format_doctest`` - Default binding to \u003cvisual-select\u003e ``gd``.\n  Inserts the doctest ``\u003e\u003e\u003e`` prefix before the visually selected code.\n\n- ``vimtk#py_unformat_doctest`` - Default binding to \u003cvisual-select\u003e ``gu``. \n  Removes the doctest ``\u003e\u003e\u003e`` prefix before the visually selected code.\n\n\nAlternate VIMRC \n---------------\n\nNote to get all the features, you need the following packages:\n\n.. code:: bash\n\n    # The \u003cleader\u003ea ability requires xdotool and wmctrl on linux systems\n    sudo apt install xdotool wmctrl ctags\n\n    # vimtk requires ubelt in whichever environment it is running\n    pip install ubelt --user\n\n    # There are also third party python packages needed for some functions\n    pip install pyperclip pyflakes xinspect psutil --user\n\n    # On windows you should also install pywinauto\n    pip install pywinauto --user\n\nNote: there have been some issues regarding which Python environment these\npacakges are installed to and which Python environment is used by Vim. We are\nworking to resolve these issues. Bug reports and patches are welcome!\n\n.. code:: vim\n\n    \" VimTK Recommended VimRC: \n    \" References: https://github.com/Erotemic/vimtk\n    \n    \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n    \" # Automatically install vim-plug into your autoload directory\n    \" \" See: https://github.com/junegunn/vim-plug\n    \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n    if empty(glob('~/.vim/autoload/plug.vim'))\n      \" Automatic installation if vim plug does not exist\n      silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs\n        \\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim\n      autocmd VimEnter * PlugInstall --sync | source $MYVIMRC\n    endif\n    \n    \" Enable normal windows hotkeys like: ctrl+c, ctrl+v, ctrl+a, etc...\n    source $VIMRUNTIME/mswin.vim\n    behave mswin\n\n    set nocompatible\n    filetype off\n    \"source $VIMRUNTIME/mswin.vim\n    \"behave mswin\n    set encoding=utf8\n    \n    call plug#begin('~/.vim/bundle')\n    Plug 'sjl/badwolf'\n    Plug 'scrooloose/nerdcommenter'\n    Plug 'scrooloose/nerdtree'\n    Plug 'vim-syntastic/syntastic'\n    Plug 'majutsushi/tagbar'\n    Plug 'ervandew/supertab'\n    Plug 'Erotemic/vimtk'\n    call plug#end()            \" required\n\n    filetype plugin indent on\n    syntax on\n\n    \"\"\"\" The above code should be among the first things in your vimrc\n\n    scriptencoding utf-8\n    set encoding=utf-8\n\n    \" References: https://vi.stackexchange.com/questions/13034/automatic-whitespace-in-python\n    \" ---- Minimal configuration:\n    set smartindent   \" Do smart autoindenting when starting a new line\n    set shiftwidth=4  \" Set number of spaces per auto indentation\n    set expandtab     \" When using \u003cTab\u003e, put spaces instead of a \u003ctab\u003e character\n\n    \" ---- Good to have for consistency\n    set tabstop=4   \" Number of spaces that a \u003cTab\u003e in the file counts for\n    set smarttab    \" At \u003cTab\u003e at beginning line inserts spaces set in shiftwidth\n\n    \" Highlight search regexes\n    set incsearch\n    set hlsearch\n\n    \" Disable swap files, which prevents annoying messages when you open the\n    \" same file twice\n    set noswapfile\n\n    \" Use a colorscheme (murphy is builtin, but I like badwolf)\n    colorscheme badwolf\n    \"colorscheme murphy\n    \n    \" Map your leader key to comma (much easier to hit)\n    let mapleader = \",\"\n    let maplocalleader = \",\"\n    noremap \\ ,\n\n    \" Search and replace under cursor\n    noremap \u003cleader\u003ess :%s/\\\u003c\u003cC-r\u003e\u003cC-w\u003e\\\u003e/\n    \"Surround word with quotes\n    noremap \u003cleader\u003eqw ciw'\u003cC-r\u003e\"'\u003cEsc\u003e\n    noremap \u003cleader\u003eqc ciw`\u003cC-r\u003e\"`\u003cEsc\u003e\n\n    \" Reload your vimrc\n    noremap \u003cleader\u003eR :source ~/.vimrc\u003cCR\u003e\n\n    \" Window navication\n    \" Alt + jklh\n    map \u003csilent\u003e\u003cA-j\u003e \u003cc-w\u003ej\n    map \u003csilent\u003e\u003cA-k\u003e \u003cc-w\u003ek\n    map \u003csilent\u003e\u003cA-l\u003e \u003cc-w\u003el\n    map \u003csilent\u003e\u003cA-h\u003e \u003cc-w\u003eh\n    \" Control + jklh\n    map \u003cc-j\u003e \u003cc-w\u003ej\n    map \u003cc-k\u003e \u003cc-w\u003ek\n    map \u003cc-l\u003e \u003cc-w\u003el\n    \" Move in split windows\n    \" Press leader twice to move between windows\n    noremap \u003cleader\u003e, \u003cC-w\u003ew\n    map \u003cc-h\u003e \u003cc-w\u003eh\n\n    \" Fast nerd tree access\n    noremap \u003cC-T\u003e :NERDTree\u003cCR\u003e\n    noremap \u003cleader\u003e. :NERDTree\u003cCR\u003e\n    noremap \u003cleader\u003eh :NERDTreeToggle\u003cCR\u003e\n    \"noremap \u003cleader\u003eh :Tlist\u003cCR\u003e\n    noremap \u003cleader\u003ej :Tagbar\u003cCR\u003e\n\n    \"set autochdir\n    \" better version of autochdir that changes cwd to be at the current file\n    autocmd BufEnter * silent! lcd %:p:h\n    \n    \" Note: to use vimtk I think we need to have ubelt installed\n    \" or get some sort of install-hook pip install command to happen\n    \" We can hack around this by explicitly sourcing the vimtk plugin\n    source $HOME/.vim/bundle/vimtk/plugin/vimtk.vim\n    \n    \" Make default vimtk remaps. \n    :call VimTK_default_remap()\n\n    \" Swap colon and semicolon\n    :call vimtk#swap_keys(':', ';')\n\n    \" Register files you use all the time with quickopen\n    \" (use \u003cleader\u003ei\u003cchar\u003e as a shortcut to specific files\n    :call vimtk#quickopen(',', '~/.vimrc')\n    :call vimtk#quickopen('5', '~/.bashrc')\n\n\nRelated Work\n------------\n\n* https://github.com/voldikss/vim-floaterm\n\n.. |CircleCI| image:: https://circleci.com/gh/Erotemic/vimtk.svg?style=svg\n    :target: https://circleci.com/gh/Erotemic/vimtk\n.. |Travis| image:: https://img.shields.io/travis/Erotemic/vimtk/main.svg?label=Travis%20CI\n   :target: https://travis-ci.org/Erotemic/vimtk?branch=main\n.. |Appveyor| image:: https://ci.appveyor.com/api/projects/status/github/Erotemic/vimtk?branch=main\u0026svg=True\n   :target: https://ci.appveyor.com/project/Erotemic/vimtk/branch/main\n.. |Codecov| image:: https://codecov.io/github/Erotemic/vimtk/badge.svg?branch=main\u0026service=github\n   :target: https://codecov.io/github/Erotemic/vimtk?branch=main\n.. |Pypi| image:: https://img.shields.io/pypi/v/vimtk.svg\n   :target: https://pypi.python.org/pypi/vimtk\n.. |ReadTheDocs| image:: https://readthedocs.org/projects/vimtk/badge/?version=latest\n    :target: http://vimtk.readthedocs.io/en/latest/\n.. |PypiDownloads| image:: https://img.shields.io/pypi/dm/vimtk.svg\n    :target: https://pypistats.org/packages/vimtk\n.. |GithubActions| image:: https://github.com/Erotemic/vimtk/actions/workflows/tests.yml/badge.svg?branch=main\n    :target: https://github.com/Erotemic/vimtk/actions?query=branch%3Amain\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferotemic%2Fvimtk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferotemic%2Fvimtk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferotemic%2Fvimtk/lists"}