Neovim 내의 terminal 중에서 Neovim 조작
Neovim의 터미널에서 작업 할 때 "이 디렉토리를 시작으로 Vim 명령을 실행하고 싶다"는 것이 종종 있습니다. 보다 구체적으로는, 「current 디렉토리를 건네주어 denite 를 기동하고 싶다」라고 생각했군요.
몇 가지 방법은 있다고 생각합니다만, 이것을 이하와 같이 실현하는 것을 생각했습니다.
$chpwd_functions
를 사용합니다. Neovim 공식 Wiki을 보면 어쨌든 모든 언어로 Neovim을 조작 할 수 있음을 알 수 있습니다. 이번에는 (아마) 가장 주요한 Python으로 써 보았습니다.
Python으로 Neovim에 연결
neovim-client 모듈을 사용합니다. 미리 설치해 둡시다.
pip3 install neovim
이제 Neovim에 연결하려면 attach
함수를 사용합니다. $NVIM_LISTEN_ADDRESS
라는 환경 변수에 Socket 파일의 전체 경로가 전달되어 있으므로 이것을 사용합시다.
neovim_pwd.pyimport os
from neovim import attach
nvim = attach('socket', path=os.environ['NVIM_LISTEN_ADDRESS'])
나중에 command
메서드에서 Vimscript를 실행할 수 있습니다.
neovim_pwd.pynvim.command('let b:__pwd__ = "{}"'.format(os.getcwd()))
이것뿐입니다. 실제로는 디렉토리명의 이스케이프나 환경 변수가 설정되어 있지 않았을 때의 대응도 필요합니다. 정식 버전의 소스는 여기에 있습니다.
나중에이 파이썬 스크립트를 zsh로 설정하기 만하면됩니다.
.zshrcneovim-pwd() {
(( $+commands[neovim_pwd.py] )) && neovim_pwd.py
}
if [[ -n $NVIM_LISTEN_ADDRESS ]]; then
neovim-pwd
chpwd_functions+=( neovim-pwd )
fi
이와 같이 .zshrc
에 추기해 두면, Neovim 내의 단말에서만, 현재 디렉토리를 Neovim 에 통지해 줍니다. 후에는 Vim 측에서 이것을 사용하는 것 뿐이지요.
.vimrc" ステータスラインにカレントディレクトリーを表示します
tnoremap <A-z><A-z> <C-\><C-n>:echo 'pwd is ' . b:__pwd__<CR>i
noremap <A-z><A-z> :echo 'pwd is ' . b:__pwd__<CR>
" カレントディレクトリーから denite を起動します
tnoremap <A-z><A-n> <C-\><C-n>:call denite#start([{'name': 'file', 'args': ['', b:__pwd__]}])<CR>
noremap <A-z><A-n> :call denite#start([{'name': 'file', 'args': ['', b:__pwd__]}])<CR>
훌륭하게, 단말내로부터 현재 디렉토리가 통지되어 있습니다. 직접 denite도 시작할 수 있습니다. 편리하네요.
hook - How can I run a command in bash after any change in $PWD? - Unix & Linux Stack Exchange ↩
Reference
이 문제에 관하여(Neovim 내의 terminal 중에서 Neovim 조작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/delphinus/items/6394a83b2db3311e71db
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
pip3 install neovim
import os
from neovim import attach
nvim = attach('socket', path=os.environ['NVIM_LISTEN_ADDRESS'])
nvim.command('let b:__pwd__ = "{}"'.format(os.getcwd()))
neovim-pwd() {
(( $+commands[neovim_pwd.py] )) && neovim_pwd.py
}
if [[ -n $NVIM_LISTEN_ADDRESS ]]; then
neovim-pwd
chpwd_functions+=( neovim-pwd )
fi
" ステータスラインにカレントディレクトリーを表示します
tnoremap <A-z><A-z> <C-\><C-n>:echo 'pwd is ' . b:__pwd__<CR>i
noremap <A-z><A-z> :echo 'pwd is ' . b:__pwd__<CR>
" カレントディレクトリーから denite を起動します
tnoremap <A-z><A-n> <C-\><C-n>:call denite#start([{'name': 'file', 'args': ['', b:__pwd__]}])<CR>
noremap <A-z><A-n> :call denite#start([{'name': 'file', 'args': ['', b:__pwd__]}])<CR>
Reference
이 문제에 관하여(Neovim 내의 terminal 중에서 Neovim 조작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/delphinus/items/6394a83b2db3311e71db텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)