我正在尝试编写vim函数,该函数应使窗口转到先前打开的缓冲区。如何从命令行执行此操作?我的第一个建议是找出一些CTRL-O命令行替代方法。

评论

“应该在某个时候向后退”:到底应该向后退到哪里?您是指光标在文本缓冲区中吗(例如,就像您在普通模式下键入b一样)?

@Carpetsmoker,我已经编辑了问题以使主题更清晰

您的问题标题与文字一起并没有什么意义。请更新问题和/或标题,以使其对将来的访问者更有用。

相关文章:如何使用跳转列表为每个文件跳转一次?

#1 楼

跳转列表不是执行缓冲区导航的最佳方法。 Vim有大量的缓冲区导航工具,可能会更好地用于此任务。



<c-^> / <c-6>-跳转至备用文件,或者提供计数信息。一定的缓冲区号。请参阅:h CTRL-6


:b-跳转到特定的缓冲区。获取缓冲区号或部分文件名。请参见:h :b


:sb-:b的拆分变体


:ls / :buffers-列出打开的缓冲区。请参阅:h :ls


#用来表示备用文件,该文件通常是前一个缓冲区。例如:b#。请参阅:h c_#

公用映射nnoremap <leader>b :ls<cr>:b<space>


如果您确实想使用跳转列表,则可以查看Ingo Karkat的EnhancedJumps插件或查看vim-buffer -history插件类似。

评论


感谢您提供更多答案。因此,b#命令是解决我的问题的最佳方法。

– ephemerr
17年5月5日在7:21

哇,阅读此答案大大改善了我的nvim缓冲区管理! :D非常感谢您!

–Isti115
20-11-28在15:54



#2 楼

您还可以使用Ctrl + o返回上一个缓冲区。您可以继续按相同的命令转到上一个先前的缓冲区。

您还可以使用Ctrl + i向前转到下一个缓冲区。也就是说,如果您按Ctrl + o转到上一个缓冲区,则可以使用Ctrl + i转到第一个/原始缓冲区。

#3 楼

这对我有用,将我带回到alternate缓冲区。对我而言,这始终是以前的缓冲区:
function! MoveBack()
     edit #
endfunction


评论


这是正确的答案!

– Punit Soni
20年9月1日下午5:06

#4 楼

我找到了使用normal命令的解决方案。我的函数中会有这样一行:

exe "normal \<C-O>"


评论


那不会转到以前的打开缓冲区。它会转到跳转列表中的最后一个位置,该位置可能在同一缓冲区中。 Ctrl- ^呢?

– B层
17年4月4日在10:06

另外,您不需要exe。尝试正常! ^ O,其中先按Ctrl-V,再按Ctrl-O,即可插入^ O。

– B层
17年4月4日在10:10



好点子。如果i_Ctrl-v已被占用,请参见:h i ^ v(通常是Ctrl-q)。另一种方法是使用有向图,在这种情况下,在插入模式下,首先键入Ctrl-k,然后键入Ctrl-o两次,将插入Ctrl-o。

– qeatzy
17-12-5'2:52