T-codeのためのuimの設定
Global settings
- Candidate window type は "Table style"
TUT-Code
- Use pseudo table style layout は off
- Use stroke help window は on
- Use auto help window は on
- Show real keys on auto help window は off
jedi-vimとneocomplete.vimを併用する際に行っておきたい設定
この記事は Vim Advent Calendar 2013 53日目の記事になります。
neocomplete.vim利用者がjedi-vimも使う場合、下記の id:heavenshell さんご指摘の点を不満に思われるのではないかと思います。
jedi.vim の popup_select_first が効かない
これをアドホックな対応ですませないためにはどう設定するとよいかをvim-users.jp – Lingrで質問したところ Shougoさんから下記の設定を教えていただきました。
autocmd FileType python setlocal omnifunc=jedi#completions
"let g:jedi#popup_select_first=0
let g:jedi#completions_enabled = 0
let g:jedi#auto_vim_configuration = 0
let g:neocomplete#force_omni_input_patterns.python = '\%([^. \t]\.\|^\s*@\|^\s*from\s.\+import \|^\s*from \|^\s*import \)\w*'
1行目でomnifuncにjediを用いたneocompleteによる補完が設定され、3,4行目でjedi-vimの補完機能は切る、といった具合のようです。
2行目にcomment outして書いた設定はjedi-vimの機能なのでこれを設定しても意味は無いようです。
(書いても意味が無いので書かないのがいいと思います、という意図です。)
最後の行はimport系についての補完の配慮のようです。
omnifunc以外のneocompleteの機能をdisableしてomnifuncの方に専念させるということのようです。
このissueだけを見ていると3,4行目の設定だけで済ませてしまいそうですが その場合、omnifuncにpythoncompleteが適用され、jediの補完は効いていないようです。 pythoncompleteよりもjediの方が何かとよい(pythoncompleteはjediよりもモタる気がします) ようなので1行目の設定も書かれることをおすすめします。
また id:osyo-manga さんから
わたしは g:neocomplete#sources#omni#functions.python に jedi#completions を設定して使用しているなー
というご意見もいただいたのですが、Shougoさんによると
それでもよいですが、omni sourceは互換性に難があるので動かない補完関数があります
聞いたところによると、jediでも問題が起こるらしい。
詳細はよく分かりません
とのことです。
伝聞調ばかりですみません。以上です。
T-code best practices その4 VimでT-code (漢直advent calendar 10日目)
このentryは漢直advent calendarの10日目です。
VimのT-code(TUT-code)入力plugin tcvime
Vimmerの方にもT-code入力用pluginがあるので紹介します。 detonさん作のtcvimeがそうです。
tcvimeのinstall
pathogenとかを使ってもらえればokです。 今のtcvimeはencodingがutf-8になっておりかつT-code用のkeymap tcode.vim も同梱されるようになったのでOSを問わずinstallが楽にできるようになって います。
tcvimeのT-code用の設定
tcvimeのdocに書いてありますが、T-code用の最低限の設定は下記になります。 vimrcに追記してください。
if has('keymap')
let tcvime_keymap_for_help = 'tcode'
set iminsert=0 imsearch=0
imap <unique> <C-J> <C-R>=<SID>EnableKeymap()<CR>
imap <silent> <unique> <C-L> <C-R>=<SID>DisableKeymap()<CR>
imap <silent> <unique> <ESC> <ESC>:set imsearch=0<CR>
endif
function! s:EnableKeymap()
" 既にオンの場合は何もしない
if &iminsert
return ''
endif
call tcvime#SetKeymap(g:tcvime_keymap_for_help)
" <Space>で前置型交ぜ書き変換を開始するか、読みが無ければ' 'を挿入。
" (lmapにすると、lmap有効時にfやtやrの後の<Space>が使用不可。(<C-R>=なので))
imap <silent> <Space> <C-G>u<Plug>TcvimeIConvOrSpace
return "\<C-^>"
endfunction
function! s:DisableKeymap()
" 既にオフの場合は何もしない
if !&iminsert
return ''
endif
set iminsert=0
silent! iunmap <Space>
TcvimeCloseHelp
return "\<C-^>"
endfunction
" lmapのカスタマイズを行う関数。
" tcvime#SetKeymap()からコールバックされる。
function! TcvimeCustomKeymap()
" tc2同様の後置型交ぜ書き変換を行うための設定:
" " 活用しない語
" lmap <silent> 18 <C-G>u<C-R>=tcvime#InputPostConvert(1, 0)<CR>
" lmap <silent> 28 <C-G>u<C-R>=tcvime#InputPostConvert(2, 0)<CR>
" lmap <silent> 38 <C-G>u<C-R>=tcvime#InputPostConvert(3, 0)<CR>
" lmap <silent> 48 <C-G>u<C-R>=tcvime#InputPostConvert(4, 0)<CR>
" " 活用する語(ただしtc2と違って、読みの文字数には活用語尾は含まない)
" lmap <silent> 29 <C-G>u<C-R>=tcvime#InputPostConvert(2, 1)<CR>
" lmap <silent> 39 <C-G>u<C-R>=tcvime#InputPostConvert(3, 1)<CR>
" lmap <silent> 49 <C-G>u<C-R>=tcvime#InputPostConvert(4, 1)<CR>
" lmap <silent> 59 <C-G>u<C-R>=tcvime#InputPostConvert(5, 1)<CR>
endfunction
とりあえずこれでinsert modeに入ってからC-j
することでT-codeと交ぜ書き
変換を行うことができます。
(T-codeを無効にするにはC-l
します)
明日はもう少しtcvimeについてお話しようと思います。
T-code best practices その3 (漢直advent calendar 7日目)
このentryは漢直advent calendarの7日目です。
tcの使い方も少し
前回紹介したfj
での交ぜ書き変換以外に知っておくとよさそうなtcの使い方
を書いてをみます。
?が便利
tcode-mode中に?
keyを押下すると下記のhelpが表示されます。
この中でとりあえず使ってほしいのは44, 55, [1-4]8, [2-5]9です。
[1-4]8, では活用しない語の変換 [2-5]9, では活用する語の変換を行います。
部首合成変換はよっぽど漢直の達人にならない限りまだやらんでいいと思いま す。
T-codeのcustomize
T-codeのmanual.pdfに書いてありますが $HOME/.tcに
;;; -*-emacs-lisp-*- This file is automatically created
(setq tcode-data-directory "/Users/kozo2/tcode/")
(setq tcode-default-input-method "japanese-T-Code")
(setq tcode-key-layout "qwerty")
(add-hook 'tcode-after-load-table-hook
(lambda ()
(when (eq tcode-input-method 'tcode)
(tcode-set-action-to-table '(23 29) "頂"))))
みたいな設定を書くとT-codeのcustomizeができます。
f;
では本来「額」が入るはずですがこの設定の場合「頂」が入ります。
23,29はそれぞれ「f」と「;」のkey codeです。
よく使う漢字がT-codeに無い場合こんな感じでcustomizeしてください。
次はVimのT-code(TUT-code)入力環境tcvimeを紹介しようと思います。
T-code best practices その2 (漢直advent calendar 5日目)
このentryは漢直advent calendarの5日目です。5日目以降もその3、その4と続きます。
EmacsのT-code(TUT-codeも、の)入力用機能拡張のtcの導入方法
Emacs24を使い、melpaからのinstallをおすすめします。 autotoolsが必要無くinstallが簡単に行えます。
init.elに
(require 'package)
(add-to-list 'package-archives
'("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)
を追加します。 上記をevalした後で
M-x package-install
tc
します。package-installが終わったらinit.elに
(require 'tc-setup)
の1行を追加し、emacsをrestartしてください。
restart後は
M-x toggle-input-method
を実行し、用いるinput-methodにT-codeを選択してください。
tcの設定file作成場所についてなども問われるかもしれませんがすべて
defaultで問題無いです。
tcを用いた漢字変換の方法について
T-code best practices その1
でひらがなを覚えた方は適当にひらがなを入力した後でfj
を入力してみてく
ださい。
例えばてきとう
とひらがなを入力した後でfj
を入力します。
そうするとてきとう
が適当
に変換され、別bufferには
のようなT-codeのhelp表が表示されたのではないでしょうか。 このように変換を使いつつよく使う漢字から少しずつ漢直を覚えていくことで 無理無く漢字も直接入力できるようになります。
fontに注意
T-codeのhelp表ですがfont設定に注意しないと表示がずれて使いものになりません。
- Windowsでは MS Gothic
- Linuxでは Migu 1M
- Macでは https://gist.github.com/yoshinari-nomura/3465571
を使うとずれずに表示されるかと思います。
次回
もう少しtcの使い方について説明してみようと思います。
T-code best practices その1 (漢直advent calendar 4日目)
このentryは頓挫した技術系アドベントカレンダーの一覧に加えられる原因となっ た漢直advent calendarの4日目になります。5日目以降もその2、その3と続きます。
T-code best practicesを書く目的
T-codeを楽に習得するための方法を伝えることを目的としています。 T-codeとは何なのかについての説明はすっとばします。
ひらがなのT-codeを覚えよう
T-code best practicesといいつつも、いきなり漢字を直接入力することはすすめま せん。むしろばんばん変換使いましょう。 しかしひらがなのT-codeは覚えてください。
id:sak_kanchoku さんの漢直 Advent Calendar 2013 3日目 漢直はこわくない。 にあるようにTUT-codeであればひらがなの習得は容易ですが、あえて私は T-codeでのひらがな習得を推します。
その理由はT-codeはひらがなの入力もキーストロークとキー位置の関係が全く 無い無連想の方式だからです。 無連想方式の入力は習得にcostがかかりますが入力にruleを連想するための思 考が伴わないため、習得してしまえば連想方式よりも効率のよい入力が行えま す。 (思考によるinterceptのcostは大きい)
どうやってひらがなのT-codeを習得するとよいか
iOS deviceをお持ちでない方は
eelll/JS を使ってひらがなのT-codeだけ覚えてください。
iOS deviceをお持ちの方は
まず id:meech さんのentry Mozc で(だいたい) T-Code風入力 の通りにmozc(google日本語入力)を設定してください。 これによってmozcではT-codeが使えるようになります。
T-codeのkey strokeの参照には漢直Pad を使い、まずはひらがなのT-codeだけを参照しつつ文章を書いてみてください。
mozcはT-code入力専用にし、通常入力時(急いで文字を書く必要がある時など)には他のIMにswitchすることを想定しています。 これを望まれない方はiOS deviceをお持ちでない方と同様にmozcの設定は変更せ ず、eelll/JSでひらがなのT-codeを覚えてください。
eelllは伝統的なT-codeの学習programですが、私はこのprogramで学習するこ とが最善かどうかについて疑問を持っており、できれば漢直Padの使用をおす すめしたいところです。
注意
- 最初はかなりいらつくと思います。
- あせらず学習してください
- 急いで文字を入力する必要がある場合は無理に使おうとしないで普通のIM にswitchしてください
- (使う)ひらがなさえ覚えればもうT-codeは覚えたも同然ですのでここが肝心 要です。ゆっくりでよいのでできれば諦めないでいただきたいです。
次回
ひらがなのT-codeを覚えた方を対象とし、 EmacsのT-code(TUT-codeも)入力用機能拡張のtcの利用方法について紹介しま す。
Vimのremap設定が思い通りに動作しない時は
この記事は Vim Advent Calendar 2012 の306
日目の記事になります。
下記の内容は id:thinca さんに vim-users.jp で教えていただきました。ありがとうございます。
また vim-users.jp の Hack #148 で id:thinca さんはすでに下記の内容を執筆されています。
再掲になりますがお許しください。
remap設定の調査方法
私は下記のようなvimrcで 7行目で意図する<C-l>がEscapeにならないと思い困っていました。
こういった場合まずremap command対象の右側を省略したcommandを入力します。
:inoremap <C-l>
するとcommand lineには
i <C-L> <C-R>=<SNR>2_DisableKeymap()<CR>
と表示され、たしかに意図するようにremapできていないことが確認できます。
つぎに「この2_DisableKeymap()がどのfileでremapされているのか」ですが先程のcommandの先頭にverboseをつけた下記のcommandで確認できます。
:verbose inoremap <C-l>
この結果は
Last set from ~/.vim/vimrc
となり、「自分のvimrcの31行目でふたたび<C-l>にremapしていることに気がついていなかった」というのがオチでした。
私の場合、日本語入力用pluginであるtcvimeの設定をそのままcopy and paste していたため再びremapしていることを忘れていた、という具合です。
似たようなシチュエーションは結構あるかもしれないのでVACに書かせていただきました。
おわり。