Skip to content

πŸ› οΈ A lightweight Vim/Neovim text editor and IDE designed for simplicity and efficiency

License

Notifications You must be signed in to change notification settings

estebanways/sword-vim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Sword Vim πŸ—‘οΈ

A lightweight Vim/Neovim text editor and IDE designed for simplicity and efficiency.

GitHub license Maintenance Downloads

sword-vim

Screenshots

Sessions Manager πŸ“· Key Mappings πŸ“· Lists Finder πŸ“· Basic Debugging πŸ“· Diagnostics Indicators πŸ“· Code Analysis πŸ“· Auto-completion and Suggestions πŸ“· Focus Coding πŸ“· Split Windows πŸ“· REST Client πŸ“· Version Control πŸ“· Themes πŸ“· Themes

Prerequisites

Note: The following list includes tools that may enhance the user experience but are not strictly prerequisites. Depending on your specific use case and preferences, you may choose to install some or all of these tools for improved functionality and convenience.

Neovim Build From Source
GNU/Linux MacOS Description
autoconf autoconf Configuration script system for software.
automake automake Tool for automatically generating Makefile.in files.
cmake cmake Cross-platform makefile generator.
curl curl A command-line tool and library for transferring data with URLs.
g++ g++ GNU Compiler Collection - C++ compiler.
gettext gettext Tools for internationalization (i18n) and localization (l10n).
libtool libtool Generic library support script.
libtool-bin - (See libtool).
ninja-build ninja Ninja build system.
pkg-config pkg-config System for managing library compile and link flags.
s-tui s-tui Terminal UI for monitoring your computer's CPU temperature and more.
unzip unzip Extraction utility for archives compressed in .zip format.
doxygen doxygen Documentation system for C++, C, Java, Objective-C, and more.
Sword Vim
GNU/Linux MacOS Description
bash-language-server bash-language-server Language Server Protocol for Bash.
figlet figlet Program for making large letters out of ordinary text.
node.js lts node.js lts JavaScript runtime built on Chrome's V8 JavaScript engine.
npm npm Package manager for JavaScript.
oh my tmux! oh my tmux! Tmux configuration framework.
pip pip Package installer for Python.
pip3 pip3 Package installer for Python 3.
pynvim pynvim Python client for Neovim.
yarn yarn Alternative to NPM.
Languages
GNU/Linux MacOS Description
bats bats Bash Automated Testing System.
flake8 flake8 Tool for style guide enforcement in Python.
nvm nvm Node Version Manager for managing multiple Node.js versions.
shellcheck shellcheck Shell script analysis tool.
External Tools
GNU/Linux MacOS Description
batcat (bat) batcat (bat) A cat clone with syntax highlighting and Git integration.
feh feh Fast and lightweight image viewer.
fzf fzf Fuzzy finder for the command-line.
jq jq Parsers and manipulates JSON data.
oh my zsh! oh my zsh! Zsh configuration framework.
tidy tidy HTML and XML syntax checker and validator.
nnn / vifm nnn / vifm Terminal file manager.
zplug zplug Zsh plugin manager.
Graphical Mode Tools
GNU/Linux MacOS Description
wezterm / kitty open (iTerm2) / wezterm / kitty Terminals with fonts with ligatures support and transparency support.
wl-clipboard wl-clipboard Wayland clipboard utilities.
xclip / xsel pbcopy, pbpaste, tmux-pasteboard Command line interface to X selections (clipboard).
feh / qiv / sxiv / ristretto open (Preview) Quick and simple Image Viewer.
ig (ripgrep) ig (ripgrep) Line-oriented search tool that recursively searches your current directory.

Installation

Steps
  1. Requirements:

    • Neovim: Ensure Neovim is installed on your system. You can typically install it using your system's package manager (e.g., apt, brew, yum). You can also build it from source for your specific OS.
    • Git: The installation process often involves cloning repositories, so having Git installed is essential.
  2. Plugin Manager (Optional but recommended):

    • Choose a plugin manager. Popular ones include vim-plug, Dein.vim, and packer.nvim.
    • Follow the installation instructions for your chosen plugin manager. The default configuration of Sword Vim requires vim-plug and packer.nvim.
  3. Configuration:

    • Create a Neovim configuration file. The default location is ~/.config/nvim/init.vim or ~/.vimrc for Vim compatibility. Add the next lines to the file init.vim:
      " ------------------------------------------------------------------------------
      " Sets the runtimepath for Vim plugins and runtime files
      " ------------------------------------------------------------------------------
      " Adds ~/.vim to the start of runtimepath
      " Appends ~/.vim/after to runtimepath
      " Sets the packpath to match the runtimepath
      " Sources the user's Vim configuration file
      " ------------------------------------------------------------------------------
      set runtimepath^=~/.vim runtimepath+=~/.vim/after
      let &packpath=&runtimepath
      source ~/.vimrc
      • Create a symbolic link from the file ~/.vimrc to the same file in ~/config/.vimrc, where config is copy of the directory sword-vim/config.
        ln -s ~/config/.vimrc ~/.vimrc
      • Create a symbolic link from the directory ~/.vim to the same directory in ~/config, ~/config/.vim.
        ln -s ~/config/.vim/ ~/.vim/
    • Add your chosen plugin manager setup to the configuration file. Sword Vim defaults vim-plug and packer.nvim, are already set up.
    • Install the Sword Vim plugins. For Packer, say no (N) to avoid Packer removing itself.
      :PlugInstall
      :PackerInstall
    • Configure basic settings like line numbers, syntax highlighting, etc.
    • Source or restart Neovim.
    • Voila! Enjoy it!
  4. Adding Plugins:

    • Use your plugin manager to add plugins to Neovim. Plugins are typically specified in the configuration file. Sword Vim has two default configuration files, one for Vim Script, one for Lua.
    • Example with vim-plug:
      call plug#begin('~/.vim/plugged')
      " Add your plugins here
      Plug 'user/plugin-name'
      call plug#end()
  5. Customization:

    • Customize key mappings, colorschemes, and other preferences based on your needs.
    • Keep in mind that some plugins may require additional configuration.
  6. Adapt to System Configuration:

    • Be aware that specific configurations might be needed based on your operating system.
    • Some plugins might have dependencies that need to be installed separately.
  7. Updates:

    • Regularly update your plugins using your plugin manager.
    • Stay informed about changes in Neovim or your plugins that might affect your configuration.

Plugins Included

VimL Plugins

Category VimL Plugin Description
Auto-complete Plugins tpope/vim-repeat Allows repeating the last command.
github/copilot.vim GitHub's Copilot.
Exafunction/codeium.vim Codeium.vim.
Snippets Plugins neoclide/coc.nvim Conquer of completion with additional text editing support.
sirver/ultisnips Ultimate solution for snippets in Vim.
honza/vim-snippets Snippets for various languages.
Comments Plugins scrooloose/nerdcommenter Powerful commenting functions.
tpope/vim-commentary Commenting utility.
Typing Plugins alvan/vim-closetag Creates closing HTML tags when typing.
tpope/vim-surround Manipulates surroundings like parentheses and quotes.
Finder Plugins junegunn/fzf Fuzzy finder for the terminal.
Formatting Plugins mg979/vim-visual-multi Enhances actions like creating multiple cursors.
prettier/vim-prettier Integrates Prettier for supported files.
Color Plugins ap/vim-css-color Provides color highlighting for CSS.
Git Plugins tpope/vim-fugitive Git wrapper for Vim.
itchyny/vim-gitbranch Provides the name of the git branch.
IDE Plugins mhinz/vim-startify Creates a start screen with bookmarks.
easymotion/vim-easymotion Enhances motion in Vim.
scrooloose/nerdtree File system explorer.
christoomey/vim-tmux-navigator Integrates navigation between Vim and Tmux.
itchyny/lightline.vim Status bar for Vim.
DevIcons and Themes ryanoasis/vim-devicons Adds filetype glyphs.
morhetz/gruvbox Gruvbox theme.
shinchu/lightline-gruvbox.vim Lightline theme for Gruvbox.
mhartington/oceanic-next OceanicNext theme.
Mofiqul/dracula.nvim Dracula theme.
Other Productivity Plugins tribela/vim-transparent Adds transparency to Vim.
wakatime/vim-wakatime Tracks coding activity.
benmills/vimux Tmux integration.
itspriddle/vim-shellcheck Finds errors in bash/sh scripts.
tyewang/vimux-jest-test Jest test integration.
janko-m/vim-test Test runner for Vim.
diepm/vim-rest-console REST console for sending requests and displaying responses.
tpope/vim-dispatch Asynchronous task dispatcher for Vim.
Syntax Plugins sheerun/vim-polyglot Language pack for various languages.
styled-components/vim-styled-components Styled Components syntax highlighting.
kovetskiy/vim-bash Fixes syntax issues with bash files.
rosstimson/bats.vim Extends shell highlighting for Bats.

Lua Plugins

Category Lua Plugin Description
Buffer Line Plugin akinsho/bufferline.nvim Snazzy buffer line with tabpage integration.
Dashboard Plugin goolord/alpha-nvim Lua powered greeter like vim-startify/dashboard-nvim.
Fuzzy Finder Plugin nvim-telescope/telescope.nvim Highly extendable fuzzy finder over lists.
Session Manager mhinz/neovim-session-manager A session manager for Neovim.
Telescope UI Select nvim-telescope/telescope-ui-select.nvim UI extension for telescope to easily select items.
Keybinding Popup Plugin folke/which-key.nvim Displays a popup with possible keybindings.
Lazy Plugin Manager folke/lazy.nvim Modern plugin manager for Neovim (commented out in the code).
Snippets Plugins rafamadriz/friendly-snippets Snippets collection for various programming languages.
Abstract-cs Theme Abstract-IDE/Abstract-cs Colorscheme for Neovim with Tree-sitter support.
Alignment junegunn/vim-easy-align Easy-to-use Vim alignment.

Insights

insights
Image taken from GitHub

Contribute

  1. Fork it (https://github.com/estebanways/sword-vim/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

License

Sword Vim is MIT Licensed.