【问题标题】:Open neovim/nerdtree in directory given as argument在作为参数给出的目录中打开 neovim/nerdtree
【发布时间】:2021-06-30 10:33:55
【问题描述】:

我正在将 neovim 与 nerdtree 一起使用。当使用目录作为参数打开nvim 时,我想将其用作neovim 和nerdtree 的根目录。开箱即用,nerdtree 在那个目录中打开,但是一旦我打开一个文件,nerdtree 的根目录就会变回 shell 的当前目录。我希望 nerdtree 将该目录保留为 root。

我目前在我的.bashrc 中使用以下解决方法:

nvim_cd()
{
    if [ -d "${1}" ]; then
        local dir="${1}"
        shift 1
        ( cd "${dir}" && nvim "." "${@}" )
    else
        \nvim "${@}"
    fi
}
alias nvim=nvim_cd
alias vim=nvim

这很好用,但我想知道:有没有办法在init.vim 中实现这一点?

请注意,我只想在启动过程中更改根目录 nvim 以目录作为参数调用,所以 set autochdir 不是我要找的。​​em>

【问题讨论】:

  • 我投票结束这个问题,因为它更适合unix.stackexchange.com(shell 脚本/打包在 *nix 发行版中的应用程序)

标签: neovim nerdtree


【解决方案1】:

您可以通过 .bash_profile 或 .bahrc 中的这一行将 Neovim 设置为默认编辑器。

export EDITOR='nvim'

然后你可以使用这个脚本来指定一个目录,并通过 xargs 命令把它导入neovim。您可以将此行设为别名或函数。

$HOME/your/path/to/dir/  | xargs -r -I % $EDITOR %;

您可能要考虑检查我的搜索文件或目录的功能,然后在 neovim 中打开它们。挺好用的。。

function ds() {
   find $HOME -type d -name "*" ! -path "*/.git*" ! -path # You can exclude directories by specifiying their names.
   "*/__pycache__*" ! -path "*/venv*"  2>/dev/null | fzf | xargs -r -I % $EDITOR %;
}

此函数搜索您的目录并将选定的目录作为参数传递给neovim。上面的函数搜索你的主目录。您可能想考虑它可能会弹出一些不需要的目录,例如 library 或 .locals 文件夹。 因此,请使用此功能仅通过您的密码进行搜索。

function ds() {
   find . -type d -name "*" ! -path "*/.git*" ! -path # You can exclude directories by specifiying their names.
   "*/__pycache__*" ! -path "*/venv*"  2>/dev/null | fzf | xargs -r -I % $EDITOR %;
}

如何设置 NERDTree 切换到当前工作目录?

autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif

这将自动切换您的 NERDTree 并匹配您当前的工作目录。

如果您发现这个惊人的结果,请查看我的 link 到我的 NeoVim 配置。

【讨论】:

  • 虽然我很欣赏您的全面回答,但这看起来确实是我的.bashrc-workaround 的更复杂的替代方案(如前所述,它可以很好地满足我的特定目的)。我想要的是放弃任何 neovim 外部解决方法,转而支持实现相同目的的 neovim 设置(您的 vimscript 命令没有)。不过还是谢谢。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多