vim Emacs GNU Gnome - sgml/signature GitHub Wiki

Atlassian Products with Official GNU Equivalents

Jira Software

  • Summary: Issue tracking and agile workflow system.
  • GNU Equivalent: GNATS (GNU Bug Tracking System)
  • Notes: Email- and CLI-based bug tracking, suitable for software development tracking but lacks web interface or agile boards.

Confluence

  • Summary: Team collaboration and documentation wiki.
  • GNU Equivalent: GNU Texinfo, GNU Emacs Org-mode
  • Notes: Texinfo for structured manuals and documentation; Org-mode for collaborative note-taking, outlines, and literate programming.

Bamboo

  • Summary: CI/CD pipeline automation and build orchestration.
  • GNU Equivalent: GNU Make, GNU Parallel
  • Notes: Make is the classic build automation tool; Parallel provides parallel execution of jobs in CI-style workflows.

Jira Service Management

  • Summary: Ticketing and IT service desk system.
  • GNU Equivalent: GNATS
  • Notes: While not designed specifically for ITSM, GNATS can be adapted as a basic helpdesk/ticketing system.

Google Workspace Components with GNU Equivalents

Gmail (Email)

  • Summary: Web-based email client with integrated inbox, labels, and threading.
  • GNU Equivalent: GNU Mailutils
  • Notes: A comprehensive mail handling suite with support for reading, sending, and managing messages via POP3, IMAP, and SMTP.

Google Docs (Word Processor)

  • Summary: Real-time collaborative document editor.
  • GNU Equivalent: GNU Emacs + Org-mode, GNU TeXmacs
  • Notes: Emacs with Org-mode supports structured writing and exporting to multiple formats; TeXmacs offers a LaTeX-friendly graphical editor.

Google Sheets (Spreadsheets)

  • Summary: Online spreadsheet with formulas and collaboration.
  • GNU Equivalent: GNU Emacs Org-mode tables
  • Notes: While not graphical, Org-mode tables offer spreadsheet-like logic, formulas, and structure inside plain text documents.

Google Slides (Presentations)

  • Summary: Web-based collaborative slide creation.
  • GNU Equivalent: GNU Emacs Org-mode + Beamer Export, GNU TeXmacs
  • Notes: Org-mode exports structured slide decks via LaTeX Beamer; TeXmacs provides WYSIWYG slide authoring with mathematical content.

Google Calendar

  • Summary: Shared calendar and appointment scheduling.
  • GNU Equivalent: GNU Emacs Calendar + Diary
  • Notes: Emacs includes built-in calendar, diary reminders, and agenda views. Supports alarms and recurring events.

Vim

Troubleshooting

  • sudo apt-get install vim-gui-common
set nocompatible
" set nocompatible fixes arrow keys in insert mode

set backspace=indent,eol,start
" set backspace fix backspace in normal mode
set bs=2
" set bs fixes backspace in insert mode

set autoindent
" set autoindent preseves indentation when pasting text

set exrc

set fileformats=unix,dos,mac

nmap k 
nmap j 
nmap h 
nmap l 
imap  

Vim Cheat Sheet

  1. How do I indent a given number of lines by 4 spaces in Vim?

    Use visual line mode (V) to select the lines, then press > to indent.
    Or use :start,end> to indent a range, e.g. :10,20>.
    Make sure :set shiftwidth=4 is configured to control the indent width.

  2. How do I de-indent lines in Vim?

    Select lines in visual mode with V, then press < to shift left.
    Or use :start,end< to de-indent a range, e.g. :10,20<.

  3. How do I find the next empty newline in Vim?

    Use /^$ to search for a blank line.
    Press n to jump to the next match.

  4. How do I find the next ''' comment block in Vim?

    Use /''' to search for triple single quotes.
    In Python, this often marks a docstring or block comment.

  5. How do I highlight all regex matches in Vim?

    Use :match Search /pattern/ to highlight matches.
    Or enable persistent highlighting with :set hlsearch and search using /pattern.

  6. How do I find and replace all regex matches with an empty string in Vim?

    Use :%s/pattern//g to remove all matches of pattern.

  7. How do I find and replace all regex matches with a newline in Vim?

    Use :%s/pattern/\r/g\r inserts a newline in Vim’s regex engine.

  8. How do I find and replace all emojis with an empty string in Vim?

    Use :%s/[\u{1F600}-\u{1F64F}]//g to remove emoticons.
    Extend the range for other emoji blocks as needed.
    Requires :set encoding=utf-8 and Unicode-compatible Vim build.

  9. How do I persist the Vim cache of the command history between instances of Vim?

    Add set viminfo='100,<1000,s10,h to your .vimrc.
    This enables saving command history, search history, and more.
    Vim writes this to a .viminfo file on exit and loads it on startup.

  10. How do I persist the Vim cache of the clipboard between instances of Vim?

Vim does not persist clipboard contents across sessions by default.
To simulate persistence, you can write clipboard contents to a register or file manually.
For example: :let @a = @+ saves the system clipboard to register a.
You could then write it to a file with :put a | w >> ~/.vim_clipboard_cache.

  1. How do I print the vimrc from within Vim?

Use :scriptnames to see all loaded scripts including your .vimrc.
Or use :e $MYVIMRC to open it directly.
To print its contents to the terminal, use :redir like this:
:redir => output | silent! execute 'e $MYVIMRC' | redir END | echo output

  1. How do I update vimrc from within Vim?

Use :e $MYVIMRC to open your vimrc file directly.
Make edits as needed, then save with :w.
To apply changes without restarting Vim, run :source $MYVIMRC.

Vim Script

Refactoring

Registration

To register the Vim script with Vim, follow these steps:

  • Save the Script: Save the Vim script (the one I provided earlier) to a file with a .vim extension. For example, you can save it as fstring_conversion.vim.

  • Open Vim: Open Vim by running vim in your terminal.

  • Edit Your .vimrc File: Add the following line to your ~/.vimrc : source /path/to/your/fstring_conversion.vim

  • Replace /path/to/your/fstring_conversion.vim with the actual path to the script file.

  • Reload Your .vimrc:

  • After saving the changes to your .vimrc file, reload it in Vim by typing: :source ~/.vimrc

Usage

  • Open your Python file in Vim.

  • Place the cursor on the line with the f-string you want to convert.

  • execute the call command with the name of the function:

    :call ConvertFStringToPercentOperator()

Visual Mode Syntax

" Find variables within f-strings and rewrite using '%'
function! ConvertFStringToPercentOperator()
    let l:line_number = 1
    while l:line_number <= line('$')
        let l:line = getline(l:line_number)
        if l:line =~# "print(f'\([^']*\)')"
            let l:variable_name = matchstr(l:line, "'\([^']*\)'")
            let l:replacement = printf("'%s: %%s'", l:variable_name)
            let l:line = substitute(l:line, "'\([^']*\)'", l:replacement, "")
            call setline(l:line_number, l:line)
        endif
        let l:line_number += 1
    endwhile
endfunction

Standalone Syntax

" Open the file
edit path/to/your/file.txt

" Search for f-strings and replace them
%s/print(f'\([^']*\): \({[^}]*}\)')/print("\1: %s", \2)/g

" Save and close the file
wq

Run it as follows:

vim -c 'source example.vim' -c 'qa'

Deletion

Delete between quotes: d/' + enter

Delete all blank lines: g/^$/d

Delete without copying: _d + d or the number of lines

Delete the first character from diff formatted code: :1,$ s/^[+]//g

Search and Replace

To Search for all line beginnings and replace them with a single quote, do the following: :%s/^/'/g

Insertion

Insert p tags into blank lines: :1,$ s/^$/

\n/g

Matching Tags

  • Place the cursor on the tag.
  • Enter visual mode by pressing v then press eiter a+t or i+t for the outer/inner tag.
  • Press o or O to jump between the tags.

Emacs

Describe Bindings

C-h b

Sample files

Cheatsheet

Overrides

References

⚠️ **GitHub.com Fallback** ⚠️