Code Monkey home page Code Monkey logo

vim-ide's Introduction

A Vim-Based Integrated Research Environment

A Vim-based academic research and writing environment, with a bare minimum of dependencies and vim plugins. Build a sprawling, densely-connected Zettelkasten, and let it grow naturally into academic articles, books or presentations without ever leaving Vim.

Why Vim

The reasons for this are simple: 1) Vim is the most powerful writing/editing technology since the invention of pen and paper, and learning to use it is truly like growing wings and "editing at the speed of though"; 2) the original vi program was created in 1976 (43 years ago), and Vim has been around since 1991 (28 years ago). Vim is the surest way to avoid the impending note-taking apocalypse; and 3) Vim uses good old plain text files that can be viewed and edited anywhere and as long as there are computers.

Can I use something else?

Yes, albeit with a much more limited functionality. The closest you can get in a Mac is the commendable nvALT. And of course there's always org-mode, if you're willing to give it a shot.

Dependecies

  • A recent version of Vim or Neovim.
  • Pandoc, a universal document converter. If, like me, you make heavy use of images in your work, I recommend using the pandoc-fignos filter, a simple and elegant way of numbering and referencing figures.
  • vim-pandoc and vim-pandoc-syntax.
  • A decent color scheme, such as solarized or gruvbox.
  • goyo, distraction-free writing in Vim.
  • fzf, the command-line fuzzy finder.
  • ag, a powerful searching tool.
  • A bibtex bibliography file, or a reference manager that can produced it, such as Zotero with Better BibTeX or JabRef.
  • For previewing: Zathura in any *nix distro, or Marked2, in macOS. (Optional: you can also use any browser or PDF viewer.)

Preliminaries and Conventions

  • All files (notes, outlines, quotes, drafts, etc.) are to be kept in plain text markdown. If you're still not convinced why, read this and this. Plain text files are small and sustainable, do not tie you to a specific editor, and can be used with version control systems such as Git.
  • I strongly recommend keeping all your text files in a single folder, regardless of project, source, etc. Inspired by Luhmann's Zettelkasten system and my own experience, the IRE is based on the conviction that file classification (through a directory structure, tags, keywords, or strict file-naming) is a total waste of time. As Luhmann noted, categories foreclose the free branching of the Zettelkasten, and cannot predict in advance the twists and turns that your ideas and your reading might take. The constant updating of directory structures and tag ontologies is energy-consuming and yields few results. The IDE favors the quick creation of content and immanent cross-referecing as a way of attaining the state described by Luhman: "a disorder with non-arbitrary internal structure."
  • Instead of taxonomy, the IRE is based on the principle that the "life" of a note—its retrievability but also its capacity to elicit new ideas—hinges on its density of cross-references. A dead note is one with no links branching from it or leading to it. Thus, the IRE is designed to ease the establishment of connections through hyperlinks and other techniques. Instead of cumbersome naming, filing or tagging, the IRE favors the creation of ad hoc indexes (lists of notes) and indexes of indexes.
  • The use of hyperlinks and Vim's powerful autocompletion and search functions makes the question of file naming of less crucial significance than it held for Luhmann. Any sensible and sufficiently descriptive file naming convention (like this one) will work. In general, you should always use file names with camel case (DasCapital.md) or dashes (das-Capital.md). Avoid at all costs non-human-readable ID naming schemes, such as those favored by Luhmann himself. For reasons that will become clear later, I strongly recommend naming reading notes with the book's or article's bibtexkey (i.e. marx1867capital.md), which by the way also implies that you should choose those keys wisely.

Reading more: Manfred Kuehn, "Some Idiosyncratic Reflections on Note-Taking in General", Christian Tietze, "Create a Zettelkasten for your Notes to Improve Thinking and Writing" and Niklas Luhman's original "Communicating with Slip-Boxes".

General Idea

While there are many plugins for creating a wiki-like systems in Vim (vim-wiki being the most popular one), the IRE relies entirely on Vim standard commands, thus avoiding the idiosyncrasies of those plugins. Vim's powerful navigation and search functions makes it possible to treat any plain text file as a wiki, so technically the IRE would work with non-markdown text files. vim-pandocand vim-pandoc-syntax simply offer some convenient functionality for writing in markdown, such as syntax highlighting and concealment, structure folding, bibkeycompletion, previewing, etc. fzf and ag add file-name fuzzy finding and advanced content search across files. goyo offers a tidy writing environment, reminiscent of popular full-scree writing apps. Nothing more, nothing less.

Features

vim-ide's People

Contributors

hipomenes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

vim-ide's Issues

tags and searching

Is there a way to use a tagging system, maybe something as simple as #tag, and have it work with fzf or some other search?

Example vimrc and document or two?

This looks awesome! Thank you!
Any chance that you could include an example vimrc and document or two to help people get up and going?
Many thanks in advance!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.