Instantly share code, notes, and snippets.

What would you like to do?
Import ZSH history to Fish
'use strict';
const fs = require('fs');
const expandHomeDir = require('expand-home-dir');
const zshHistoryRaw = fs.readFileSync(expandHomeDir('~/.zsh_history'), 'utf8');
const zshHistoryLines = zshHistoryRaw.split('\n');
const transformLine = line => {
try {
const semicolonIndex = line.indexOf(';');
const command = line.substring(semicolonIndex + 1);
const when = line.substring(0, semicolonIndex).split(':')[1].trim();
return `- cmd: ${command}\n when: ${when}`;
} catch (e) {
// Probably a continuation of the previous line.
// I don't care about these
const fishHistory = => transformLine(line)).join('\n');
fs.writeFileSync(expandHomeDir('~/.config/fish/fish_history'), fishHistory, 'utf8');

This comment has been minimized.


christopherstott commented Jan 23, 2016

npm install expand-home-dir before running


This comment has been minimized.

felipefdl commented Jul 2, 2016

Works well!


This comment has been minimized.

simonmeusel commented Apr 8, 2017

Works! You should maybe create the file if it does not exists :)


This comment has been minimized.

hnykda commented Feb 21, 2018

Instead of trying to find out how npm works, I put something together in Python.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment