如何在Vim内置终端模拟器中打开文件且避免嵌套启动Vim
方案1:从内置终端拆分窗格打开目标文件
临时操作步骤
- 焦点处于内置终端窗口时,按
Ctrl+\ Ctrl+N切换到终端普通模式,该模式下可像操作普通Vim缓冲区一样移动光标 - 将光标移动到目标文件名(如
foo.txt)位置,按对应快捷键完成拆分打开:- 水平拆分打开:
Ctrl-W f - 垂直拆分打开:
Ctrl-W v f - 新标签页打开:
Ctrl-W gf
- 水平拆分打开:
永久配置方案(无需切换模式,直接在终端命令行调用打开)
在shell配置文件(~/.bashrc/~/.zshrc等)中加入别名配置:
# 直接在当前Vim窗口打开文件 alias v='f() { if [ -n "$VIM_TERMINAL" ]; then vim --remote-silent "$@" else vim "$@" fi };f' # 垂直拆分打开文件 alias vs='f() { if [ -n "$VIM_TERMINAL" ]; then vim --remote-send "<C-\><C-N>:vsplit $@<CR>" else vim "$@" fi };f' # 水平拆分打开文件 alias sp='f() { if [ -n "$VIM_TERMINAL" ]; then vim --remote-send "<C-\><C-N>:split $@<CR>" else vim "$@" fi };f'
配置完成后执行source ~/.bashrc(对应你用的shell配置文件)生效,后续在内置终端中直接执行vs foo.txt即可垂直拆分打开目标文件,不会触发Vim嵌套。
方案2:将主Vim工作目录切换为内置终端当前工作目录
临时操作步骤
焦点处于内置终端窗口时,按Ctrl-W :唤起Vim命令行,执行以下命令即可完成目录同步:
:cd `=job_info(b:term_job)['cwd']`
执行完成后主Vim的工作目录就会切换为内置终端的当前工作目录,直接执行:e foo.txt即可打开对应文件。
永久配置方案(一键同步目录)
在~/.vimrc中加入如下配置,绑定快捷键一键同步目录:
" 终端普通模式下按<leader>cd同步目录 autocmd TermOpen * nnoremap <buffer> <leader>cd :cd `=job_info(b:term_job)['cwd']`<CR>:pwd<CR> " 终端插入模式下按<leader>cd同步目录,同步完成后自动回到插入模式 autocmd TermOpen * inoremap <buffer> <leader>cd <C-\><C-N>:cd `=job_info(b:term_job)['cwd']`<CR>:pwd<CR>a
配置生效后,在内置终端窗口按\cd(默认leader键为反斜杠)即可完成目录同步,命令行会输出同步后的工作目录确认结果。
内容的提问来源于stack exchange,提问作者Kutub Gandhi
相关产品推荐
相关产品推荐

