Skip to content

Instantly share code, notes, and snippets.

View telemachus's full-sized avatar

Peter Aronoff telemachus

  • New York City
  • 14:57 (UTC -04:00)
View GitHub Profile

🔰 A beginners guide to create custom cmdline

showcase

Ever wanted to know how noice creates the cmdline or wanted your own one?

No one? Guess it's just me 🥲.

Anyway, this post is a simple tutorial for creating a basic cmdline in neovim.

@MariaSolOs
MariaSolOs / builtin-compl.lua
Last active October 12, 2025 14:46
Built-in completion + snippet Neovim setup
---Utility for keymap creation.
---@param lhs string
---@param rhs string|function
---@param opts string|table
---@param mode? string|string[]
local function keymap(lhs, rhs, opts, mode)
opts = type(opts) == 'string' and { desc = opts }
or vim.tbl_extend('error', opts --[[@as table]], { buffer = bufnr })
mode = mode or 'n'
vim.keymap.set(mode, lhs, rhs, opts)
@pushcx
pushcx / alacritty.toml
Last active October 16, 2025 14:59
a very plain vim colorscheme
[colors.selection]
background = "#859900"
text = "CellBackground"
[colors.vi_mode_cursor]
cursor = "#859900"
text = "CellBackground"
[cursor]
@kylechui
kylechui / dot-repeating.md
Last active September 1, 2025 16:33
A basic overview of how to manage dot-repeating in your Neovim plugin, as well as manipulate it to "force" what action is repeated.

Adding dot-repeat to your Neovim plugin

In Neovim, the . character repeats "the most recent action"; however, this is not always respected by plugin actions. Here we will explore how to build dot-repeat support directly into your plugin, bypassing the requirement of dependencies like repeat.vim.

The Basics

When some buffer-modifying action is performed, Neovim implicitly remembers the operator (e.g. d), motion (e.g. iw), and some other miscellaneous information. When the dot-repeat command is called, Neovim repeats that operator-motion combination. For example, if we type ci"text<Esc>, then we replace the inner contents of some double quotes with text, i.e. "hello world""text". Dot-repeating from here will do the same, i.e. "more samples""text".

Using operatorfunc

A metatable in Lua defines various extraneous behaviors for a table when indexed, modified, interacted with, etc. They are Lua's core metaprogramming feature; most well known for being useful to emulate classes much like an OOP language.

Any table (and userdata) may be assigned a metatable. You can define a metatable for a table as such:

-- Our sample table
local tab = {}
-- Our metatable
local metatable = {
 -- This table is then what holds the metamethods or metafields
package main
import (
"fmt"
)
func fib(n int) int {
fibs := make(map[int]int, n+1)
fibs[0] = 0
fibs[1] = 1

ZSH CheatSheet

This is a cheat sheet for how to perform various actions to ZSH, which can be tricky to find on the web as the syntax is not intuitive and it is generally not very well-documented.

Strings

Description Syntax
Get the length of a string ${#VARNAME}
Get a single character ${VARNAME[index]}
@rgl
rgl / http-server-shutdown.go
Created December 23, 2020 07:02
go http server with graceful shutdown
package main
import (
"context"
"flag"
"log"
"net/http"
"os"
"os/signal"
"time"
@lv10
lv10 / Build VIM with python3
Last active November 25, 2023 23:42
Install Vim 8 with Python, Python 3 support on Ubuntu 20.04
# make sure you don't have any soon to be forgotten version of vim installed
$ sudo apt-get remove --purge vim vim-runtime vim-gnome vim-tiny vim-gui-common
# Install Deps
$ sudo apt-get install build-essential cmake
$ sudo apt-get install python3-dev
#Optional: so vim can be uninstalled again via `dpkg -r vim`
$ sudo apt-get install checkinstall
@roalcantara
roalcantara / XDG.cheat-sheet.md
Last active October 20, 2025 15:55
XDG cheat sheet

XDG - Base Directory Specification

Directories

Base

The intended use-case for BaseDirectories is to query the paths of user-invisible standard directories that have been defined according to the conventions of the operating system the library is running on.