일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Sysinternals
- Android
- HLS
- Windows10
- kubectl
- Pod
- docker
- namespace
- wireshark
- deployment
- RTMP
- Python
- aws cli
- android studio
- Java
- ffmpeg
- golang
- nginx-media-server
- Flutter
- Shell script
- service
- VSCode
- configmap
- Kubernetes
- 행정구역분류
- aws
- ebpf
- spring cloud config
- dart
- macos
- Today
- Total
woonizzooni
MacOS 환경에서 vim 환경 설정 본문
Windows10환경에서 vim환경설정 을 MacOS에서 가능한 동일하게 설정,
윈도우즈에서는 gui vim이었다면 mac에서 vim은 터미널 환경에서의 vim임.
o 설치
neovim이 터미널에서 트루컬러를 지원하므로 neovim일 기본 vim에디터로 하자.
(https://github.com/morhetz/gruvbox/wiki/Terminal-specific)
$ brew install neovim
> vim을 neovim으로 변경 (~/.zshrc, ~/.bashrc, ~/.alias 등... 본인 환경에 적합한 곳에)
alias vim="nvim" alias vi="nvim" alias vimdiff="nvim -d" export EDITOR=/usr/local/bin/nvim |
> 기본 경로 확인
https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
https://github.com/neovim/neovim/blob/master/src/nvim/os/stdpaths.c
static const char *xdg_env_vars[] = {
[kXDGConfigHome] = "XDG_CONFIG_HOME",
[kXDGDataHome] = "XDG_DATA_HOME",
[kXDGCacheHome] = "XDG_CACHE_HOME",
[kXDGRuntimeDir] = "XDG_RUNTIME_DIR",
[kXDGConfigDirs] = "XDG_CONFIG_DIRS",
[kXDGDataDirs] = "XDG_DATA_DIRS",
};
#ifdef WIN32
[kXDGConfigHome] = "~\\AppData\\Local",
[kXDGDataHome] = "~\\AppData\\Local",
[kXDGCacheHome] = "~\\AppData\\Local\\Temp",
[kXDGRuntimeDir] = NULL,
[kXDGConfigDirs] = NULL,
[kXDGDataDirs] = NULL,
#else
[kXDGConfigHome] = "~/.config",
[kXDGDataHome] = "~/.local/share",
[kXDGCacheHome] = "~/.cache",
[kXDGRuntimeDir] = NULL,
[kXDGConfigDirs] = "/etc/xdg/",
[kXDGDataDirs] = "/usr/local/share/:/usr/share/",
#endif
:echo stdpath('data') --> ~/.config/nvim
:echo stdpath('data_dirs') --> ['/usr/local/share/nvim', '/usr/share/nvim']
:echo stdpath('config') --> ~/.local/share/nvim
:echo stdpath('config_dirs') --> ['/etc/xdg/nvim']
o 플러그인 목록 & 설치
> 경로 확정 : init.vim 파일 위치 및 플러그인이 저장될 위치 지정
구분 | 설치 직후 (기본 설정) | export 환경 변수 후 (경로 변경) |
stdpath('config') | ~/.config/nvim |
'export XDG_CONFIG_HOME=~/myenv' 후 |
stdpath('data') | ~/.local/share/nvim |
'export XDG_DATA_HOME=$XDG_CONFIG_HOME' 후 |
> vimrc 파일 생성 : ${XDG_CONFIG_HOME:-~/.config}/nvim/init.vim
$ mkdir -p ${XDG_CONFIG_HOME:-~/.config}/nvim;
$ touch ${XDG_CONFIG_HOME:-~/.config}/nvim/init.vim
> 패키지 매니저 설치 (vim-Plug : https://github.com/junegunn/vim-plug)
curl -fLo ${XDG_DATA_HOME:-~/.local/share}/nvim/site/autoload/plug.vim \ --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |
> init.vim 파일에 플러그인 목록 설정
call plug#begin(stdpath('data')."/plugged") Plug 'junegunn/vim-easy-align' if has("win32") Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } : 미설치되어 있는 경우 설치 else Plug 'Plug '/usr/local/opt/fzf' : brew로 설치했을 경우 endif Plug 'junegunn/fzf.vim' Plug 'scrooloose/nerdtree' Plug 'scrooloose/nerdcommenter' Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' Plug 'terryma/vim-multiple-cursors' Plug 'tpope/vim-surround' Plug 'morhetz/gruvbox' Plug 'neoclide/coc.nvim', {'branch': 'release'} " Use release branch "Plug 'neoclide/coc.nvim', {'tag': '*', 'branch': 'release'} " Or latest tag "Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'} " Or build from source code by use yarn: https://yarnpkg.com call plug#end() .... let g:coc_extension_root=stdpath('data')."/coc-extensions" ... |
> 플러그인 설치 : ${XDG_DATA_HOME:-~/.config}/nvim/plugged 에 설치됨.
:PlugInstall
coc.nvim (https://github.com/neoclide/coc.nvim)
목적
- 자동완성, lint 오류 검출 정도.
- autocompletion engine을 lsp (language-server-protocol)지원 플러그인인 coc.nvim으로 이용해볼 것이다.
(vim-lsp, ale등을 이용할 수도 있음)
대상 프로그래밍 언어
- 확장모듈 : json, python, java, html, html, xml
- 추가모듈 : c/c++/obj-c, bash, groovy
기타 참고
xcode 및 cli 툴 설치된 상태 (clang 등... path에 잡힌상태)
yarn, node, python 등 도 설치되어 있는 상태. 그 외 pre, 뭐 등등 필요한 것들도 다 있는 상태.
> Coc 확장 모듈 설치
:CosInstall coc-json
:CocInstall coc-python
:CocInstall coc-java
:CocInstall coc-html
:CocInstall coc-xml
아래 경로에 확장 모듈이 설치됨.
기본 (경로 설정 변경 전 : g:coc_extension_root) | 경로 설정 후 (g:coc_extension_root) |
~/.config/coc/extensions | XDG_DATA_HOME 미설정시 : ~/.local/share/nvim/coc/extensions XDG_DATA_HOME 설정시 : ${XDG_DATA_HOME}/nvim/coc-extensions |
python의 경우 language server 가 (=pyls) 설치되어 있어야 동작함. 내 환경에서만 이러나... 이런거 귀찮아서 이용하는 걸텐데..암튼
Python Language server 설치 (https://github.com/palantir/python-language-server)
$ pip3 install 'python-language-server[all]'
PYTHONPATH 변수 선언 (pyls 모듈이 설치된 곳에). 이게 경로에 잡혀있어야 연동됨 (중요)
export PYTHONPATH=/usr/local/lib/python3.7/site-packages
(내 맥 환경에서 python 버전별 PYTHONPATH
python 2.x : /Users/myname/Library/Python/2.7/lib/python/site-packages
python 3.x : /usr/local/lib/python3.7/site-packages)
> Coc 커스텀(?) 모듈 설치 (ccls, bash, groovy, ... )
C/C++/Objective-C Language server 설치 (https://github.com/MaskRay/ccls/wiki/Build)
직접 빌드는 귀찮으니, 리눅스가 주인데... 맥이지만 그냥 해놓는다.
$ brew install ccls --> llvm설치되는 과정이 무지 오래 걸림
$ which ccls
/usr/local/bin/ccls
bash Language Server 설치 (https://github.com/mads-hartmann/bash-language-server)
$ npm -i -g bash-language-server
$ which bash-language-server
/usr/local/bin/bash-language-server
Groovy Language Server 설치 (https://github.com/prominic/groovy-language-server)
$ git clone https://github.com/prominic/groovy-language-server.git
$ cd groovy-language-server
$ chmod 755 gradlew
$ ./gradlew build
$ cp build//libs/groovy-language-server-all.jar ${XDG_CONFIG_HOME:-~/.config}/nvim
설정 (참고 : Language servers https://github.com/neoclide/coc.nvim/wiki/Language-servers)
:CocConfig --> ${XDG_CONFIG_HOME:-~/.config}/nvim/coc-settings.json 파일 '없으면 생성' / '있으면 로딩'됨.
{
"languageserver": {
"ccls": {
"command": "ccls",
"filetypes": ["c", "cpp", "objc", "objcpp"],
"rootPatterns": [".ccls", "compile_commands.json", ".vim/", ".git/", ".hg/"],
"initializationOptions": {
"cache": {
"directory": "/tmp/ccls"
}
}
},
"bash": {
"command": "bash-language-server",
"args": ["start"],
"filetypes": ["sh"],
"ignoredRootPaths": ["~"]
},
"groovy": {
"command": "java",
"args" : ["-jar", "${XDG_CONFIG_HOME:-~/.config}/nvim/groovy-language-server-all.jar"],
"filetypes": ["groovy"]
}
}
}
ex)
c
java
다른 플러그인 들은 'Windows10환경에서 vim환경설정 ' 참고.
o 기타 참고
LSP - Language Server 목록 참고
https://microsoft.github.io/language-server-protocol/implementors/servers/
coc.nvim (https://github.com/neoclide/coc.nvim)
doc/coc.txt : g:coc_extension_root ==> Location that coc extensions would be installed to ...
src/extensions.ts : private async initializeRoot().. let root = this.root = await workspace.nvim.call('coc#util#extension_root')
src/model/extension.ts : private async _install(npm: ... let folder = path.join(this.root, 'node_modules', info.name)
autoload/coc/util.vim : function! coc#util#extension_root() ... let dir = get(g:, 'coc_extension_root', '')
vim-lsp (https://github.com/prabirshrestha/vim-lsp)
ALE = AsynchAsynchronous Lint Engine (https://github.com/dense-analysis/ale)
LanguageClient-neovim (https://github.com/autozimu/LanguageClient-neovim)
커스텀 설정 참고
Python Language Server 설정 (https://github.com/neoclide/coc.nvim/wiki/Language-servers#python)
{
"languageserver": {
"ccls": {
....
},
"bash": {
....
},
"python": {
"command": "python",
"args": [
"-mpyls",
"-vv",
"--log-file",
"/tmp/lsp_python.log"
],
"trace.server": "verbose",
"filetypes": [
"python"
],
"settings": {
...
}
}
}
}
Java Language Server 설치 및 설정 (Eclipse JDT Language Server 활용)
$ git clone https://github.com/eclipse/eclipse.jdt.ls
$ cd eclipse.jdt.ls
$ ./mvnw clean verify <-- 엄청 오래 걸림..
연동은... 여기 설명대로 args설정하면 될 것 같은데... 귀찮다. 나중에..
((필요시 업데이트 .... ))
'MISC' 카테고리의 다른 글
tcpdump SSL/TLS 패킷 복호화 (0) | 2019.10.18 |
---|---|
"VMware Workstation Pro은 Windows에서 실행할 수 없습니다" (0) | 2019.10.18 |
Windows10 환경에서 vim 환경 설정 (0) | 2019.09.17 |
Windows 패키지 매니저 chocolatey 설치 (0) | 2019.09.16 |
[Eclipse] Java Decompiler 설치, Procyon 선택 (0) | 2019.08.25 |