Skip to content

Instantly share code, notes, and snippets.

Embed
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 = zshHistoryLines.map(line => transformLine(line)).join('\n');
fs.writeFileSync(expandHomeDir('~/.config/fish/fish_history'), fishHistory, 'utf8');
@christopherstott

This comment has been minimized.

Copy link
Owner Author

@christopherstott christopherstott commented Jan 23, 2016

npm install expand-home-dir before running

@felipefdl

This comment has been minimized.

Copy link

@felipefdl felipefdl commented Jul 2, 2016

Works well!

@simonmeusel

This comment has been minimized.

Copy link

@simonmeusel simonmeusel commented Apr 8, 2017

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

@hnykda

This comment has been minimized.

Copy link

@hnykda 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
You can’t perform that action at this time.