REPL,即read-eval-print loop,最早出现在Lisp中,Emacs的
Slime模式编写lisp非常方便。在Slime中流程是这样:
- 编写小段代码
- <C-c><C-c>运行小代码
- 查看結果,继续编写小段代码
整个过程不用在编辑器和解释器之间来回切换。在vim下也是可以做到这样,虽然可能实现并不怎么完美。
ConqueTerm可以在vim在模拟Terminal,运行:ConqueTermSplit ipython就可以分割一个窗口并在其中执行ipython解释器。在另一个窗口中选中一段python代码,按<F9>就可以执行选中代码,这已经很接近于Emacs的Slime,但有几个缺点:
- 对python代码不能自动执行,需要手动再按一个回车,因为ConqueTerm会将选中代码的多余回车给删掉。
- 执行之后,自动选中了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执行。
现在大致工作流程是这样:
- 打开vim编辑python文件
- :ConqueTermSplit ipython打开python解释器(或者用,tp)
- 选中代码,按<C-c><C-c>就可以直接在ConqueTerm中看到执行結果了。
编辑ruby,groovy等也是一样的,只需要将ipython换成相应解释器就行了。
分享到:
相关推荐
因此,我编写此插件是为了提供更好的repl环境,以便在vim中编码python或其他文件。 它使用vim8的终端功能。 因此,您的vim版本必须不少于8.0,并且支持termianl函数才能使用此插件。如果您想阅读中文文档,请移步:...
壁炉Fireplace中有一个REPL,但如果我没有告诉过您,您可能不会注意到。 这是firewall.vim的方法。 顺便说一句,此插件用于Clojure。安装首先,设置 。 (如果您跳过此步骤,则只有一部分功能可用。) 使用您喜欢的...
vim使用手册:基础篇、插件篇等
vim常用插件: 1. omnicppcomplete-0.41.zip 2. taglist_46_vim.zip 3. vim-autocomplpop.zip
【vim使用进阶】系列教程深入探讨了vim编辑器的高级使用技巧,涵盖了vim的配置、命令、插件以及各种实用功能。以下是对各部分主要内容的详细解释: 1. **序言**:作者分享了使用vim的心得体会,对初学者提出了一些...
这些插件使得Vim从一个基础的文本编辑器转变为一个功能齐全的开发环境。 ### 配置Vim插件 1. **安装插件管理器**:通常,我们首先需要一个插件管理器,如`Vundle`、`Pathogen`、`NeoBundle`或`Plug`。以`Plug`为例...
本篇将详细介绍 Vim 插件在Linux环境下的使用,以及如何管理和配置这些插件。 首先,`.viminfo` 文件是Vim的会话信息存储文件,它记录了用户在Vim中的各种操作历史,如打开过的文件、光标位置、搜索历史等。当你...
2. 代码自动补全插件:例如,YouCompleteMe插件可以根据当前的编码环境提供智能的代码自动补全。 3. 文件浏览插件:例如,NERDTree插件可以提供一个文件浏览器,方便用户浏览和管理文件。 4. 代码格式化插件:例如,...
以下将详细介绍标题和描述中提到的7款优秀Vim插件,以及它们如何帮助你打造完美的IDE。 1. **NERD Tree** NERD Tree是Vim的一个文件系统浏览器,它允许用户在左侧窗口中方便地浏览项目结构,快速打开、关闭、创建...
对于习惯使用Vim编辑器的开发者来说,Eclipse的Vim插件提供了一个在Eclipse环境中模拟Vim编辑模式的功能,使得用户可以在Eclipse中享受到与Vim相似的编辑体验,无需频繁切换工具。 ** Vim插件安装与配置** 1. 在...
病毒者vim-venter是一个vim插件垂直将当前窗口水平居中 在大型显示器上处理一个文件时,这主要有用与类似,但保留功能(状态栏,制表符等)安装vim插件将Plug 'jmckiern/vim-venter'添加到.vimrc 然后在vim中运行:...
这些插件的整合,使得vim/gvim成为了一个功能强大的开发环境,即使没有图形界面,也能享受到便捷的开发体验。每个插件都有其独特的功能,相互配合可以大大提高编程的生产力。熟练掌握这些插件的使用,会让你在代码...
以上插件都是为了提升Vim在开发环境中的效率和舒适度,通过安装和配置这些插件,可以使Vim成为更加强大的代码编辑工具。每个插件都有其独特的功能和用处,可以根据个人的编程习惯和需求选择合适的插件进行安装。
为了提升其编辑体验,用户可以通过安装各种插件来扩展其功能,其中Vim插件就是一种非常实用的选择。Vim是一款高度可配置的文本编辑器,以其高效的操作方式和丰富的命令集闻名。将Vim集成到Notepad++中,可以使熟悉...
8. **插件管理**:Vim社区有许多流行的插件管理工具,如Vundle、Pathogen或NeoBundle,可以帮助你方便地管理和更新Vim插件。 9. **更新和升级**:定期使用pacman更新系统和已安装的包,以确保所有组件都是最新的。 ...
REPL与Vim和Neovim上的:terminal很好地配合是一个Vim和Neovim插件,可以使编辑缓冲区很好地与REPL一起播放。 REPL在:terminal窗口中运行编辑缓冲区和REPL之间的交互从/向/向REPL发送编辑缓冲区的源使用REPL实时自动...
Vim是一款强大的文本编辑器,深受程序员和系统管理员的喜爱,尤其在集成电路(IC)工程师中广泛应用。...通过安装和配置这些插件,用户可以构建一个高效、定制化的开发环境,更好地应对集成电路设计中的各种挑战。
而“VSCode+Vim插件”指的是在VSCode中安装并使用Vim模拟器,将VSCode转换为具有Vim编辑模式的环境,让习惯于Vim操作的开发者可以在VSCode中享受到类似Vim的高效编码体验。 Vim是一款历史悠久且功能强大的文本编辑...
**vim-arduino** 是一个专为 Arduino 开发者设计的 Vim 插件,它极大地提升了在 Vim 编辑器中编写、编译和上传 Arduino 草图的效率。通过集成常用的 Arduino 开发流程,vim-arduino 可以帮助程序员在熟悉的 Vim 环境...
linux下用vim编辑器配合jeffy插件实现比较顺手的编程环境。Jeffy插件和配置文件(.vim):代码高亮 自动提示等。 vim版本必须大于7.1。 1,备份下vim配置文件(可选) 2,解压jeffy-vim.zip 和里面的jeffy-vim-read.tar...