`
marlonyao
  • 浏览: 253227 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

vim插件conqueterm: 打造REPL环境

阅读更多
REPL,即read-eval-print loop,最早出现在Lisp中,Emacs的Slime模式编写lisp非常方便。在Slime中流程是这样:
  1. 编写小段代码
  2. <C-c><C-c>运行小代码
  3. 查看結果,继续编写小段代码

整个过程不用在编辑器和解释器之间来回切换。在vim下也是可以做到这样,虽然可能实现并不怎么完美。ConqueTerm可以在vim在模拟Terminal,运行:ConqueTermSplit ipython就可以分割一个窗口并在其中执行ipython解释器。在另一个窗口中选中一段python代码,按<F9>就可以执行选中代码,这已经很接近于Emacs的Slime,但有几个缺点:
  1. 对python代码不能自动执行,需要手动再按一个回车,因为ConqueTerm会将选中代码的多余回车给删掉。
  2. 执行之后,自动选中了ConqueTerm窗口,我们希望光标仍然在代码窗口。


对于第一个问题,似乎只能通过修改ConqueTerm插件源代码来解决,只需要注释掉autoload/conque_term.vim中函数conque_term#send_selected中的format yanked text,另外还将paste_selection改成了paste方法:
" send selected text from another buffer
function! conque_term#send_selected(type) "{{{
    let reg_save = @@

    " save user's sb settings
    let sb_save = &switchbuf
    set switchbuf=usetab

    " yank current selection
    sil exe "normal! `<" . a:type . "`>y"

    " format yanked text
    "let @@ = substitute(@@, '^[\r\n]*', '', '')
    "let @@ = substitute(@@, '[\r\n]*$', '', '')

    " execute yanked text
    sil exe ":sb " . g:ConqueTerm_BufName
    sil exe 'python ' . g:ConqueTerm_Var . '.paste()'

    " reset original values
    let @@ = reg_save
    sil exe 'set switchbuf=' . sb_save

    " scroll buffer left
    startinsert!
    normal 0zH
endfunction "}}}


对于第二个问题,则可以定义键映射来完成,在.vimrc中定义:
" ConqueTerm
"let g:ConqueTerm_TERM = 'xterm'
noremap ,tb :ConqueTermSplit bash<CR>
noremap ,tp :ConqueTermSplit ipython<CR>

vnoremap <C-c><C-c> :<C-u>call conque_term#send_selected(visualmode())<CR><Esc><C-w>p
noremap <C-c><C-c> V:call conque_term#send_selected(visualmode())<CR><Esc><C-w>p

这样按<C-c><C-c>将默认将当前行给ConqueTerm执行。

现在大致工作流程是这样:
  1. 打开vim编辑python文件
  2. :ConqueTermSplit ipython打开python解释器(或者用,tp)
  3. 选中代码,按<C-c><C-c>就可以直接在ConqueTerm中看到执行結果了。

编辑ruby,groovy等也是一样的,只需要将ipython换成相应解释器就行了。
分享到:
评论

相关推荐

    vim-repl:Vim的最佳REPL环境

    因此,我编写此插件是为了提供更好的repl环境,以便在vim中编码python或其他文件。 它使用vim8的终端功能。 因此,您的vim版本必须不少于8.0,并且支持termianl函数才能使用此插件。如果您想阅读中文文档,请移步:...

    vim-fireplace:firewall.vim:Clojure REPL支持

    壁炉Fireplace中有一个REPL,但如果我没有告诉过您,您可能不会注意到。 这是firewall.vim的方法。 顺便说一句,此插件用于Clojure。安装首先,设置 。 (如果您跳过此步骤,则只有一部分功能可用。) 使用您喜欢的...

    vim使用手册:基础篇、插件篇等

    vim使用手册:基础篇、插件篇等

    vim插件:omnicppcomplete-0.41.zip、taglist_46_vim.zip、vim-autocomplpop.zip三合一

    vim常用插件: 1. omnicppcomplete-0.41.zip 2. taglist_46_vim.zip 3. vim-autocomplpop.zip

    vim使用进阶:vim使用技巧、配置、命令和插件

    【vim使用进阶】系列教程深入探讨了vim编辑器的高级使用技巧,涵盖了vim的配置、命令、插件以及各种实用功能。以下是对各部分主要内容的详细解释: 1. **序言**:作者分享了使用vim的心得体会,对初学者提出了一些...

    vim插件集合和配置

    这些插件使得Vim从一个基础的文本编辑器转变为一个功能齐全的开发环境。 ### 配置Vim插件 1. **安装插件管理器**:通常,我们首先需要一个插件管理器,如`Vundle`、`Pathogen`、`NeoBundle`或`Plug`。以`Plug`为例...

    vim插件-linux使用

    本篇将详细介绍 Vim 插件在Linux环境下的使用,以及如何管理和配置这些插件。 首先,`.viminfo` 文件是Vim的会话信息存储文件,它记录了用户在Vim中的各种操作历史,如打开过的文件、光标位置、搜索历史等。当你...

    vim插件分类及快捷键.docx

    2. 代码自动补全插件:例如,YouCompleteMe插件可以根据当前的编码环境提供智能的代码自动补全。 3. 文件浏览插件:例如,NERDTree插件可以提供一个文件浏览器,方便用户浏览和管理文件。 4. 代码格式化插件:例如,...

    7款优秀Vim插件帮你打造完美IDE.rar

    以下将详细介绍标题和描述中提到的7款优秀Vim插件,以及它们如何帮助你打造完美的IDE。 1. **NERD Tree** NERD Tree是Vim的一个文件系统浏览器,它允许用户在左侧窗口中方便地浏览项目结构,快速打开、关闭、创建...

    eclipse的vim插件

    对于习惯使用Vim编辑器的开发者来说,Eclipse的Vim插件提供了一个在Eclipse环境中模拟Vim编辑模式的功能,使得用户可以在Eclipse中享受到与Vim相似的编辑体验,无需频繁切换工具。 ** Vim插件安装与配置** 1. 在...

    vim-venter:Vim插件水平居中当前窗口

    病毒者vim-venter是一个vim插件垂直将当前窗口水平居中 在大型显示器上处理一个文件时,这主要有用与类似,但保留功能(状态栏,制表符等)安装vim插件将Plug 'jmckiern/vim-venter'添加到.vimrc 然后在vim中运行:...

    gvim/vim常用插件

    这些插件的整合,使得vim/gvim成为了一个功能强大的开发环境,即使没有图形界面,也能享受到便捷的开发体验。每个插件都有其独特的功能,相互配合可以大大提高编程的生产力。熟练掌握这些插件的使用,会让你在代码...

    vim的一些插件

    以上插件都是为了提升Vim在开发环境中的效率和舒适度,通过安装和配置这些插件,可以使Vim成为更加强大的代码编辑工具。每个插件都有其独特的功能和用处,可以根据个人的编程习惯和需求选择合适的插件进行安装。

    notepad++使用vim插件

    为了提升其编辑体验,用户可以通过安装各种插件来扩展其功能,其中Vim插件就是一种非常实用的选择。Vim是一款高度可配置的文本编辑器,以其高效的操作方式和丰富的命令集闻名。将Vim集成到Notepad++中,可以使熟悉...

    msys运行vim依赖

    8. **插件管理**:Vim社区有许多流行的插件管理工具,如Vundle、Pathogen或NeoBundle,可以帮助你方便地管理和更新Vim插件。 9. **更新和升级**:定期使用pacman更新系统和已安装的包,以确保所有组件都是最新的。 ...

    reply.vim:REPL与Vim和Neovim上的:terminal配合良好

    REPL与Vim和Neovim上的:terminal很好地配合是一个Vim和Neovim插件,可以使编辑缓冲区很好地与REPL一起播放。 REPL在:terminal窗口中运行编辑缓冲区和REPL之间的交互从/向/向REPL发送编辑缓冲区的源使用REPL实时自动...

    vim插件,IC工程师常用

    Vim是一款强大的文本编辑器,深受程序员和系统管理员的喜爱,尤其在集成电路(IC)工程师中广泛应用。...通过安装和配置这些插件,用户可以构建一个高效、定制化的开发环境,更好地应对集成电路设计中的各种挑战。

    VSCode+Vim插件

    而“VSCode+Vim插件”指的是在VSCode中安装并使用Vim模拟器,将VSCode转换为具有Vim编辑模式的环境,让习惯于Vim操作的开发者可以在VSCode中享受到类似Vim的高效编码体验。 Vim是一款历史悠久且功能强大的文本编辑...

    vim-arduino:Vim插件,用于编译和上传arduino草图

    **vim-arduino** 是一个专为 Arduino 开发者设计的 Vim 插件,它极大地提升了在 Vim 编辑器中编写、编译和上传 Arduino 草图的效率。通过集成常用的 Arduino 开发流程,vim-arduino 可以帮助程序员在熟悉的 Vim 环境...

    vim jeffy插件和配置

    linux下用vim编辑器配合jeffy插件实现比较顺手的编程环境。Jeffy插件和配置文件(.vim):代码高亮 自动提示等。 vim版本必须大于7.1。 1,备份下vim配置文件(可选) 2,解压jeffy-vim.zip 和里面的jeffy-vim-read.tar...

Global site tag (gtag.js) - Google Analytics