超輕量級純文本界面 REPL 類語言 IDE

超輕量級純文本界面 REPL 類語言 IDE

目錄

介紹

這是基於 Vim + Tmux 快速定製的一個針對 REPL 類編程語言的超輕量級開發環境, 不須要任何 GUI, 運行於純粹的文本界面, 因此響應速度很快, 並且對於系統的要求很低, 在一些內存有限的舊電腦上也能夠流暢地運行.html

本來的目標是搭建一個能夠流暢運行於 Raspberry Pi 2 的超輕量級 Common Lisp 調試開發環境, 用戶能夠經過 SSH 登陸到樹莓派上進行不受限制的開發, 最大限度地利用樹莓派的硬件計算能力, 而不須要啓動任何類型的 視窗.git

後來發現本集成環境能夠支持任何一種擁有 REPL 機制的編程語言, 如 Clojure, Racket, Schema 以及 Lua 等多種語言.github

環境需求: 須要安裝好 vimtmux.spring

技能要求: 須要使用者熟悉基本的 vi 操做, 熟悉通常的 tmux 操做.編程

本項目git.oschina.net倉庫vim

特性

優勢:

  • 方便
  • 超輕量級
  • 高度可定製
  • 響應速度最快
  • 使用超級流暢
  • 支持結對編程
  • 運行資源需求最少
  • 可運行於內存有限的舊電腦
  • 全平臺支持:Linux|Win32|OSX
  • 支持任意擁有命令行 REPL 機制的語言
  • 支持快捷鍵從代碼編輯區發送代碼到REPL區進行調試

缺點:

  • Emacs 下的 Slime 相比快捷鍵支持的調試命令比較少

實現原理

利用了 tmux 能夠在在不一樣窗口|面板間傳輸|接收數據的能力windows

安裝插件

須要爲 vim 按順序依次安裝以下插件:socket

必需安裝:編程語言

pathogen rainbow-parentheses vim-slime佈局

可選安裝:

vim-clojure-static

安裝 pathogen:

首先爲 vim 安裝 pathogen 插件, 有了它能夠超級簡單地安裝設置其餘插件.

分別創建 ~/.vim/bundle, ~/.vim/autoload 目錄

cd ~/.vim
  mkdir bundle
  mkdir autoload

把 pathogen.vim 文件下載到 autoload 目錄下

cd ~/.vim/autoload
  wget https://tpo.pe/pathogen.vim

安裝 rainbow-parenthesesvim-slime :

進入 ~/.vim/bundle/ 目錄, 克隆 rainbow-parenthesesvim-slime 便可, 剩餘的 pathogen 會自動爲你安裝:

cd ~/.vim/bundle/
  git clone https://github.com/kien/rainbow_parentheses.vim
  git clone https://github.com/jpalardy/vim-slime

安裝 vim-clojure-static

跟上面的步驟同樣:

cd ~/.vim/bundle/
  git clone https://github.com/guns/vim-clojure-static

接下來要對上述插件進行配置, 下面會詳細介紹如何配置.

配置方法

須要分別對 vimtmux 進行配置, 主要是修改位於 ~/ 目錄下的 .vimrc.tmux.conf 這兩個文件.

下面是配置好的文件, 把你原來的這兩個文件作一個備份, 而後把這兩個文件直接克隆到你的 ~/ 目錄下.

  • .vimrc
execute pathogen#infect()
syntax on
syntax enable
set number
set autoindent
filetype plugin indent on

「 vim-slime  options
「 Clojure options.
let g:slime_target = "tmux"
let g:slime_paste_file = "$HOME/.slime_paste"

「 rainbow_parentheses options
autocmd Syntax clojure RainbowParenthesesLoadRound
autocmd BufEnter *.clj RainbowParenthesesToggle
autocmd BufLeave *.clj RainbowParenthesesToggle

let g:rbpt_colorpairs = [
    \ ['magenta',     'purple1'],
    \ ['cyan',        'magenta1'],
    \ ['green',       'slateblue1'],
    \ ['yellow',      'cyan1'],
    \ ['red',         'springgreen1'],
    \ ['magenta',     'green1'],
    \ ['cyan',        'greenyellow'],
    \ ['green',       'yellow1'],
    \ ['yellow',      'orange1'],
    \ ]
let g:rbpt_max =9

「 vim-clojure-static options
let g:clojure_syntax_keywords = {
    \ 'clojureMacro': ["defproject", "defcustom"],
    \ 'clojureFunc': ["string/join", "string/replace"]
    \ }
  • .tmux.conf
# ##############################################################
# Global settings.
#

# Switch the prefix to Ctrl-a since Ctrl-b interferes with Vim.
# set -g prefix C-a
# unbind C-b

# Change the default input delay in order to improve Vim
# performance.
set -sg escape-time 1

# Number windows and panes starting at 1 so that we can jump to
# them easier.
# 設置 tmux 窗口序號從 1 開始, 設置 tmux 面板序號從 1 開始
set -g base-index 1
set -g pane-base-index 1

# vi mode.
set -g mode-keys vi
set -g status-keys vi

# 256-color mode.
set -g default-terminal "screen-256color"


# ##############################################################
# Key bindings.
#

# Reload .tmux.conf with "r".
# 修改 tmux 配置後加載新配置文件的快捷鍵爲: Ctrl-b r
bind r source-file ~/.tmux.conf \; display "Reloaded!"

# Split windows with a more visual set of characters.
bind | split-window -h
bind - split-window -v

# Select panes with vi-style movement commands.
# 使用 h j k l 選擇面板, 也能夠用上下左右箭頭來選擇
# 具體快捷鍵爲: Ctrl-b h -> 左邊面板
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

# Resize panes with vi-style movement commands.
# 調整面板大小
# 具體快捷鍵爲: 
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5

使用說明

編程實例:

假設咱們準備試驗 Common Lisp 開發環境, 具體的實現是 CLISP.

  • 啓動 tmux, 在當前窗口建立兩個面板(pane), 快捷鍵爲: C-b c, 也就是: Ctrl-b c;
  • 在 1 號面板裏用 vi 編輯一個名爲 test.lisp 的文件;
  • 在 2 號面板內啓動一個 REPL, 例如: clisp.

補充: C-b q 能夠查看當前窗口全部面板的編號

如今就能夠進行 Common Lisp 代碼調試了, 光標放在代碼編輯區(切換面板的快捷鍵爲 C-b o), 輸入一段代碼,以下:

(+ 123 245)

光標保持在括號內, 進入 vi 命令模式, 輸入快捷鍵 C-c C-c, 首次執行此命令, 會要求設定目標, 提示輸入內容以下:

tmux socket name: default `回車`
  tmux target pane: `:2.2`

:2 表示 2 號窗口, .2 表示2號窗口的第2個面板

這樣就會把表達式 (+ 123 245) 發送到 2 號面板的 REPL, 立刻就會被求值

默認的快捷鍵綁定:

C-c C-c 把編輯區光標所在處的代碼段落髮送到 REPL 區		
C-c v 從新設定發送目標, 須要按照提示輸入:

提示信息以下:

tmux socket name: default 回車 tmux target pane: :2.2

":" 單獨輸入一個冒號表示當前窗口,當前面板, 這是合理的默認值; ":i" 冒號跟一個數字 i 表示第 i 個窗口, 當前面板; ":i.j" 冒號 數字i 小數點 數字 j 表示第 i 個窗口,第 j 個面板; "h:i.j" 若是前面再加一個 h, h 表示 tmuxh 號會話, h 多是會話名,也多是數字, 後面的含義不變.

一些有用的快捷鍵

  • vim 的快捷鍵(命令狀態下輸入):

C-f 和 C-b 向後或向前翻頁 C-p 和 C-n vi自帶的簡單自動補全

  • tmux的快捷鍵:

C-b r 修改 .tmux.conf 文件後快速加載 C-b 數字 跳轉到數字對應窗口 C-b 空格鍵 調整窗口的面板佈局 C-b |C-b " 新建面板跟當前面板左右分佈(水平分佈) C-b -C-b % 新建面板跟當前面板上下分佈(垂直分佈)

其餘信息

本項目參考了以下文檔:

相關文章
相關標籤/搜索