From 17622ccf46c963da23ef6f5623313a725fe33bb1 Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Mon, 29 Nov 2021 16:20:30 -0700 Subject: [PATCH] maint --- 041a1acc.html | 2 +- 19172b64.html | 4 +-- 349ceffd.html | 2 +- 38003bd5.html | 2 +- 56653cb1.html | 2 +- 6d0a076e.html | 2 +- 72e6c820.html | 4 +-- 73dcbcc7.html | 2 +- 82ded935.html | 4 +-- 9227847e.html | 2 +- 92598822.html | 2 +- 96fc3093.html | 4 +-- 9b74f625.html | 2 +- 9db45ab6.html | 2 +- aab45963.html | 2 +- acc60422.html | 2 +- b364352b.html | 2 +- b926d9bd.html | 2 +- c4e96daf.html | 4 +-- c6a6cf84.html | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++ cache.json | 2 +- d2e178e0.html | 2 +- da69e0f5.html | 2 +- dc879f80.html | 2 +- ec21e3f5.html | 2 +- ec672cb5.html | 2 +- f0b50398.html | 2 +- f0e5cfc1.html | 2 +- fa6a31b4.html | 2 +- impulse.html | 2 +- index.html | 2 +- 31 files changed, 105 insertions(+), 35 deletions(-) create mode 100644 c6a6cf84.html diff --git a/041a1acc.html b/041a1acc.html index 2b7a6f1..b9d456e 100644 --- a/041a1acc.html +++ b/041a1acc.html @@ -1 +1 @@ -a self-hosted git stack - zettel.thermokar.st
\ No newline at end of file +a self-hosted git stack - zettel.thermokar.st
\ No newline at end of file diff --git a/19172b64.html b/19172b64.html index 9371364..f288971 100644 --- a/19172b64.html +++ b/19172b64.html @@ -1,4 +1,4 @@ -specifying a range when running a ! shell command filters - zettel.thermokar.st

specifying a range when running a ! shell command filters

Specifying a range when running a ! shell command filters the range through the specified shell command by piping the range’s content into the shell command via stdin and replacing the range with the shell command’s stdout.

Running

:1,10!sort -r

on

2
+specifying a range when running a ! shell command filters - zettel.thermokar.st

specifying a range when running a ! shell command filters

Specifying a range when running a ! shell command filters the range through the specified shell command by piping the range’s content into the shell command via stdin and replacing the range with the shell command’s stdout.

Running

:1,10!sort -r

on

2
 3
 7
 1
@@ -16,4 +16,4 @@
 3
 2
 1
-0
\ No newline at end of file +0
\ No newline at end of file diff --git a/349ceffd.html b/349ceffd.html index f8390ae..3e4c391 100644 --- a/349ceffd.html +++ b/349ceffd.html @@ -1 +1 @@ -mark basics - zettel.thermokar.st

mark basics

m{a-zA-Z}: set a “bookmark” at a cursor position.

'{mark}: jumps the cursor to first non-whitespace character on the line with.

`{mark}: jump the cursor to the exact mark position.

Uppercase marks are global, and by default are persisted across sessions.

\ No newline at end of file +mark basics - zettel.thermokar.st

mark basics

m{a-zA-Z}: set a “bookmark” at a cursor position.

'{mark}: jumps the cursor to first non-whitespace character on the line with.

`{mark}: jump the cursor to the exact mark position.

Uppercase marks are global, and by default are persisted across sessions.

\ No newline at end of file diff --git a/38003bd5.html b/38003bd5.html index 60e64c2..6bfaecd 100644 --- a/38003bd5.html +++ b/38003bd5.html @@ -1 +1 @@ -search is a motion - zettel.thermokar.st

search is a motion

Don’t forget, search is a motion, and can be combined with other actions, like d (delete): d/foo<CR>.

\ No newline at end of file +search is a motion - zettel.thermokar.st

search is a motion

Don’t forget, search is a motion, and can be combined with other actions, like d (delete): d/foo<CR>.

\ No newline at end of file diff --git a/56653cb1.html b/56653cb1.html index 6b884e9..348ce85 100644 --- a/56653cb1.html +++ b/56653cb1.html @@ -1 +1 @@ -the expression register - zettel.thermokar.st

the expression register

The expression register (=) can be used to evaluate expressions, like 2+3. If this register is used while in Insert mode (<C-r>=), the results of the expression will be inserted after the expression is evaluated.

\ No newline at end of file +the expression register - zettel.thermokar.st

the expression register

The expression register (=) can be used to evaluate expressions, like 2+3. If this register is used while in Insert mode (<C-r>=), the results of the expression will be inserted after the expression is evaluated.

\ No newline at end of file diff --git a/6d0a076e.html b/6d0a076e.html index 30ff639..8637b23 100644 --- a/6d0a076e.html +++ b/6d0a076e.html @@ -1 +1 @@ -display lines - zettel.thermokar.st

display lines

Interacting with display lines (vs real lines) is easier when you prefix motion commands with a g.

\ No newline at end of file +display lines - zettel.thermokar.st

display lines

Interacting with display lines (vs real lines) is easier when you prefix motion commands with a g.

\ No newline at end of file diff --git a/72e6c820.html b/72e6c820.html index 70fe6b5..114d489 100644 --- a/72e6c820.html +++ b/72e6c820.html @@ -1,4 +1,4 @@ -check non-trivial gitignore patterns using git check-ignore - zettel.thermokar.st

check non-trivial gitignore patterns using git check-ignore

today i ran into an issue where i tried creating a new bin/ dir in a git repo, and trying to add the files within to a new commit, but was greeted by:

$ git add bin/README.md
+check non-trivial gitignore patterns using git check-ignore - zettel.thermokar.st

check non-trivial gitignore patterns using git check-ignore

today i ran into an issue where i tried creating a new bin/ dir in a git repo, and trying to add the files within to a new commit, but was greeted by:

$ git add bin/README.md
 
 The following paths are ignored by one of your .gitignore files:
 bin
@@ -7,4 +7,4 @@ hint: Turn this message off by running
 hint: "git config advice.addIgnoredFile false"

confused, i ran a simple grep on the project’s .gitignore:

$ grep bin .gitignore
 

which yielded nothing. i was pretty sure i didn’t have that pattern set in my global gitignore, either.

a quick internet search turned up a git util that is new to me:

https://git-scm.com/docs/git-check-ignore

using this command, i was able to trace the exact line responsible:

git check-ignore -v bin
 
-.gitignore:123:[Bb]in   bin

ohhhhh, oops. well, that makes sense. neat! this could’ve been solved with a more sophisticated grep pattern, but who has time for that?

\ No newline at end of file +.gitignore:123:[Bb]in bin

ohhhhh, oops. well, that makes sense. neat! this could’ve been solved with a more sophisticated grep pattern, but who has time for that?

\ No newline at end of file diff --git a/73dcbcc7.html b/73dcbcc7.html index 6f3a7af..269353c 100644 --- a/73dcbcc7.html +++ b/73dcbcc7.html @@ -1 +1 @@ -<C-d> in command mode presents an auto-completion list - zettel.thermokar.st

<C-d> in command mode presents an auto-completion list

\ No newline at end of file +<C-d> in command mode presents an auto-completion list - zettel.thermokar.st

<C-d> in command mode presents an auto-completion list

\ No newline at end of file diff --git a/82ded935.html b/82ded935.html index e46ebc5..ffcb15d 100644 --- a/82ded935.html +++ b/82ded935.html @@ -1,7 +1,7 @@ -command mode ranges based on patterns - zettel.thermokar.st

command mode ranges based on patterns

In command mode you can specify a range of lines to operate on, based on patterns, rather than absolute (or relative line numbers). This can be a great way to isolate changes without looking up the individual line numbers.

:/start/,/end/cmd<CR>

On a Python file, this might look like:

def main():
+command mode ranges based on patterns - zettel.thermokar.st

command mode ranges based on patterns

In command mode you can specify a range of lines to operate on, based on patterns, rather than absolute (or relative line numbers). This can be a great way to isolate changes without looking up the individual line numbers.

:/start/,/end/cmd<CR>

On a Python file, this might look like:

def main():
     foo = do_something()
     bar = do_something_else(foo)
     return bar
:/def main/,/return/s/foo/baz/g<CR>

results in:

def main():
     baz = do_something()
     bar = do_something_else(baz)
-    return bar
\ No newline at end of file + return bar
\ No newline at end of file diff --git a/9227847e.html b/9227847e.html index 1673e99..41183b5 100644 --- a/9227847e.html +++ b/9227847e.html @@ -1 +1 @@ -sourdough pretzel rolls - zettel.thermokar.st

sourdough pretzel rolls

ingredients and supplies

dough

  • 2/3c + 3T warm water
  • 1T yeast
  • 1c sourdough starter (based on 1:1 water-to-flour ratio)
  • 4T olive oil
  • 2t sugar
  • 2t salt
  • 4c + 3T flour

poaching solution

  • 8c to 10c boiling water
  • 1/4c baking soda

glaze and topping

  • 1 egg white
  • 1T cold water
  • pretzel salt to taste

tools

  • stand mixer
  • baking sheets
  • parchment paper
  • large wide pot for poaching
  • tongs
  • slotted spoon
  • brush
  • razor blade or sharp knife

instructions

dough

  • in stand mixer:
    • combine water and yeast
    • let sit for 5 to 10 minutes
    • to the foam add:
      • sourdough starter
      • olive oil
      • sugar
      • salt
      • flour
    • mix until smooth, dough will likely be slightly dry
  • cover and let rise in a warm place until doubled in volume (1-2 hours typically)

shaping

  • line baking sheets with parchment paper
  • divide dough in 18 equal portions
  • form each portion into a tight ball by roughly shaping, then pulling dough down to the underside of the ball repeatedly
    • the dry surface should form a taught skin
    • make sure the bottom is crimped and sealed with no creases
  • cover and let rest ~30 minutes

poaching

  • while resting, boiling water for poaching solution, add to poaching pot
  • wait to add the baking soda until you’re ready to poach
  • before poaching, preheat the oven to 425F (this can take a while)
  • poach the rolls
    • put a few rolls (~4) into the solution, right-side up
    • poach bottoms for 30 seconds (this helps seal any remaining creases)
    • using tongs, flip each roll right-side down
    • poach tops for 30 seconds
    • using a slotted spoon, remove each roll and place back on baking sheet

baking

  • prepare the glaze
    • mix egg white and cold water
  • brush glaze onto the rolls
    • apply liberally
    • coat the sides, too
  • slice a deep x into the top of each roll
  • sprinkle with pretzel salt to taste
  • place baking sheets in center of preheated oven
  • bake for 15-20 minutes, until golden brown
  • allow to cool

notes

  • the instructions are meant to be followed sequentially
  • c: cup, T: tablespoon, t: teaspoon
  • block out a bit of time for this
  • this recipe is easily doubled, no adjustments necessary, just *2
  • be prepared to make a mess when poaching
  • they will be pretty ugly post-poaching
  • you can’t really slice too deep
  • the order matters - don’t slice and then glaze - the glaze will likely seal the top shut
  • start baking as soon as you slice
\ No newline at end of file +sourdough pretzel rolls - zettel.thermokar.st

sourdough pretzel rolls

ingredients and supplies

dough

  • 2/3c + 3T warm water
  • 1T yeast
  • 1c sourdough starter (based on 1:1 water-to-flour ratio)
  • 4T olive oil
  • 2t sugar
  • 2t salt
  • 4c + 3T flour

poaching solution

  • 8c to 10c boiling water
  • 1/4c baking soda

glaze and topping

  • 1 egg white
  • 1T cold water
  • pretzel salt to taste

tools

  • stand mixer
  • baking sheets
  • parchment paper
  • large wide pot for poaching
  • tongs
  • slotted spoon
  • brush
  • razor blade or sharp knife

instructions

dough

  • in stand mixer:
    • combine water and yeast
    • let sit for 5 to 10 minutes
    • to the foam add:
      • sourdough starter
      • olive oil
      • sugar
      • salt
      • flour
    • mix until smooth, dough will likely be slightly dry
  • cover and let rise in a warm place until doubled in volume (1-2 hours typically)

shaping

  • line baking sheets with parchment paper
  • divide dough in 18 equal portions
  • form each portion into a tight ball by roughly shaping, then pulling dough down to the underside of the ball repeatedly
    • the dry surface should form a taught skin
    • make sure the bottom is crimped and sealed with no creases
  • cover and let rest ~30 minutes

poaching

  • while resting, boiling water for poaching solution, add to poaching pot
  • wait to add the baking soda until you’re ready to poach
  • before poaching, preheat the oven to 425F (this can take a while)
  • poach the rolls
    • put a few rolls (~4) into the solution, right-side up
    • poach bottoms for 30 seconds (this helps seal any remaining creases)
    • using tongs, flip each roll right-side down
    • poach tops for 30 seconds
    • using a slotted spoon, remove each roll and place back on baking sheet

baking

  • prepare the glaze
    • mix egg white and cold water
  • brush glaze onto the rolls
    • apply liberally
    • coat the sides, too
  • slice a deep x into the top of each roll
  • sprinkle with pretzel salt to taste
  • place baking sheets in center of preheated oven
  • bake for 15-20 minutes, until golden brown
  • allow to cool

notes

  • the instructions are meant to be followed sequentially
  • c: cup, T: tablespoon, t: teaspoon
  • block out a bit of time for this
  • this recipe is easily doubled, no adjustments necessary, just *2
  • be prepared to make a mess when poaching
  • they will be pretty ugly post-poaching
  • you can’t really slice too deep
  • the order matters - don’t slice and then glaze - the glaze will likely seal the top shut
  • start baking as soon as you slice
\ No newline at end of file diff --git a/92598822.html b/92598822.html index 890cb7a..1726c54 100644 --- a/92598822.html +++ b/92598822.html @@ -1 +1 @@ -self-hosted - zettel.thermokar.st
\ No newline at end of file +self-hosted - zettel.thermokar.st
\ No newline at end of file diff --git a/96fc3093.html b/96fc3093.html index e392837..b25bbb8 100644 --- a/96fc3093.html +++ b/96fc3093.html @@ -1,4 +1,4 @@ -:read allows piping shell stdout into a buffer - zettel.thermokar.st

:read allows piping shell stdout into a buffer

:read !ls<CR>

for example:

041a1acc.md
+:read allows piping shell stdout into a buffer - zettel.thermokar.st

:read allows piping shell stdout into a buffer

:read !ls<CR>

for example:

041a1acc.md
 56653cb1.md
 73dcbcc7.md
 82ded935.md
@@ -20,4 +20,4 @@ ec672cb5.md
 fa6a31b4.md
 index.md
 neuron.dhall
-static
\ No newline at end of file +static
\ No newline at end of file diff --git a/9b74f625.html b/9b74f625.html index 8b73eea..1851695 100644 --- a/9b74f625.html +++ b/9b74f625.html @@ -1 +1 @@ -software - zettel.thermokar.st
\ No newline at end of file +software - zettel.thermokar.st
\ No newline at end of file diff --git a/9db45ab6.html b/9db45ab6.html index d4adc42..d6a1da1 100644 --- a/9db45ab6.html +++ b/9db45ab6.html @@ -1 +1 @@ -focus requires a rigorous contract - zettel.thermokar.st

focus requires a rigorous contract

Balancing many disparate tasks is good for my morale (“Wow! If I get bored with this one thing, I can just do something else!”), but feeling “behind” is most decidedly not good for my morale. Timeblocking and scheduling are great, but they require discipline. I like to think that I am effectively entering into a short-term contract with myself. If the terms aren’t clear, the chances of failure go up (significantly). Interestingly, I think this scenario represents a conflict of interest: I am basically the party responsible for monitoring that contract, as well as the one actually executing the work.

Besides having a clear plan (a statement of work) I think the next biggest concern involves distractions. In my experience, you can’t get rid of distractions, but you can be judicious about what distractions you choose to entertain. That gets to the same end-goal of choosing when to focus on distractions, but puts a different emphasis on the problem.

The “hard” part (to me) is that developing the intuition of what to do (and when) is much easier said than done. Maybe because it is a constantly moving target?

\ No newline at end of file +focus requires a rigorous contract - zettel.thermokar.st

focus requires a rigorous contract

Balancing many disparate tasks is good for my morale (“Wow! If I get bored with this one thing, I can just do something else!”), but feeling “behind” is most decidedly not good for my morale. Timeblocking and scheduling are great, but they require discipline. I like to think that I am effectively entering into a short-term contract with myself. If the terms aren’t clear, the chances of failure go up (significantly). Interestingly, I think this scenario represents a conflict of interest: I am basically the party responsible for monitoring that contract, as well as the one actually executing the work.

Besides having a clear plan (a statement of work) I think the next biggest concern involves distractions. In my experience, you can’t get rid of distractions, but you can be judicious about what distractions you choose to entertain. That gets to the same end-goal of choosing when to focus on distractions, but puts a different emphasis on the problem.

The “hard” part (to me) is that developing the intuition of what to do (and when) is much easier said than done. Maybe because it is a constantly moving target?

\ No newline at end of file diff --git a/aab45963.html b/aab45963.html index ba6d8e9..8d05563 100644 --- a/aab45963.html +++ b/aab45963.html @@ -1 +1 @@ -the matrix ecosystem - zettel.thermokar.st

the matrix ecosystem

matrix protocol

  • open spec: decentralised conversation store
  • end-to-end encryption
  • federated: a lot like email
  • you sign up for an acct on a homeserver (could be public, private, etc)
  • just like email, that acct can communicate with any other acct, regardless of their homeserver
  • bridges: glues multiple non-matrix services together: facebook chat, sms, etc

setting up a homeserver

https://github.com/spantaleev/matrix-docker-ansible-deploy

  • subdomain config seems to be pretty hard-coded
\ No newline at end of file +the matrix ecosystem - zettel.thermokar.st

the matrix ecosystem

matrix protocol

  • open spec: decentralised conversation store
  • end-to-end encryption
  • federated: a lot like email
  • you sign up for an acct on a homeserver (could be public, private, etc)
  • just like email, that acct can communicate with any other acct, regardless of their homeserver
  • bridges: glues multiple non-matrix services together: facebook chat, sms, etc

setting up a homeserver

https://github.com/spantaleev/matrix-docker-ansible-deploy

  • subdomain config seems to be pretty hard-coded
\ No newline at end of file diff --git a/acc60422.html b/acc60422.html index c1c78a8..8b7fc0f 100644 --- a/acc60422.html +++ b/acc60422.html @@ -1 +1 @@ -practices - zettel.thermokar.st
\ No newline at end of file +practices - zettel.thermokar.st
\ No newline at end of file diff --git a/b364352b.html b/b364352b.html index 90580e8..fd64d25 100644 --- a/b364352b.html +++ b/b364352b.html @@ -1 +1 @@ -use c instead of deleting and inserting in visual mode - zettel.thermokar.st

use c instead of deleting and inserting in visual mode

Using the c change action in visual mode is very convenient! For some reason I often neglect that action when operating in visual mode, instead opting for two actions: delete and insert. This seems like a habit worth breaking!

\ No newline at end of file +use c instead of deleting and inserting in visual mode - zettel.thermokar.st

use c instead of deleting and inserting in visual mode

Using the c change action in visual mode is very convenient! For some reason I often neglect that action when operating in visual mode, instead opting for two actions: delete and insert. This seems like a habit worth breaking!

\ No newline at end of file diff --git a/b926d9bd.html b/b926d9bd.html index dd8fc6b..3644a9e 100644 --- a/b926d9bd.html +++ b/b926d9bd.html @@ -1 +1 @@ -vim - zettel.thermokar.st
\ No newline at end of file +vim - zettel.thermokar.st
\ No newline at end of file diff --git a/c4e96daf.html b/c4e96daf.html index 4e12d24..69dd310 100644 --- a/c4e96daf.html +++ b/c4e96daf.html @@ -1,6 +1,6 @@ -adding a new user account on a linux system - zettel.thermokar.st

adding a new user account on a linux system

adduser $USER
+adding a new user account on a linux system - zettel.thermokar.st

adding a new user account on a linux system

adduser $USER
 usermod -aG sudo $USER
 # if account requires password-less elevation:
 sudo visudo  # add an entry like: $USER ALL=(ALL) NOPASSWD:ALL
 # confirm that the account works as expected
-su - $USER
\ No newline at end of file +su - $USER
\ No newline at end of file diff --git a/c6a6cf84.html b/c6a6cf84.html new file mode 100644 index 0000000..bda3e98 --- /dev/null +++ b/c6a6cf84.html @@ -0,0 +1,70 @@ +a self-hosted podcast playback station - zettel.thermokar.st

a self-hosted podcast playback station

components

hardware

  • raspberry pi 3
  • wired speakers

software

general setup

  1. set up headless raspbian, connect wifi, set up user acct, and podcast dir
sudo raspi-config
+mkdir -p /home/pi/podcasts/{playlists,podcast1,podcast2,podcast3}
  1. install mopidy + extensions (see links above for installation info)
# edit /etc/mopidy/mopidy.conf
+[local]
+enabled = true
+media_dir = /home/pi/podcasts
+scan_timeout = 10000
+
+[file]
+enabled = false
+
+[http]
+enabled = true
+hostname = 0.0.0.0
+port = 6680
+
+[mpd]
+enabled = true
+hostname = 0.0.0.0
+port = 6600
+
+[logging]
+verbosity = 1
+
+[m3u]
+enabled = true
+playlists_dir = /home/pi/podcasts/playlists
  1. compile and install castget (see link above for installation info)
# edit /home/pi/castgetrc
+
+# note, the keys in this config should correspond with the podcast dirs
+# created in step 1 above
+
+[podcast1]
+url=http://url.to/podcast1
+spool=/home/pi/podcasts/podcast1
+filename=%(date) %(title).mp3
+
+[podcast2]
+url=http://url.to/podcast2
+spool=/home/pi/podcasts/podcast2
+filename=%(date) %(title).mp3
+
+...
  1. create sync.sh script with the following content (ymmv, use at your own risk):
#!/usr/bin/env bash
+
+set -e
+
+# fetch podcasts
+/usr/local/bin/castget -C /home/pi/castgetrc -1 "$1"
+
+playlist="/home/pi/podcasts/playlists/$1.m3u"
+files=(/home/pi/podcasts/$1/*.mp3)
+
+# remove stale playlist
+if [ -f "$playlist" ]
+then
+  rm "$playlist"
+fi
+
+# build new playlist with newest entries _first_
+for (( i=${#files[@]}-1; i>=0; i-- ))
+do
+  fp="${files[$i]}"
+  fn=$(basename -- "$fp")
+
+  # next, we'll make these all relative fps
+  quoted=$(python -c "from urllib import parse, sys; print(parse.quote(sys.argv[1]))" "$fn")
+  echo "local:track:$1/$quoted" >> "$playlist"
+done
+
+sudo mopidyctl local scan
  1. add cron jobs
5 * * * * /home/pi/sync.sh podcast1 >> /path/to/podcast1.log
+0,15,30,45 15,16,17 * * * /home/pi/sync.sh podcast2 >> /path/to/podcast2.log
+0 0 * * 5 /home/pi/sync.sh podcast3 >> /path/to/podcast3.log
  1. add any additional internet radion streams into one or more playlist files in /home/pi/podcasts/playlists.
  2. enjoy!
\ No newline at end of file diff --git a/cache.json b/cache.json index 9951136..c8fa4fc 100644 --- a/cache.json +++ b/cache.json @@ -1 +1 @@ -{"Graph":{"adjacencyMap":{"041a1acc":{"c4e96daf":["cf",[]]},"fa6a31b4":{},"19172b64":{},"72e6c820":{},"92598822":{"041a1acc":["folge",[]],"aab45963":["folge",[]]},"6d0a076e":{},"dc879f80":{"9db45ab6":["cf",[]]},"b364352b":{},"9227847e":{},"ec21e3f5":{},"d2e178e0":{},"96fc3093":{},"38003bd5":{},"f0b50398":{},"9db45ab6":{},"b926d9bd":{"fa6a31b4":["folge",[]],"19172b64":["folge",[]],"6d0a076e":["folge",[]],"b364352b":["folge",[]],"ec21e3f5":["folge",[]],"d2e178e0":["folge",[]],"96fc3093":["folge",[]],"38003bd5":["folge",[]],"f0b50398":["folge",[]],"349ceffd":["folge",[]],"da69e0f5":["folge",[]],"82ded935":["folge",[]],"56653cb1":["folge",[]],"73dcbcc7":["folge",[]],"ec672cb5":["folge",[]],"f0e5cfc1":["folge",[]]},"349ceffd":{},"da69e0f5":{},"aab45963":{},"9b74f625":{"92598822":["folge",[]],"b926d9bd":["folge",[]],"c4e96daf":["folge",[]]},"82ded935":{},"56653cb1":{},"acc60422":{"dc879f80":["folge",[]],"9db45ab6":["folge",[]]},"index":{"041a1acc":["cf",[]],"dc879f80":["cf",[]],"9227847e":["cf",[]],"9db45ab6":["cf",[]],"aab45963":["cf",[]]},"c4e96daf":{},"73dcbcc7":{},"ec672cb5":{},"f0e5cfc1":{}},"vertices":{"041a1acc":{"Path":"./041a1acc.md","Slug":"041a1acc","Date":"2020-12-10T13:22","ID":"041a1acc","Meta":{"date":"2020-12-10T13:22","tags":["notes","software","timeline"]},"Title":"a self-hosted git stack"},"fa6a31b4":{"Path":"./fa6a31b4.md","Slug":"fa6a31b4","Date":"2021-03-10T07:40","ID":"fa6a31b4","Meta":{"date":"2021-03-10T07:40","tags":["vim"]},"Title":"replace mode"},"19172b64":{"Path":"./19172b64.md","Slug":"19172b64","Date":"2021-03-14T15:48","ID":"19172b64","Meta":{"date":"2021-03-14T15:48","tags":["vim"]},"Title":"specifying a range when running a ! shell command filters"},"72e6c820":{"Path":"./72e6c820.md","Slug":"72e6c820","Date":"2021-03-19T09:30","ID":"72e6c820","Meta":{"date":"2021-03-19T09:30","tags":["git"]},"Title":"check non-trivial gitignore patterns using git check-ignore"},"92598822":{"Path":"./92598822.md","Slug":"92598822","ID":"92598822","Meta":{"tags":[]},"Title":"self-hosted"},"6d0a076e":{"Path":"./6d0a076e.md","Slug":"6d0a076e","Date":"2021-03-29T21:14","ID":"6d0a076e","Meta":{"date":"2021-03-29T21:14","tags":["vim"]},"Title":"display lines"},"dc879f80":{"Path":"./dc879f80.md","Slug":"dc879f80","Date":"2021-01-29T12:00","ID":"dc879f80","Meta":{"date":"2021-01-29T12:00","tags":["practices","productivity","timeline"]},"Title":"how i stay (somewhat) organized"},"b364352b":{"Path":"./b364352b.md","Slug":"b364352b","Date":"2021-03-10T18:41","ID":"b364352b","Meta":{"date":"2021-03-10T18:41","tags":["vim"]},"Title":"use c instead of deleting and inserting in visual mode"},"9227847e":{"Path":"./9227847e.md","Slug":"9227847e","Date":"2020-11-22T11:18","ID":"9227847e","Meta":{"date":"2020-11-22T11:18","tags":["bread","recipe","timeline"]},"Title":"sourdough pretzel rolls"},"ec21e3f5":{"Path":"./ec21e3f5.md","Slug":"ec21e3f5","Date":"2021-03-14T14:29","ID":"ec21e3f5","Meta":{"date":"2021-03-14T14:29","tags":["vim"]},"Title":"the copy command doesn’t use a register"},"d2e178e0":{"Path":"./d2e178e0.md","Slug":"d2e178e0","Date":"2021-03-14T14:34","ID":"d2e178e0","Meta":{"date":"2021-03-14T14:34","tags":["vim"]},"Title":"the :normal command runs normal commands on multiple lines"},"96fc3093":{"Path":"./96fc3093.md","Slug":"96fc3093","Date":"2021-03-14T15:23","ID":"96fc3093","Meta":{"date":"2021-03-14T15:23","tags":["vim"]},"Title":":read allows piping shell stdout into a buffer"},"38003bd5":{"Path":"./38003bd5.md","Slug":"38003bd5","Date":"2021-03-29T21:21","ID":"38003bd5","Meta":{"date":"2021-03-29T21:21","tags":["vim"]},"Title":"search is a motion"},"f0b50398":{"Path":"./f0b50398.md","Slug":"f0b50398","Date":"2021-03-29T21:30","ID":"f0b50398","Meta":{"date":"2021-03-29T21:30","tags":["vim"]},"Title":"the jump list is primarily for between-file motions"},"9db45ab6":{"Path":"./9db45ab6.md","Slug":"9db45ab6","Date":"2020-11-09T16:48","ID":"9db45ab6","Meta":{"date":"2020-11-09T16:48","tags":["practices","productivity","timeline"]},"Title":"focus requires a rigorous contract"},"b926d9bd":{"Path":"./b926d9bd.md","Slug":"b926d9bd","ID":"b926d9bd","Meta":{"tags":[]},"Title":"vim"},"349ceffd":{"Path":"./349ceffd.md","Slug":"349ceffd","Date":"2021-03-29T21:24","ID":"349ceffd","Meta":{"date":"2021-03-29T21:24","tags":["vim"]},"Title":"mark basics"},"da69e0f5":{"Path":"./da69e0f5.md","Slug":"da69e0f5","Date":"2021-03-14T15:16","ID":"da69e0f5","Meta":{"date":"2021-03-14T15:16","tags":["vim"]},"Title":" in command mode will insert the word under the cursor in the cmd"},"aab45963":{"Path":"./aab45963.md","Slug":"aab45963","Date":"2020-12-08T10:29","ID":"aab45963","Meta":{"date":"2020-12-08T10:29","tags":["notes","software","timeline"]},"Title":"the matrix ecosystem"},"9b74f625":{"Path":"./9b74f625.md","Slug":"9b74f625","ID":"9b74f625","Meta":{"tags":[]},"Title":"software"},"82ded935":{"Path":"./82ded935.md","Slug":"82ded935","Date":"2021-03-14T14:12","ID":"82ded935","Meta":{"date":"2021-03-14T14:12","tags":["vim"]},"Title":"command mode ranges based on patterns"},"56653cb1":{"Path":"./56653cb1.md","Slug":"56653cb1","Date":"2021-03-10T07:38","ID":"56653cb1","Meta":{"date":"2021-03-10T07:38","tags":["vim"]},"Title":"the expression register"},"acc60422":{"Path":"./acc60422.md","Slug":"acc60422","ID":"acc60422","Meta":{"tags":[]},"Title":"practices"},"index":{"Path":"./index.md","Slug":"index","ID":"index","Meta":{"tags":[]},"Title":"index"},"c4e96daf":{"Path":"./c4e96daf.md","Slug":"c4e96daf","Date":"2020-12-13T16:43","ID":"c4e96daf","Meta":{"date":"2020-12-13T16:43","tags":["admin","server","tech"]},"Title":"adding a new user account on a linux system"},"73dcbcc7":{"Path":"./73dcbcc7.md","Slug":"73dcbcc7","Date":"2021-03-14T15:15","ID":"73dcbcc7","Meta":{"date":"2021-03-14T15:15","tags":["vim"]},"Title":" in command mode presents an auto-completion list"},"ec672cb5":{"Path":"./ec672cb5.md","Slug":"ec672cb5","Date":"2021-03-14T15:19","ID":"ec672cb5","Meta":{"date":"2021-03-14T15:19","tags":["vim"]},"Title":"q: opens the command history window"},"f0e5cfc1":{"Path":"./f0e5cfc1.md","Slug":"f0e5cfc1","Date":"2021-03-29T21:32","ID":"f0e5cfc1","Meta":{"date":"2021-03-29T21:32","tags":["vim"]},"Title":"the gf motion will jump to the filename under the cursor"}}},"NeuronVersion":"1.9.25.0","Config":{"editUrl":"https://github.com/thermokarst/zettel/edit/main/","plugins":["neuronignore","links","tags","uptree","feed"],"siteBaseUrl":"https://zettel.thermokar.st","author":"Matthew Ryan Dillon","siteTitle":"zettel.thermokar.st","theme":"black"},"Errors":{}} \ No newline at end of file +{"Graph":{"adjacencyMap":{"041a1acc":{"c4e96daf":["cf",[]]},"fa6a31b4":{},"19172b64":{},"72e6c820":{},"92598822":{"041a1acc":["folge",[]],"aab45963":["folge",[]]},"6d0a076e":{},"dc879f80":{"9db45ab6":["cf",[]]},"b364352b":{},"9227847e":{},"ec21e3f5":{},"d2e178e0":{},"96fc3093":{},"38003bd5":{},"f0b50398":{},"9db45ab6":{},"b926d9bd":{"fa6a31b4":["folge",[]],"19172b64":["folge",[]],"6d0a076e":["folge",[]],"b364352b":["folge",[]],"ec21e3f5":["folge",[]],"d2e178e0":["folge",[]],"96fc3093":["folge",[]],"38003bd5":["folge",[]],"f0b50398":["folge",[]],"349ceffd":["folge",[]],"da69e0f5":["folge",[]],"82ded935":["folge",[]],"56653cb1":["folge",[]],"73dcbcc7":["folge",[]],"ec672cb5":["folge",[]],"f0e5cfc1":["folge",[]]},"349ceffd":{},"da69e0f5":{},"aab45963":{},"9b74f625":{"92598822":["folge",[]],"b926d9bd":["folge",[]],"c4e96daf":["folge",[]]},"82ded935":{},"56653cb1":{},"c6a6cf84":{},"acc60422":{"dc879f80":["folge",[]],"9db45ab6":["folge",[]]},"index":{"041a1acc":["cf",[]],"dc879f80":["cf",[]],"9227847e":["cf",[]],"9db45ab6":["cf",[]],"aab45963":["cf",[]],"c6a6cf84":["cf",[]]},"c4e96daf":{},"73dcbcc7":{},"ec672cb5":{},"f0e5cfc1":{}},"vertices":{"041a1acc":{"Path":"./041a1acc.md","Slug":"041a1acc","Date":"2020-12-10T13:22","ID":"041a1acc","Meta":{"date":"2020-12-10T13:22","tags":["notes","software","timeline"]},"Title":"a self-hosted git stack"},"fa6a31b4":{"Path":"./fa6a31b4.md","Slug":"fa6a31b4","Date":"2021-03-10T07:40","ID":"fa6a31b4","Meta":{"date":"2021-03-10T07:40","tags":["vim"]},"Title":"replace mode"},"19172b64":{"Path":"./19172b64.md","Slug":"19172b64","Date":"2021-03-14T15:48","ID":"19172b64","Meta":{"date":"2021-03-14T15:48","tags":["vim"]},"Title":"specifying a range when running a ! shell command filters"},"72e6c820":{"Path":"./72e6c820.md","Slug":"72e6c820","Date":"2021-03-19T09:30","ID":"72e6c820","Meta":{"date":"2021-03-19T09:30","tags":["git"]},"Title":"check non-trivial gitignore patterns using git check-ignore"},"92598822":{"Path":"./92598822.md","Slug":"92598822","ID":"92598822","Meta":{"tags":[]},"Title":"self-hosted"},"6d0a076e":{"Path":"./6d0a076e.md","Slug":"6d0a076e","Date":"2021-03-29T21:14","ID":"6d0a076e","Meta":{"date":"2021-03-29T21:14","tags":["vim"]},"Title":"display lines"},"dc879f80":{"Path":"./dc879f80.md","Slug":"dc879f80","Date":"2021-01-29T12:00","ID":"dc879f80","Meta":{"date":"2021-01-29T12:00","tags":["practices","productivity","timeline"]},"Title":"how i stay (somewhat) organized"},"b364352b":{"Path":"./b364352b.md","Slug":"b364352b","Date":"2021-03-10T18:41","ID":"b364352b","Meta":{"date":"2021-03-10T18:41","tags":["vim"]},"Title":"use c instead of deleting and inserting in visual mode"},"9227847e":{"Path":"./9227847e.md","Slug":"9227847e","Date":"2020-11-22T11:18","ID":"9227847e","Meta":{"date":"2020-11-22T11:18","tags":["bread","recipe","timeline"]},"Title":"sourdough pretzel rolls"},"ec21e3f5":{"Path":"./ec21e3f5.md","Slug":"ec21e3f5","Date":"2021-03-14T14:29","ID":"ec21e3f5","Meta":{"date":"2021-03-14T14:29","tags":["vim"]},"Title":"the copy command doesn’t use a register"},"d2e178e0":{"Path":"./d2e178e0.md","Slug":"d2e178e0","Date":"2021-03-14T14:34","ID":"d2e178e0","Meta":{"date":"2021-03-14T14:34","tags":["vim"]},"Title":"the :normal command runs normal commands on multiple lines"},"96fc3093":{"Path":"./96fc3093.md","Slug":"96fc3093","Date":"2021-03-14T15:23","ID":"96fc3093","Meta":{"date":"2021-03-14T15:23","tags":["vim"]},"Title":":read allows piping shell stdout into a buffer"},"38003bd5":{"Path":"./38003bd5.md","Slug":"38003bd5","Date":"2021-03-29T21:21","ID":"38003bd5","Meta":{"date":"2021-03-29T21:21","tags":["vim"]},"Title":"search is a motion"},"f0b50398":{"Path":"./f0b50398.md","Slug":"f0b50398","Date":"2021-03-29T21:30","ID":"f0b50398","Meta":{"date":"2021-03-29T21:30","tags":["vim"]},"Title":"the jump list is primarily for between-file motions"},"9db45ab6":{"Path":"./9db45ab6.md","Slug":"9db45ab6","Date":"2020-11-09T16:48","ID":"9db45ab6","Meta":{"date":"2020-11-09T16:48","tags":["practices","productivity","timeline"]},"Title":"focus requires a rigorous contract"},"b926d9bd":{"Path":"./b926d9bd.md","Slug":"b926d9bd","ID":"b926d9bd","Meta":{"tags":[]},"Title":"vim"},"349ceffd":{"Path":"./349ceffd.md","Slug":"349ceffd","Date":"2021-03-29T21:24","ID":"349ceffd","Meta":{"date":"2021-03-29T21:24","tags":["vim"]},"Title":"mark basics"},"da69e0f5":{"Path":"./da69e0f5.md","Slug":"da69e0f5","Date":"2021-03-14T15:16","ID":"da69e0f5","Meta":{"date":"2021-03-14T15:16","tags":["vim"]},"Title":" in command mode will insert the word under the cursor in the cmd"},"aab45963":{"Path":"./aab45963.md","Slug":"aab45963","Date":"2020-12-08T10:29","ID":"aab45963","Meta":{"date":"2020-12-08T10:29","tags":["notes","software","timeline"]},"Title":"the matrix ecosystem"},"9b74f625":{"Path":"./9b74f625.md","Slug":"9b74f625","ID":"9b74f625","Meta":{"tags":[]},"Title":"software"},"82ded935":{"Path":"./82ded935.md","Slug":"82ded935","Date":"2021-03-14T14:12","ID":"82ded935","Meta":{"date":"2021-03-14T14:12","tags":["vim"]},"Title":"command mode ranges based on patterns"},"56653cb1":{"Path":"./56653cb1.md","Slug":"56653cb1","Date":"2021-03-10T07:38","ID":"56653cb1","Meta":{"date":"2021-03-10T07:38","tags":["vim"]},"Title":"the expression register"},"c6a6cf84":{"Path":"./c6a6cf84.md","Slug":"c6a6cf84","Date":"2021-11-29T22:45","ID":"c6a6cf84","Meta":{"date":"2021-11-29T22:45","tags":["notes","software","timeline"]},"Title":"a self-hosted podcast playback station"},"acc60422":{"Path":"./acc60422.md","Slug":"acc60422","ID":"acc60422","Meta":{"tags":[]},"Title":"practices"},"index":{"Path":"./index.md","Slug":"index","ID":"index","Meta":{"tags":[]},"Title":"index"},"c4e96daf":{"Path":"./c4e96daf.md","Slug":"c4e96daf","Date":"2020-12-13T16:43","ID":"c4e96daf","Meta":{"date":"2020-12-13T16:43","tags":["admin","server","tech"]},"Title":"adding a new user account on a linux system"},"73dcbcc7":{"Path":"./73dcbcc7.md","Slug":"73dcbcc7","Date":"2021-03-14T15:15","ID":"73dcbcc7","Meta":{"date":"2021-03-14T15:15","tags":["vim"]},"Title":" in command mode presents an auto-completion list"},"ec672cb5":{"Path":"./ec672cb5.md","Slug":"ec672cb5","Date":"2021-03-14T15:19","ID":"ec672cb5","Meta":{"date":"2021-03-14T15:19","tags":["vim"]},"Title":"q: opens the command history window"},"f0e5cfc1":{"Path":"./f0e5cfc1.md","Slug":"f0e5cfc1","Date":"2021-03-29T21:32","ID":"f0e5cfc1","Meta":{"date":"2021-03-29T21:32","tags":["vim"]},"Title":"the gf motion will jump to the filename under the cursor"}}},"NeuronVersion":"1.9.35.3","Config":{"editUrl":"https://github.com/thermokarst/zettel/edit/main/","plugins":["neuronignore","links","tags","uptree","feed"],"siteBaseUrl":"https://zettel.thermokar.st","author":"Matthew Ryan Dillon","siteTitle":"zettel.thermokar.st","theme":"black"},"Errors":{}} \ No newline at end of file diff --git a/d2e178e0.html b/d2e178e0.html index 107ec29..50e7a3d 100644 --- a/d2e178e0.html +++ b/d2e178e0.html @@ -1 +1 @@ -the :normal command runs normal commands on multiple lines - zettel.thermokar.st

the :normal command runs normal commands on multiple lines

The :normal command is a useful way to run the same Normal mode command on multiple lines.

:%normal i# <CR>

The command above will comment out an entire Python source file.

\ No newline at end of file +the :normal command runs normal commands on multiple lines - zettel.thermokar.st

the :normal command runs normal commands on multiple lines

The :normal command is a useful way to run the same Normal mode command on multiple lines.

:%normal i# <CR>

The command above will comment out an entire Python source file.

\ No newline at end of file diff --git a/da69e0f5.html b/da69e0f5.html index aeffa58..0d7ad9a 100644 --- a/da69e0f5.html +++ b/da69e0f5.html @@ -1 +1 @@ -<C-r><C-w> in command mode will insert the word under the cursor in the cmd - zettel.thermokar.st

<C-r><C-w> in command mode will insert the word under the cursor in the cmd

\ No newline at end of file +<C-r><C-w> in command mode will insert the word under the cursor in the cmd - zettel.thermokar.st

<C-r><C-w> in command mode will insert the word under the cursor in the cmd

\ No newline at end of file diff --git a/dc879f80.html b/dc879f80.html index 6122d66..8265fdd 100644 --- a/dc879f80.html +++ b/dc879f80.html @@ -1 +1 @@ -how i stay (somewhat) organized - zettel.thermokar.st

how i stay (somewhat) organized

Right now this is just a draft outline, ideally I will circle back on this some time this year to fill in some more details.

  • Tools
    • Notebook
      • Right now this is actually just half-letter-page (5.5 inches × 8.5 inches) sheets on a similarly sized clipboard + pen.
      • Pre-printed time block pages: four columns (for amending schedule) + twenty-two 30min rows.
      • Blank pages for logging daily notes, observations, and ideas.
        • I use some elements of bullet journaling for this:
          • I love the bullet syntax, so I use that often (and a homegrown shorthand).
          • I migrate tasks from page to page, but don’t follow any of the weekly/monthly/yearly migrations.
          • The second or third time a task is migrated, I move this task over to my digital planner app (more below).
          • Reflection happens ideally once a day, but more like 2 or 3 times a week.
      • Periodically I clear out the clipboard to archive older sheets that I won’t need to update - these get scanned and put into a per-annum PDF document that is synced to my phone and computer.
    • Calendar
      • I check my digital calendar multiple times a day: I use this to communicate shared calendar events with team members, as well as personal events, deadlines, etc.
    • Home-grown todoist clone
      • Repo: git://pingo.thermokar.st/planner
      • Live: https://planner.thermokar.st (access restricted)
      • Structure
        • This planner is modeled after GTD practices and features an inbox, and the ability to categorize tasks into one or more “plans” (plans can be a project, a specific day/week/events todo list, an issue tracker, etc).
  • Routines
    • Daily
      • I triage notifications first thing in the morning (no more than 30 mins).
        • Note, I might move away from this: I would prefer to handle that kind of stuff midday if possible.
      • Timeblock the day’s schedule (see: focus requires a rigorous contract), incorporating prior engagements, any urgent ad hoc tasks, and the week’s goals (more below).
        • If I fall behind or something unexpected comes up, I update the timeblock schedule when I get a chance.
    • Weekly
      • Before each week starts I try to identify a few high-level goals for the week, and figure out (broadly) how they might fit into my schedule, but I don’t worry too much about specific scheduling at this point, just something like “Wednesday would be a good day to carve out time for this…”
    • Long-term
      • My calendar handles big things like major work milestones, deadlines, appointments, meetings, etc.
      • Tasks go into my planner app, I review these 3-5 times a month on average to see how they might fit into what is coming up next, etc. Really long-term tasks get filed into an @someday plan.
\ No newline at end of file +how i stay (somewhat) organized - zettel.thermokar.st

how i stay (somewhat) organized

Right now this is just a draft outline, ideally I will circle back on this some time this year to fill in some more details.

  • Tools
    • Notebook
      • Right now this is actually just half-letter-page (5.5 inches × 8.5 inches) sheets on a similarly sized clipboard + pen.
      • Pre-printed time block pages: four columns (for amending schedule) + twenty-two 30min rows.
      • Blank pages for logging daily notes, observations, and ideas.
        • I use some elements of bullet journaling for this:
          • I love the bullet syntax, so I use that often (and a homegrown shorthand).
          • I migrate tasks from page to page, but don’t follow any of the weekly/monthly/yearly migrations.
          • The second or third time a task is migrated, I move this task over to my digital planner app (more below).
          • Reflection happens ideally once a day, but more like 2 or 3 times a week.
      • Periodically I clear out the clipboard to archive older sheets that I won’t need to update - these get scanned and put into a per-annum PDF document that is synced to my phone and computer.
    • Calendar
      • I check my digital calendar multiple times a day: I use this to communicate shared calendar events with team members, as well as personal events, deadlines, etc.
    • Home-grown todoist clone
      • Repo: git://pingo.thermokar.st/planner
      • Live: https://planner.thermokar.st (access restricted)
      • Structure
        • This planner is modeled after GTD practices and features an inbox, and the ability to categorize tasks into one or more “plans” (plans can be a project, a specific day/week/events todo list, an issue tracker, etc).
  • Routines
    • Daily
      • I triage notifications first thing in the morning (no more than 30 mins).
        • Note, I might move away from this: I would prefer to handle that kind of stuff midday if possible.
      • Timeblock the day’s schedule (see: focus requires a rigorous contract), incorporating prior engagements, any urgent ad hoc tasks, and the week’s goals (more below).
        • If I fall behind or something unexpected comes up, I update the timeblock schedule when I get a chance.
    • Weekly
      • Before each week starts I try to identify a few high-level goals for the week, and figure out (broadly) how they might fit into my schedule, but I don’t worry too much about specific scheduling at this point, just something like “Wednesday would be a good day to carve out time for this…”
    • Long-term
      • My calendar handles big things like major work milestones, deadlines, appointments, meetings, etc.
      • Tasks go into my planner app, I review these 3-5 times a month on average to see how they might fit into what is coming up next, etc. Really long-term tasks get filed into an @someday plan.
\ No newline at end of file diff --git a/ec21e3f5.html b/ec21e3f5.html index 1480c5d..04170f2 100644 --- a/ec21e3f5.html +++ b/ec21e3f5.html @@ -1 +1 @@ -the copy command doesn’t use a register - zettel.thermokar.st

the copy command doesn’t use a register

The copy command doesn’t use a register. This is useful for not overwriting the current value in the default register - you might not need to run the copy command, but it might help keep your registers clean.

\ No newline at end of file +the copy command doesn’t use a register - zettel.thermokar.st

the copy command doesn’t use a register

The copy command doesn’t use a register. This is useful for not overwriting the current value in the default register - you might not need to run the copy command, but it might help keep your registers clean.

\ No newline at end of file diff --git a/ec672cb5.html b/ec672cb5.html index 78fe225..f37cd06 100644 --- a/ec672cb5.html +++ b/ec672cb5.html @@ -1 +1 @@ -q: opens the command history window - zettel.thermokar.st

q: opens the command history window

q: opens the command history window. When this window is open, it maintains exclusive focus.

\ No newline at end of file +q: opens the command history window - zettel.thermokar.st

q: opens the command history window

q: opens the command history window. When this window is open, it maintains exclusive focus.

\ No newline at end of file diff --git a/f0b50398.html b/f0b50398.html index 3e02349..c07ef3e 100644 --- a/f0b50398.html +++ b/f0b50398.html @@ -1 +1 @@ -the jump list is primarily for between-file motions - zettel.thermokar.st

the jump list is primarily for between-file motions

<C-o> & <C-i> & :jumps

\ No newline at end of file +the jump list is primarily for between-file motions - zettel.thermokar.st

the jump list is primarily for between-file motions

<C-o> & <C-i> & :jumps

\ No newline at end of file diff --git a/f0e5cfc1.html b/f0e5cfc1.html index e3576f4..ecc3180 100644 --- a/f0e5cfc1.html +++ b/f0e5cfc1.html @@ -1 +1 @@ -the gf motion will jump to the filename under the cursor - zettel.thermokar.st

the gf motion will jump to the filename under the cursor

The suffixadd option needs to be set, although most common filetype plugins should handle this automatically.

\ No newline at end of file +the gf motion will jump to the filename under the cursor - zettel.thermokar.st

the gf motion will jump to the filename under the cursor

The suffixadd option needs to be set, although most common filetype plugins should handle this automatically.

\ No newline at end of file diff --git a/fa6a31b4.html b/fa6a31b4.html index 72c4460..1961912 100644 --- a/fa6a31b4.html +++ b/fa6a31b4.html @@ -1 +1 @@ -replace mode - zettel.thermokar.st

replace mode

From Normal mode, R activates Replace mode, which behaves a lot like Insert mode, except that it allows you to effectively type over existing content. This is different from r, which is a single character replacement (ending back in Normal mode) - R requires you to deliberately exit back to Normal mode.

\ No newline at end of file +replace mode - zettel.thermokar.st

replace mode

From Normal mode, R activates Replace mode, which behaves a lot like Insert mode, except that it allows you to effectively type over existing content. This is different from r, which is a single character replacement (ending back in Normal mode) - R requires you to deliberately exit back to Normal mode.

\ No newline at end of file diff --git a/impulse.html b/impulse.html index d3ae7a6..718066a 100644 --- a/impulse.html +++ b/impulse.html @@ -1 +1 @@ -Impulse - zettel.thermokar.st \ No newline at end of file +Impulse - zettel.thermokar.st \ No newline at end of file diff --git a/index.html b/index.html index 973d8fa..f2675d1 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -index - zettel.thermokar.st
\ No newline at end of file +index - zettel.thermokar.st
\ No newline at end of file