使用 vim 进行 FCEDIT,设置特殊的文本宽度

使用 vim 进行 FCEDIT,设置特殊的文本宽度

我正在使用 Kubuntu 20.04,但这是一个困扰我几十年的 bash 问题。

我的 USB 上有 .vimrc 和 .viminfo。因此,为了使用 vim 作为 FCEDIT 的编辑器,我设置了

export FCEDIT='vim -u /media/WE_MNT_HISTFIL/root/.vimrc'

这将使用选项调用 vim

textwidth=66

使普通应用程序具有自动换行等功能。

另一方面,我经常需要对很长的行调用“fc”,例如在脚本中。

每次调用“fc”后我必须设置:

textwidth=0

为了避免这种令人恼火的情况,我经过长期的 Google 搜索,然后开发了一个如下功能:

alias fc1='WEfunc_my_fc_alias'

function WEfunc_my_fc_alias() {

  /bin/cp -f "/media/WE_MNT_HISTFIL/root/.vimrc" /tmp/WEx_vimrc_tmp

  echo "set textwidth=0" >>/tmp/WEx_vimrc_tmp

  export FCEDIT='vim -u /tmp/WEx_vimrc_tmp'

  fc -1 -1

  export FCEDIT='vim -u /media/WE_MNT_HISTFIL/root/.vimrc'

}

我的问题是,请问有人知道更简单的解决方案吗?

据我所知,bash 不允许其他方式。

答案1

如果只是fc配置vim必须不同,那么您可以使用如下别名:

fc='FCEDIT="vim" fc'

这会在调用 fc 命令之前(并且只是为了调用 fc 命令)更改环境变量FCEDIT。您可以在双引号之间指定另一个自定义 vim 配置文件。

答案2

通读一下 vim 手册页:您正在寻找选项-c。您不必重写任何 vim rc 文件。使用 shell 包装函数有助于引用。

unalias fc
fc() { FCEDIT='vim -c "set tw=0"' builtin fc "$@"; }

... 显然这行不通。看来 bash 不尊重 FCEDIT 值中的内部引号,并执行此操作

vim -c '"set' 'tw=0"' temp_file_name

然而,这确实有效:

fcvim () { vim -c "set tw=0" "$@"; }
fc() { FCEDIT=fcvim builtin fc "$@"; }

另一方面,在 fc 编辑会话中,vim 似乎设置了filetype=sh。因此,您可以创建~/.vim/ftplugin/sh.vim包含 的set textwidth=0,并filetype plugin on在 中添加~/.vimrc,然后您不必担心调用 的任何特殊操作fc

相关内容