超轻量级纯文本界面 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 % 新建面板跟当前面板上下分布(垂直分布)

其余信息

本项目参考了以下文档:

相关文章
相关标签/搜索