vim-better-whitespace VS vim-indent-object

Compare vim-better-whitespace vs vim-indent-object and see what are their differences.

vim-indent-object

Vim plugin that defines a new text object representing lines of code at the same indent level. Useful for python/vim scripts, etc. (by michaeljsmith)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
vim-better-whitespace vim-indent-object
5 15
1,341 729
- -
3.4 3.3
7 days ago 3 months ago
Vim Script Vim Script
The Unlicense MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

vim-better-whitespace

Posts with mentions or reviews of vim-better-whitespace. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-01-03.
  • Disabling vim-better-whitespace in floating buffer?
    1 project | /r/neovim | 3 Feb 2023
    How do I stop vim-better-whitespace from being activated in my ToggleTerm+Lazygit buffer?
  • How to get this arrow and not equal symbol?
    4 projects | /r/neovim | 3 Jan 2023
    For showing whitespace characters, here is a good vimscript based plugin - https://github.com/ntpeters/vim-better-whitespace
  • lsp-error with clangd when opening a cpp file in Ubuntu
    8 projects | /r/neovim | 7 Jun 2022
    -- Neovim configuration by Daniele Lupo (Jepessen) --- Require --- local utils = require('utils') --- Options --- -- Add number to rows utils.opt('o', 'number', true) -- Set indentation of files local indent = 2 utils.opt('b', 'expandtab', true) utils.opt('b', 'shiftwidth', indent) utils.opt('b', 'smartindent', true) utils.opt('b', 'tabstop', indent) utils.opt('b', 'autoindent', true) utils.opt('o', 'smarttab', true) utils.opt('b', 'softtabstop', indent) -- Enable the mouse utils.opt('o', 'mouse', 'a') -- Set nocompatible mode for more powerful commands utils.opt('o', 'compatible', false) -- Set some search options utils.opt('o', 'showmatch', true) utils.opt('o', 'ignorecase', true) utils.opt('o', 'hlsearch', true) utils.opt('o', 'incsearch', true) -- Set options for color scheme utils.opt('o', 'termguicolors', true) --- Keymappings --- -- Remap jj to escape in insert mode utils.map('i', 'jj', '') utils.map('n', 'JJJJ', '') -- Swap ; and : utils.map('n', ':', ';') utils.map('n', ';', ':') -- Start plugin section. Use this section in order to install new plugins to -- neovim. -- -- In order to install a new plugin, you need to put in this section the -- repository where it can be found, and then refresh the plugin list by -- installing them with the command: -- -- :PlugInstall -- Auto install vim-plug that's a plugin manager local vimplugrepository = '' local installpath = vim.fn.stdpath('config')..'/autoload' local vimpluginstallpath = installpath..'/plug.vim' local vimplugrepository = 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' if vim.fn.empty(vim.fn.glob(vimpluginstallpath)) > 0 then vim.api.nvim_command('!curl -flo '..vimpluginstallpath..' --create-dirs '..vimplugrepository) vim.cmd 'autocmd VimEnter * PlugInstall' end local Plug = vim.fn['plug#'] -- Put plugins in this section. Define a Plug with the repository of the plugin that you want vim.call('plug#begin', installpath) -- Vim airline. This plugin creates a nice status bar with more features than -- standard one. Plug 'https://github.com/vim-airline/vim-airline' -- NerdTree is a plugin for showing a tree folder structure of the filesystem. Plug 'https://github.com/preservim/nerdtree' -- Vim color schemes Plug 'https://github.com/rafi/awesome-vim-colorschemes' -- Developer icons Plug 'https://github.com/ryanoasis/vim-devicons' -- Surrounding with parenthesis and xml tags with cs command and more Plug 'https://github.com/tpope/vim-surround' -- Show trailing whitespaces and use the command :StripWhitespace for removing -- them Plug 'https://github.com/ntpeters/vim-better-whitespace.git' -- Install the LSP server for configuring it with clangd for code completition -- in C++ Plug 'https://github.com/neovim/nvim-lspconfig' -- An interesting theme Plug 'https://github.com/Pocco81/Catppuccino.nvim' vim.call('plug#end') --- PLUGINS CONFIGURATION --- -- Nerdtree -- Configure keys so with ctrlf go to the tree, with ctrl+n open the tree, and -- ctrl+t toggle the tree utils.map('n', '', ':NERDTreeFocus') utils.map('n', '', ':NERDTree') utils.map('n', '', ':NERDTreeToggle') --- LSP CONFIG --- -- Main configuration local lspremapopts = { noremap = true, silent = true } vim.keymap.set('n', 'e', vim.diagnostic.open_float, lspremapopts) vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, lspremapopts) vim.keymap.set('n', ']d', vim.diagnostic.goto_next, lspremapopts) vim.keymap.set('n', 'q', vim.diagnostic.setloclist, lspremapopts) -- Use an on_attach function to only map the following keys -- after the language server attaches to the current buffer local on_attach = function(client, bufnr) -- Enable completition triggered by vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') -- Mappings -- See ':help vim.lsp.* local bufopts = { noremap = true, silent = true, bufnr = bufnr } vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts) vim.keymap.set('n', '', vim.lsp.buf.signature_help, bufopts) vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, bufopts) vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, bufopts) vim.keymap.set('n', 'wl', function () print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, bufopts) vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, bufopts) vim.keymap.set('n', 'rn', vim.lsp.buf.rename, bufopts) vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, bufopts) vim.keymap.set('n', 'gr', vim.lsp.buf.references.bufopts) vim.keymap.set('n', 'f', vim.lsp.buf.formatting, bufopts) end -- Now the servers must be defined and set. In order to load them it's -- convenient to define them in an array and use a loop. local servers = { 'pyright', 'clangd' } for _, lsp in pairs(servers) do require('lspconfig')[lsp].setup { on_attach = on_attach, flags = { debounce_text_changes = 150 } } end --- COLOR SCHEME --- vim.cmd[[colorscheme catppuccin]]
  • strip whitespace only on changed lines
    3 projects | /r/emacs | 24 Feb 2022
    I have used this vim plugin before https://github.com/ntpeters/vim-better-whitespace and I'd love to have the same behavior on emacs.
  • Using Vim for Everything!
    6 projects | /r/FPGA | 6 Oct 2021
    I just saw a nice post in /u/medwatt about using vim for VHDL/Verilog and thought I'd contribute a little! * Syntax and error highlight: https://github.com/autozimu/LanguageClient-neovim * Column align: https://github.com/junegunn/vim-easy-align * Remove annoying whitespaces: https://github.com/ntpeters/vim-better-whitespace * Partial (fuzzy) filename search: https://github.com/junegunn/fzf.vim * Outline all declarations inside a file: ⠀https://github.com/preservim/tagbar * Treat indentations as vim-objects (useful for languages that don't use { }): https://github.com/michaeljsmith/vim-indent-object There is also mouse support in vim for those who want it. Try typing :set mouse=a. Very useful for resizing windows. I also highly recommend you get good at using folds (https://vim.fandom.com/wiki/Folding). It makes it a LOT easier to navigate files. You can save your fold config per-file with :mkview and load it later with :loadview. If I come up with more hints - I'll mention them in the comments!

vim-indent-object

Posts with mentions or reviews of vim-indent-object. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-04-14.
  • Is there a plugin to select the parent block of code I am in?
    2 projects | /r/neovim | 14 Apr 2023
    I tried https://github.com/michaeljsmith/vim-indent-object and while it was somewhat promising, it doesn't work correctly.
  • Select indented lines in markdown todo list
    4 projects | /r/neovim | 11 Jan 2023
  • Ask HN: Is Vim still worth learning?
    5 projects | news.ycombinator.com | 13 Dec 2022
  • How can it select the inner/outer tag of yaml block
    1 project | /r/neovim | 2 Aug 2022
  • Easier way to delete a whole function?
    6 projects | /r/vim | 22 May 2022
    If your function is nicely indented (like your example), you can use an indent object daI delete it. Indent objects are provided by vim-indent-object (more well-known but inactive) and vindent.vim (an extended version by me).
  • vindent.vim v3.0.0
    3 projects | /r/vimplugins | 13 May 2022
    vindent.vim is an alternative to both vim-indentwise and vim-indent-object. The latest version v3.0.0 reimplements every functionality that the two plugin offer, but improved!
  • vindent.vim: a new plugin for indent motions and text objects
    4 projects | /r/vim | 29 Apr 2022
    I use indent objects from vim-indent-object and indent jumps vim-indentwise alot, but they seem to be dormant for a long time. Also, vim-indentwise provides a lot of unnecessary functionalities IMO, making modifying the source code a bit difficult.
  • Vimrc - How would I set `do` and `end` as delimiter pairs and then have `yid` yank between them?
    5 projects | /r/vim | 4 Jan 2022
    This isn't exactly what you're looking for, but assuming you've indented everything between do and end, you can use the vim indent object plugin (https://github.com/michaeljsmith/vim-indent-object), then do something like yii, or dii to do it inside the indent.
  • Using Vim for Everything!
    6 projects | /r/FPGA | 6 Oct 2021
    I just saw a nice post in /u/medwatt about using vim for VHDL/Verilog and thought I'd contribute a little! * Syntax and error highlight: https://github.com/autozimu/LanguageClient-neovim * Column align: https://github.com/junegunn/vim-easy-align * Remove annoying whitespaces: https://github.com/ntpeters/vim-better-whitespace * Partial (fuzzy) filename search: https://github.com/junegunn/fzf.vim * Outline all declarations inside a file: ⠀https://github.com/preservim/tagbar * Treat indentations as vim-objects (useful for languages that don't use { }): https://github.com/michaeljsmith/vim-indent-object There is also mouse support in vim for those who want it. Try typing :set mouse=a. Very useful for resizing windows. I also highly recommend you get good at using folds (https://vim.fandom.com/wiki/Folding). It makes it a LOT easier to navigate files. You can save your fold config per-file with :mkview and load it later with :loadview. If I come up with more hints - I'll mention them in the comments!
  • Any vim-indent-object alternative?
    2 projects | /r/neovim | 18 Jun 2021
    Some of the forks https://github.com/michaeljsmith/vim-indent-object/network seem to be quite ahead, you can probably choose and pick a lot of improvements to your fork, then you take over the world!

What are some alternatives?

When comparing vim-better-whitespace and vim-indent-object you can also consider the following projects:

neovim - Vim-fork focused on extensibility and usability

vim-textobj-user - Vim plugin: Create your own text objects

ws-butler - Unobtrusively trim extraneous white-space *ONLY* in lines edited.

LanguageClient-neovim - Language Server Protocol (LSP) support for vim and neovim.

lessspace.vim - Better whitespace stripping for Vim

vim-textobj-indent - Vim plugin: Text objects for indented blocks of lines

Catppuccino.nvim - 🍨 Catppuccin theme for NeoVim [Moved to: https://github.com/catppuccin/nvim]

neovim-config

vim-workspace - 📑 Automated Vim session management with file auto-save and persistent undo history

vim-indentwise - A Vim plugin for indent-level based motion.

Esopoly - :stuck_out_tongue_closed_eyes: Polyglot written in 7 esoteric programming languages

nvim-treesitter-textobjects