Penyorotan sintaksis yang lebih baik untuk Java di Vim?


16

Saya menemukan Vim memiliki penyorotan sintaks yang fantastis dengan skema warna pilihan saya untuk Ruby dan Python, tetapi setiap kali saya perlu menulis kode Java, sepertinya saya bahkan belum menyalakan penyorotan di tempat pertama.

Seperti yang Anda lihat, kata kunci disorot, tetapi tidak ada penyorotan untuk tanda kurung atau metode. Dalam Sublime Text (editor yang jauh lebih tidak disukai oleh saya), saya melihat sorotan yang jauh lebih baik. Ada huruf miring untuk nama kelas dan sorotan untuk operator matematika. Vim terlihat jarang dibandingkan.

Apakah ada cara, cara apa pun untuk mendapatkan sorotan gaya Teks Sublim yang lezat pada Vim?


Sudahkah Anda mencoba menggunakan mode Vintage di Sublime Text? Ia mengubah semua ikatan utama pada penggunaan vi (m), namun masih memungkinkan fitur ST2 yang kuat seperti penyorotan sintaksis yang lebih baik dan pengeditan banyak pilihan.
MattDMo

2
Saya memiliki Vintage Mode yang diaktifkan di ST2, tetapi saya masih lebih suka Vim karena saya dapat menggunakannya di terminal, dengan beberapa panel tmux terbuka sehingga saya dapat ssh ke mesin jarak jauh saya secara bersamaan tanpa meninggalkan editor saya selama lebih dari satu detik.
kunaicode

ya, ada sedikit kemunduran menggunakan editor GUI ...
MattDMo

Jawaban:


0

Silahkan lihat di cSyntaxAfter Plugin. Ini menyoroti operator dan lain-lain.

Pilihan lain adalah mengedit syntax/java.vimskrip dan menambahkan sorotan untuk Operatorgrup. Lihatlah syntax/pascal.vimsebagai contoh.

Jika Anda ingin menggunakan huruf miring untuk nama kelas, itu harus dimungkinkan jika file sintaks java mengenali mereka sebagai grup, dan saya pikir itu benar. Tampaknya nama kelas ada di JavaTypedefgrup.

Anda kemudian harus menentukan sorotan baru untuk grup itu. Itu berarti menghapus garis

JavaHiLink javaTypedef                Typedef

dari file sintaks, dan menambahkan yang baru. Di bawah ini saya menggunakan kembali deklarasi hightlight untuk Type, yang terhubung dengan Typedef. Saya mengubah termdari underlinemenjadi italic.

Anda harus meletakkan yang berikut ini dalam java.vimfile sintaksis Anda .

hi javaTypedef term=italic cterm=NONE ctermfg=LightGreen ctermbg=NONE gui=bold guifg=#60ff60 guibg=NONE

Terima kasih atas bantuannya, tetapi adakah / apakah ada plugin atau plugin untuk memberi huruf besar pada nama kelas?
kunaicode

@kunaicode: Bukan yang saya tahu. Penyorotan sintaksis tidak mengubah arti kode. Kapitalisasi tidak. Secara pribadi saya akan segera menghapus plugin yang secara otomatis akan mengubah kode yang telah saya tulis.
Roland Smith

Saya minta maaf atas kebingungannya - maksud saya, huruf miringkan nama kelas. Tidak bermodalkan. Maaf.
kunaicode

@kunaicode: Lihat jawaban yang diperbarui.
Roland Smith

2

Sepertinya tidak ada file sintaks yang kaya di luar sana.

Tetapi kita dapat memeras sedikit lebih banyak dari file sintaks yang kita miliki:

let java_highlight_functions = 1
let java_highlight_all = 1
" If you are trying this at runtime, you need to reload the syntax file
set filetype=java

" Some more highlights, in addition to those suggested by cmcginty
highlight link javaScopeDecl Statement
highlight link javaType Type
highlight link javaDocTags PreProc

Trik pertama datang dari sini .

Jika seseorang pernah membuat file sintaksis Java yang lebih kaya, kita harus menambahkannya ke vim-polyglot !


1

Saya menggunakan skema warna base16-default di Vim dan untuk beberapa alasan ia melakukan pekerjaan yang buruk mendefinisikan warna untuk Java. Menambahkan baris berikut akan membantu mendapatkan bagian dari perjalanan ke sana:

" Java: 'new', 'instanceof'
highlight Operator ctermfg=5  guifg=#d175bc
" Java: 'this', 'super'
highlight Typedef ctermfg=5  guifg=#d175bc
" Java: 'void', 'int', 'double'
highlight Type ctermfg=4  guifg=#69b7d3
" literal numbers
highlight Number term=bold ctermfg=16 gui=bold guifg=#d2d22d
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.