Intellij Ideaには、機能があります。私がコードのどこかで変数myCamelCase
を使用したとしましょう。次に、mCC
と入力してを入力すると、 - と入力します。またはそのようなキーの組み合わせを入力すると、myCamelCase
に展開されます。 Vimに似たものがありますか?IntellijのアイデアのようなVimでのCamelCaseの拡張?
5
A
答えて
8
私は二度答えることを許しても、私の最初の試みはポイントを逃してしまったので、もう一度やります。これは思ったより複雑ですが、私が作ったほど複雑ではないかもしれません(!)。
これは、すべての一致する変数名を示すように変更されました。すべての
まず、ここでは「myCamelCase」文字列から「MCC」の省略形を生成する機能です。
今function! Camel_Initials(camel)
let first_char = matchstr(a:camel,"^.")
let other_char = substitute(a:camel,"\\U","","g")
return first_char . other_char
endfunction
、ここでは省略形(「MCC」)を取り、スキャン機能がありますこの省略形を持つ「単語」の現在のバッファ(現在の行から後ろに)。 すべての一致のリストが返されます。
function! Expand_Camel_Initials(abbrev)
let winview=winsaveview()
let candidate=a:abbrev
let matches=[]
try
let resline = line(".")
while resline >= 1
let sstr = '\<' . matchstr(a:abbrev,"^.") . '[a-zA-Z]*\>'
keepjumps let resline=search(sstr,"bW")
let candidate=expand("<cword>")
if candidate != a:abbrev && Camel_Initials(candidate) == a:abbrev
call add(matches, candidate)
endif
endwhile
finally
call winrestview(winview)
if len(matches) == 0
echo "No expansion found"
endif
return sort(candidate)
endtry
endfunction
次に、ここではカーソルの下の単語を読み取り、上記の関数によって返されたマッチを示唆してカスタム補完機能です:
function! Camel_Complete(findstart, base)
if a:findstart
let line = getline('.')
let start = col('.') - 1
while start > 0 && line[start - 1] =~ '[A-Za-z_]'
let start -= 1
endwhile
return start
else
return Expand_Camel_Initials(a:base)
endif
endfunction
使用するに
setlocal completefunc=Camel_Complete
:これを使用するには、あなたは「completefunc」を定義する必要がありますあなたはmCC
が続いタイピングことを見つける必要があり、あなたのvimrcでこのコードでは
inoremap <c-l> <c-x><c-u>
:挿入モードの補完、タイプCTRL-XCTRL-Uが、私は通常CTRL-LにこれをマッピングしますCTRL-Lは、期待される交換を行います。一致する展開が見つからない場合、省略形は変更されません。
コードは水密ではありませんが、テストしたすべての単純なケースで機能します。それが役に立てば幸い。説明が必要なものがあればお知らせください。
0
これには、vim-abolishというVimのプラグインがあります。キャメルケースに展開するにはcrc
マップを使用してください。
関連する問題
- 1. vimのIntelliJのようなコピーバッファ?
- 2. のIntelliJアイデアでリモートプロセス
- 3. のIntelliJアイデアVIM:OSX
- 4. IntelliJのアイデア
- 5. セットのIntelliJアイデア
- 6. vimの略語を拡張子なしで拡張するには?
- 7. VIM:次のウィンドウへのウィンドウを「拡張」
- 8. TomcatでIntellijのアイデアでソルデバッグ
- 9. Intellij IDEAクラスファイル拡張
- 10. intellijのアイデアでjavascriptをデバッグ
- 11. intellijのアイデアで奇妙なテキストキャプチャ
- 12. intellijのプロジェクトのグループのアイデア
- 13. vimとNERDツリー拡張 - ファイルの追加
- 14. EclipseのクリーンアップのようなIntellijのアイデアでプロジェクトキャッシュをクリーンにする方法は?
- 15. IntelliJアイデアのグラデルサポート:空のツールウィンドウ
- 16. iPhone SDK - カメラアプリのような拡張ボタン
- 17. URL:のようなディレクトリや拡張子
- 18. Intellijのアイデアがギブスにプッシュしない
- 19. Ruby on rails plugin - Intellijのアイデア
- 20. 8192リミット、のIntelliJアイデアに
- 21. Intellijアイデアのプラグイン開発 - ホットリロード?
- 22. のIntelliJアイデア警告 - aysnc/
- 23. 拡張メソッドと通常のメソッド - ベストプラクティスのアイデア
- 24. vimでファイル名のフルパスへのシンボリックリンクを拡張するには?
- 25. どのようにクローム拡張で
- 26. intellijのアイデアでGUIアプリケーションを実行
- 27. JUnitの5つのテストは、IntelliJのアイデア
- 28. Googleの画像のようなAndroidの拡張可能なGridView
- 29. Internet ExplorerのChromeのような拡張機能ですか?
- 30. Visual Studioでvim(キーバインディング)を使用する方法vimの拡張コード
素晴らしい!それは私が言うことができるすべてです。それでも私はあなたにもっと尋ねるほど欲張り/怠惰です。可能な展開が複数ある場合:たとえば、 myCamelCase myCamelCart、最後のものが選択されます。その代わりに、vimでCtrl-Pキーワード補完のように動作させることができますか?再び、素晴らしい! – dharm0us
私はうまく働いた!複数の一致を扱うには、ソリューションのリストを返すExpand_Camel_Initials()を取得し、その間に選択できるように 'completefunc'を設定するだけです。私は今週末に試してみるつもりです。 –
さて、私が思ったほど苦痛ではなかった...私は自分の答えを編集したので、今はあなたが望むように動くはずです。問題がある場合は教えてください(私はそれを正しくテストする機会がありませんでした)。 –