Tsuquyomi is a Vim plugin for TypeScript.
Tsuquyomi works as a client for TSServer(which is an editor service bundled into TypeScript). So, installing Tsuquyomi, your vim gets the following features provided by TSServer:
- Completion (omni-completion)
- Navigate to the location where a symbol is defined.
- Show location(s) where a symbol is referenced.
- Display a list of syntax and semantics errors to Vim quickfix window.
- and so on,,,
Tsuquyomi requires the following:
- Vim (v7.4.0 or later)
- Shougo/vimproc.vim
- Node.js & TypeScript (v1.5.0 or later)
This requires v7.4.0+, which means that you'll need to manually install.
brew install vim
sudo add-apt-repository ppa:fcwu-tw/ppa
sudo apt-get update
sudo apt-get install vim
See https://github.com/tpope/vim-pathogen for instructions to install pathogen itself (very simple one-line install, one-line config)
# create bundle folder if it doesn't exist
mkdir -p ~/.vim/bundle
# Install and compile procvim.vim
git clone https://github.com/Shougo/vimproc.vim.git ~/.vim/bundle/vimproc.vim
pushd ~/.vim/bundle/vimproc.vim
make
popd
# Install tsuquyomi
git clone https://github.com/Quramy/tsuquyomi.git ~/.vim/bundle/tsuquyomi
If you use NeoBundle for Vim plugin management, append the following to your .vimrc
:
NeoBundle 'Shougo/vimproc.vim', {
\ 'build' : {
\ 'windows' : 'tools\\update-dll-mingw',
\ 'cygwin' : 'make -f make_cygwin.mak',
\ 'mac' : 'make -f make_mac.mak',
\ 'linux' : 'make',
\ 'unix' : 'gmake',
\ },
\ }
NeoBundle 'Quramy/tsuquyomi'
And exec :NeoBundleInstall
.
(About vimproc installation, please see the original install guide.)
npm -g install typescript
Tsuquyomi supports Omni-Completion.
By the default, type <C-x> <C-o>
in insert mode, Tsuquyomi shows completions.
You can configure completion with the completeopt
option.
If you don't want the popup menu:
autocmd FileType typescript setlocal completeopt-=menu
If you want to show a method's signature in the preview window when you complete this method's arguments:
(The preview window isn't shown when completion properties or variables)
autocmd FileType typescript setlocal completeopt+=menu,preview
Type <C-]>
in normal mode or visual mode, Tsuquyomi navigates to the location where the symbol under the cursor is defined.
Alternatively, call the Ex command :TsuquyomiDefinition
or :TsuDefinition
.
(All Tsuquyomi's commands have aliases with short prefix 'Tsu'
.)
And type <C-t>
, Tsuquyomi moves the cursor to the location where the last <C-]>
was typed.
Type <C-^>
in normal mode or visual mode, Tsuquyomi shows a list of location where the symbol under the cursor is referenced.
Alternatively, call the Ex command :TsuquyomiReferences
.
When a buffer is saved, Tsuquyomi checks syntax and semantics. And if it contains errors, Tsuquyomi shows them to Vim quickfix window.
If your use TypeScript v1.6.0 or later, you can use :TsuquyomiGeterrProject
command.
This command shows all compilation errors contained in your project to quickfix window.
If you do not want to use the default mappings please add let g:tsuquyomi_disable_default_mappings = 1
to your .vimrc
file.
Make tsconfig.json.
For example:
{
"compilerOptions": {
"noImplicitAny": true,
"target": "es5",
"module": "commonjs"
}
}
When you change tsconfig.json after opening *.ts
files, you should exec :TsuquyomiReloadProject
command.
So, the changes of tsconfig.json are reflected in the TSServer.
Using the command :TsuquyomiRenameSymbol
, you can rename the identifier under the cursor to a new name.
If you want to rename identifiers including in comments, you can use :TsuquyomiRenameSymbolC
command.
For example, this command is useful when you want rename opt
in the following code:
/**
*
* @param opt
*
**/
var someFunc = (opt: any) => {...};
This feature does not have the default key mapping.
If you need, configure your .vimrc
. For example:
autocmd FileType typescript nmap <buffer> <Leader>e <Plug>(TsuquyomiRenameSymbol)
autocmd FileType typescript nmap <buffer> <Leader>E <Plug>(TsuquyomiRenameSymbolC)
Tsuquyomi can display tooltip window about symbol under the mouse cursor.
If you want to use this feature, configure .vimrc
as follows:
set ballooneval
autocmd FileType typescript setlocal balloonexpr=tsuquyomi#balloonexpr()
The ballonexpr
option is not available in terminal Vim. So, Tsuquyomi also provides a tooltip function tsuquyomi#hint()
.
For example:
autocmd FileType typescript nmap <buffer> <Leader>t : <C-u>echo tsuquyomi#hint()<CR>
The above example works in terminal Vim.
This feature requires TypeScript@1.6.0 or later and Vim plugins:
Execute the following command, your project information is displayed.
:Unite tsproject
The project information contains:
- tsconfig.json which the current buffer use.
- .ts(or .tsx) source files which TypeScript compiles. These files are determined by tsconfig.json
This feature requires Vim plugins:
If you have installed these plugins, calling the following Ex command, the outline of the current buffer is displayed.
:Unite outline
By the default, Tsuquyomi searches locally installed TypeScript. If not hit, Tsuquyomi uses TypeScript installed globally.
And execute the following command, you can confirm the path of tsserver:
:echo tsuquyomi#config#tsscmd()
If you want more details, please see doc.
- leafgarland/typescript-vim provides syntax highlight.
- jason0x43/vim-js-indent provides function of indent for both JavaScript and TypeScript.
npm install
./runtest.sh
MIT