-
Notifications
You must be signed in to change notification settings - Fork 0
vim Setup
vimはそれぞれの用途と好みに合わせてカストマイズして使うことが大前提のエディタ
ただ、そのカストマイズについて構造的に解説してくれているドキュメントが殆どないのが、初心者にとって辛い
単にTIPSの集積となってしまっていて、どうアプローチし、どの部分をどのやり方でカストマイズすべきなのか、構造的に説明した文章が無いので、モヤモヤした状態のままに妥協して使っている感じになっている
- カストマイズは.vimrcで行う
- vimエディター自体の画面の設定、option設定を「:set」記述で行う
- エディターのキーアサインの変更、設定を「nnormap」「onormap」記述で行う
- 表示職の設定、カーソルの色設定などを記述
- plugin管理ツールの設定をし、.vimrcファイルに読み込むべきpluginの設定を記述
- 開発者として必要なLanguageServer、及びそのclientの設定を記述
- 開発をサポートするpluginのカストマイズ設定の追加
-
https://qiita.com/evistream/items/fbda12bbc1742dcb3bdb
- apple-scriptとして設定し、アイコンも設定(アイコンは画像自体を開いてコピー&情報を表示でアイコンを選択して貼り付け)
on run{input}
if input is {} then
set cmd to "vim"
else
set the_path to POSIX path of input
set cmd to "vim " & quoted form of the_path
end if
tell application "iTerm"
activate
create window with profile "Vim Launcher Profile" command cmd
end tell
end run
https://www.vim.org/
sourceから最新版をmake , sudo make installで入れる
詳細はREADMEdoc/* src/INSTALL を参照のこと
cui版でありながら、普通にマウスも使える。gvimはいらないかもしれない。
macでcompileする際には make, make test, sudo make installで入れるが、make testでエラーが出るかもしれない
glibtool: command not found
glibtoolはhomebrewを使っていれるのが楽だ。vimのINSTALL.macにstack-overflowで検索しろ、と書いてあるのは笑った
glibtool is "GNU Libtool". It is typically installed as libtool on most systems,
but because macOS has its own libtool that has completely different functionality,
it is usually installed as glibtool on macOS.
If you can't directly use homebrew to install it,
you can duplicate the steps in its recipe,
which you can find here: https://github.com/Homebrew/homebrew-core/blob/master/Formula/libtool.rb
For the sake of keeping this answer "working" even if homebrew goes away,
the homepage for libtool is https://www.gnu.org/software/libtool/
and you can follow the instructions there for information on how to build and install it.
brew install libtool
vim ver.8からは標準のplugin機能が、実装されたものの、多くのプラグインがこれを使うので、入れる
https://www.vim.org/scripts/script.php?script_id=2555 一部の設定は上書きする
vimのlangage server client
https://github.com/prabirshrestha/vim-lsp
vimのgolang langage server
GO111MODULE=on go get golang.org/x/tools/gopls@latest
https://github.com/golang/tools/blob/master/gopls/README.md
vimのlanguage server clientを使ってgolangをハンドリングするplugin
https://github.com/govim/govim
:cw でエラー内容などがcondole windowに表示される。エラーが解消すると、メッセージは消える。
オムニ補完を起動するにはc-x,c-oを打鍵する必要がある。
オムニ補完モードに入ると、自動的にトップにウインドウが開くが、これをしない方法はないのか?
言語ごとに、その言語をハンドリングするpluginと、言語ごとのlanguage serverが必要になる
プログラムソースを編集開始する前には、今回のソースのlanguage serverに着替えてから編集を開始する(当然か?)
https://github.com/derekparker/delve
go getでintallbr>
xcodeのコマンドラインは、すでにx-codeをインストール済みのため、すでにインストールされているとエラーになる
https://github.com/sebdah/vim-delve
https://note.com/miyazi777/n/nb2f520f91ed6
vim側でmouseを使えるようにしてしまうと、vim上では、iTerm2のselection -> clippboardとかの制御が、きかなくなる
mac上では下に書いたclipboard設定をすることで、yancからc+vでブラウザの画面などに貼り付けられる
入力ソース設定onVim
- ESCをおしたら日本語入力を切る
- google日本語入力の設定で対応 環境設定画面 一般->キー設定の選択で、編集ドロップダウンでエントリーをを追加
- この設定をすると、タスクバーの表示が日本語のまま、入力は英数になったりする。表示の制御がちゃんとできていない
- 日本語をONにしたらinsert modeにする: これはまだ手段が見つかっていない
- https://www.soum.co.jp/misc/vim-no-susume/12/
:set clipboard=unnamed
で、pがシステムのクリップボードから貼り付ける形に設定変更した
yはシステムのクリップボードにyancするようになる
call plug#begin('~/.vim/plugged')
Plug 'rust-lang/rust.vim'
"Plug 'govim/govim'
"Plug 'sebdah/vim-delve', {'for': ['go'] }
"Plug 'ryanolsonx/vim-lsp-javascript'
Plug 'nanotech/jellybeans.vim'
Plug 'prabirshrestha/vim-lsp'
Plug 'prabirshrestha/async.vim'
Plug 'prabirshrestha/asyncomplete.vim'
Plug 'prabirshrestha/asyncomplete-lsp.vim'
Plug 'Shougo/vimproc.vim', {'do' : 'make'}
Plug 'Shougo/vimshell.vim'
Plug 'mattn/vim-lexiv'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
call plug#end()
colorscheme jellybeans
let g:jellybeans_overrides = {
\ 'background': { 'ctermbg': 'none', '256ctermbg': 'none' },
\ 'CursorLine': { 'ctermbg': 'none', '256ctermbg': 'none' },
\ 'Statement': { 'ctermfg': 'Blue', '256ctermfg': 'Blue' },
\}
if has('termguicolors') && &termguicolors
let g:jellybeans_overrides['background']['guigb'] = 'none'
endif
syntax enable
hi Directory term=bold cterm=bold ctermfg=12 gui=bold guifg=blue
hi Comment term=underline ctermfg=12 gui=bold guifg=blue
hi CursorColumn term=reverse ctermbg=240 guibg=DarkGrey
hi CursorLine term=underline cterm=underline gui=underline
let g:netrw_liststyle=3
let g:netrw_altv=1
let g:netrw_alto=1
if executable('rls')
au User lsp_setup call lsp#register_server({
\ 'name': 'rls',
\ 'cmd': {server_info->['rustup', 'run', 'nightly', 'rls']},
\ 'whitelist': ['rust'],
\ })
autocmd FileType rust nmap <buffer> gd <plug>(lsp-definition)
autocmd FileType rust nmap <buffer> ,n <plug>(lsp-next-error)
autocmd FileType rust nmap <buffer> ,p <plug>(lsp-previous-error)
endif
"golang
"if executable('gopls')
" au User lsp_setup call lsp#register_server({
" \ 'name': 'go-lang',
" \ 'cmd': {server_info->['gopls']},
" \ 'whitelist': ['go'],
" \ })
" autocmd FileType go setlocal omnifunc=lsp#complete
" autocmd FileType go nmap <buffer> gd <plug>(lsp-definition)
" autocmd FileType go nmap <buffer> ,n <plug>(lsp-next-error)
" autocmd FileType go nmap <buffer> ,p <plug>(lsp-previous-error)
" autocmd BufWritePre *.go LspDocumentFormatSync
"endif
"if executable('typescript-language-server')
" au User lsp_setup call lsp#register_server({
" \ 'name': 'javascript support using typescript-language-server',
" \ 'cmd': {server_info->[&shell, &shellcmdflag, 'typescript-language-server --stdio']},
" \ 'root_uri':{server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), 'package.json'))},
" \ 'whitelist': ['javascript', 'javascript.jsx', 'javascriptreact'],
" \ })
" autocmd FileType javascript nmap <buffer> gd <plug>(lsp-definition)
" autocmd FileType javascript setlocal omnifunc=lsp#complete
"endif
let g:lsp_async_completion = 1
let g:lsp_diagnostics_enabled = 1
let g:lsp_diagnostics_echo_cursor = 1
let g:lsp_text_edit_enabled = 0
let g:lsp_highlight_references_enabled = 1
let g:asyncomplete_auto_popup = 1
let g:asyncomplete_auto_completeopt = 0
let g:asyncomplete_popup_delay = 200
let g:rustfmt_autosave = 1
"innotations
inoremap <expr><CR> pumvisible() ? "<C-y>" : "<CR>"
set completeopt=menuone,noinsert
inoremap <expr><C-n> pumvisible() ? "<Down>" : "<C-n>"
inoremap <expr><C-p> pumvisible() ? "<Up>" : "<C-p>"
"quickfix
autocmd QuickfixCmdPost make,grep,vimgrep if len(getqflist()) != 0 | copen | endif
"autocmd QuickfixCmdPost *grep* copen
nnoremap <silent> <C-n> :<C-n>cnext<CR>
nnoremap <silent> <C-p> :<C-p>cprev<CR>
set nu
set encoding=utf-8
set fileencodings=utf-8,iso-2022-jp,cp932,sjis,euc-jp
set listchars=tab:»-,trail:-,eol:↲,extends:»,precedes:«,nbsp:%
set fileformats=unix,dos,mac
set tabstop=4
set shiftwidth=4
set noswapfile
set nocompatible
set nowritebackup
set nobackup
set autoread
set hidden
set showcmd
set showmatch
set cursorline
set cursorcolumn
set laststatus=2
set wildmode=list:longest
set ignorecase
set smartcase
set wrapscan
set hlsearch
set mouse=a
"set ttymouse=xterm2
set ttymouse=sgr
set updatetime=500
set balloondelay=250
set autoindent
set smartindent
set backspace=2
set clipboard=unnamed
filetype indent on
filetype plugin on
nmap <Esc><Esc> :nohlsearch<CR><Esc>
- cursorの画面移動 左画面へ:<C-w>h 同様に j, k, l
- 画面自体を移動する 縦分割して左に:<C-w>H 同様に J, K, L