在vim中的shell中编辑命令行

在vim中的shell中编辑命令行,shell,vim,Shell,Vim,我想解决一些笨拙的行为: 在vim中,我可以使用:terminal打开一个shell窗口。但是如果我在里面输入了一些东西,我就不能像普通的shell一样编辑它:我要么被困在一个无用的普通模式中,要么被困在一个插入模式中,在这个模式中我只能写新的字母或者在行尾删除它们。我不能把光标移到中间然后改变 cd ~/Picturs/MyLovelyHusbandAndChildren2017/VacationPhotos/Aruba 进入 不需要简单地删除从~/picture到结尾的所有内容并重写它。这

我想解决一些笨拙的行为:

在vim中,我可以使用
:terminal
打开一个shell窗口。但是如果我在里面输入了一些东西,我就不能像普通的shell一样编辑它:我要么被困在一个无用的普通模式中,要么被困在一个插入模式中,在这个模式中我只能写新的字母或者在行尾删除它们。我不能把光标移到中间然后改变

cd ~/Picturs/MyLovelyHusbandAndChildren2017/VacationPhotos/Aruba
进入


不需要简单地删除从
~/picture
到结尾的所有内容并重写它。这有什么办法吗?或者这是vim工作方式的一个基本限制?这让我很沮丧,因为我想在shell窗口中使用
ghci
,但这会降低响应速度。

可以在vim或neovim上进行一些特定配置来解决这个问题,在我的示例neovim中,我的init文件中有以下几行:

augroup neovim_terminal
    autocmd!
    " Enter Terminal-mode (insert) automatically
    autocmd TermOpen * startinsert
    " Disables number lines on terminal buffers
    autocmd TermOpen * :set nonumber norelativenumber
    " allows you to use Ctrl-c on terminal window
    autocmd TermOpen * nnoremap <buffer> <C-c> i<C-c>
augroup END
augroupneovim\u终端
自动驾驶!
“自动进入终端模式(插入)
autocmd TermOpen*startinsert
“禁用终端缓冲区上的数字行
autocmd TermOpen*:设置非编号或相关编号
“允许您在终端窗口上使用Ctrl-c
autocmd TermOpen*nnoremap i
螺旋端

请注意,
autocmd TermOpen*startinsert
,该行确保我在neovim上输入一个新终端后,它将处于惰性模式。

无法在vim 8.1I上复制。我没有这个问题:我可以为我的shell使用箭头键和正常键盘快捷键(我有
设置-o vi
)。
augroup neovim_terminal
    autocmd!
    " Enter Terminal-mode (insert) automatically
    autocmd TermOpen * startinsert
    " Disables number lines on terminal buffers
    autocmd TermOpen * :set nonumber norelativenumber
    " allows you to use Ctrl-c on terminal window
    autocmd TermOpen * nnoremap <buffer> <C-c> i<C-c>
augroup END