Neighbouring Files

approved

by Fabian Untermoser

Navigate to the next and previous file in the current directory.

26 stars5,977 downloadsUpdated 1mo agoMIT
View on GitHub

Navigate to Neighbouring Files

GitHub GitHub Repo stars GitHub forks GitHub contributors GitHub closed issues GitHub closed pull requests GitHub last commit

This Obsidian Plugin adds navigational commands that let you quickly navigate to neighbouring files in your vault.

Use Case

  • Navigate from one weekly note to another (e.g., 2023-W172023-W18)
  • Move between daily notes (e.g., 2023-05-312023-06-01)
  • Browse sequentially numbered notes (e.g., A4A5)
  • Navigate through project files in a folder

obsidian-neighbouring-files.webm

Commands

Default Commands:

  • Navigate to next file
  • Navigate to prev file

Commands:

  • Navigate to next file (alphabetical)
  • Navigate to prev file (alphabetical)
  • Navigate to older file (creation timestamp)
  • Navigate to newer file (creation timestamp)
  • Navigate to older file (modified timestamp)
  • Navigate to newer file (modified timestamp)
  • Folder up
  • Folder down
  • Next folder
  • Prev folder

Supported Sorting Modes:

  • Alphabetical: Ordered by file names.
  • By Modification Timestamp: Based on the file modification date.
  • By Creation Timestamp: Based on the file creation date.

Configuration

Default Sort Order

The default command uses the same sort order as the File explorer. You can configure a fallback sort order in the plugin settings.

Included File Types

By default, navigation is restricted to markdown files. In the settings you can enable support for other file types:

  • Limit to Markdown files only
  • Include all file types
  • Specify additional file extensions to include

Loop Notes in Folder

  • When disabled: Navigation stops at the beginning/end of the current folder.
  • When enabled: Navigation loops back to the first/last note in the same folder.

Continue Across Folders

  • When disabled: Navigation stays within the current folder.
  • When enabled: Reaching a folder boundary continues navigation into adjacent folders.

Configure Obsidian Hotkeys

In Obsidian, open Settings -> Hotkeys, search for neighbouring-files, and assign keys to the command IDs you want:

  • neighbouring-files:next
  • neighbouring-files:prev
  • neighbouring-files:next-alphabetical
  • neighbouring-files:prev-alphabetical
  • neighbouring-files:older-created
  • neighbouring-files:newer-created
  • neighbouring-files:older-modified
  • neighbouring-files:newer-modified
  • neighbouring-files:folder-up
  • neighbouring-files:folder-down
  • neighbouring-files:folder-next
  • neighbouring-files:folder-prev

Configure VIMRC keybindings

Instead of configuring obsidian hotkeys to trigger the navigation commands, you can also use the obsidian-vimrc-support plugin to map more useful hotkeys such as gn or gp (Caveat: This only works when the editor mode is on).

Example .obsidian.vimrc.

" define navigation commands
exmap next_file              obcommand neighbouring-files:next
exmap prev_file              obcommand neighbouring-files:prev
exmap next_file_alphabetical obcommand neighbouring-files:next-alphabetical
exmap prev_file_alphabetical obcommand neighbouring-files:prev-alphabetical
exmap older_file_created     obcommand neighbouring-files:older-created
exmap newer_file_created     obcommand neighbouring-files:newer-created
exmap older_file_modified    obcommand neighbouring-files:older-modified
exmap newer_file_modified    obcommand neighbouring-files:newer-modified
exmap folder_up              obcommand neighbouring-files:folder-up
exmap folder_down            obcommand neighbouring-files:folder-down
exmap folder_next            obcommand neighbouring-files:folder-next
exmap folder_prev            obcommand neighbouring-files:folder-prev
" add navigation mappings
nmap gn :next_file<cr>
nmap gp :prev_file<cr>
nmap fu :folder_up<cr>
nmap fd :folder_down<cr>
nmap fn :folder_next<cr>
nmap fp :folder_prev<cr>

Releasing

  1. Add a changeset for user-facing changes:
    make changeset
    
  2. Publish with the Makefile release target:
    make release
    

make release runs Changesets versioning, creates the release commit/tag, and pushes tags to trigger the GitHub release workflow.

License

This project is licensed under MIT License.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.