2015-06-13 100 views
1

問題節點REPL有一些"special commands"類似.break.save。我從來沒有使用這些,但我確實非常頻繁嘗試粘貼到按照以下格式,像這樣REPL代碼:如何在node.js REPL中禁用「特殊命令」?

words.append('ul') 
    .classed('my-class', true) 
    .selectAll('li.new-class') 
    .data((tuple, tupleIdx) => obj[tupleIdx]) 
    .enter() 
    .append('li') 
    .classed('new-class', true) 
    .text(d => '' + foo(d)); 

(這是d3.js代碼,但類似的事情發生使用時承諾,鏈的開始在每一行。.then(...) S)

當然節點抱怨「無效REPL關鍵字」,當它看到.classed.then在單獨的行,並進行到打印多個屏幕長的錯誤消息的序列。

脆弱的僞解決方法我身邊這個工作與Vim的正規式的點(:%s/)\n\(\s*\)\./).\r\1/的完整性)後移動關閉括號和點之間的任何空白來,但這是乏味的時候,我想禁止複製從瀏覽器粘貼,而不是切換到Vim重新格式化一些代碼。

問題是否有任何方法可以禁用節點REPL「功能」,雖然這是好意的,與標準JavaScript實踐相沖突,例如以點開頭的行?

或者是這個太複雜了終端應用程序,如果是這樣,是有辦法,我可以通過瀏覽器的JS控制檯與節點REPL溝通(不node-monkey只處理console.log

PS。這個問題主要是關於以.開頭的行,但另一個這樣的衝突是_(謝謝n_)。

回答

0

這裏是一些暫定的:使用node-copy-paste,我寫了一個小模塊,允許我在剪貼板的內容和eval s之後固定行,從.開始。

這正好paste.js

var cp = require('copy-paste'); // npm install node-copy-paste 

module.exports = function() { 
    return eval(cp.paste().replace(/\n\s*\./g, ".")); 
}; 

然後在節點REPL,paste = require('./paste'); paste()會讓它走。非常脆弱,但它可能經常足以解決問題,因此很有價值。