Làm cách nào để xem các thẻ javascript trong vim bằng cách sử dụng tagbar + jsctags + tern_for_vim + ctags_exuberant?


7

Tôi đang viết mã javascript bằng vim và tôi thực sự muốn có chế độ xem phác thảo cho tệp javascript hiện tại tôi đang chỉnh sửa. Tôi thấy tagbar là plugin phổ biến cho mục đích này. Và trên wiki của nó, để javascript hoạt động, nó khuyến nghị jsctags phụ thuộc vào Tern.

Hiện nay

  1. Tôi đã cài đặt plugin vim: tagbar và tern_for_vim.
  2. Tôi đã cài đặt ctags quá mức và đặt thùng của nó vào đường dẫn
  3. Tôi đã cài đặt jsctags

Tôi mở tệp js trong vim và mở chế độ xem phác thảo thanh thẻ, nhưng không có thẻ nào hiển thị.

Vì vậy, tôi cố gắng chạy jsctags với tệp js trong dòng lệnh trực tiếp, vẫn không có gì được xuất ra.

Có ai thực hiện thành công sự kết hợp này? Ai đó có thể chia sẻ một vài suy nghĩ?


4
Vậy câu hỏi của bạn chính xác là gì? Bạn đã làm theo một số hướng dẫn ở đâu đó (ở đâu? Chính xác bạn đã làm gì?) Và một cái gì đó không hoạt động (cái gì?) Như bạn mong đợi (bạn đã mong đợi điều gì?)
Martin Tournoij 15/03/2015

Một phần của quá trình Aaron không đề cập đến là thực sự tạo tệp thẻ. Đó có thể là có thể bằng cách chạy một cái gì đó trên vỏ:jsctags *.js **/*.js
joeytwiddle

Câu hỏi của bạn sẽ tốt hơn sau khi chỉnh sửa ;-) Nhưng tôi nghĩ câu hỏi này có thể sẽ có câu trả lời tốt hơn nếu bạn bao gồm tệp vimrc (nhỏ) và tệp JS (nhỏ) thể hiện rõ vấn đề. Điều này sẽ làm giảm nỗ lực mà người trả lời tiềm năng yêu cầu để bắt đầu điều tra vấn đề của bạn ;-)
Martin Tournoij

1
@joeytwiddle Plugin Tagbar sử dụng các công cụ bên ngoài để tạo tệp thẻ riêng. Bạn không cần phải làm thủ công trên dòng lệnh.
Giàu

2
Tôi đã quay lại Rev 4 → 3. Thay vào đó, vui lòng gửi độ phân giải dưới dạng tự trả lời.
200_success

Câu trả lời:


4
:g/func/#

cung cấp cho bạn một phác thảo có thể hành động của bộ đệm JavaScript hiện tại mà không cần cài đặt bất kỳ plugin bên thứ ba nào hoặc yêu cầu bất kỳ chương trình bên ngoài nào.

Sử dụng func\|varđể bao gồm khai báo biến.


Bạn có nghĩa là "hành động" là gì? Hay cụ thể hơn, tôi có thể thực hiện những hành động nào, và làm thế nào?
joeytwiddle

Tôi cho rằng gõ :[line_number]là hành động rõ ràng. Tôi cũng có thể kéo dòng cuối cùng với /yhoặc xóa tất cả chúng bằng /d. (Tôi chỉ vấp phải chén thánh.) Có cách nào để kéo tất cả các dòng không?
joeytwiddle 17/03/2015

@joeytwiddle, vâng, :23<CR>là một điều hiển nhiên. Bạn có thể sử dụng :g//y Ađể kéo tất cả các dòng trong đầu ra để đăng ký a.
romainl 17/03/2015

1

Tôi đã phát triển một bộ quy tắc regex CTAGS cho JavaScript và CoffeeScript. Quy tắc của tôi bao gồm các bài kiểm tra đơn vị vì vậy tôi nghĩ rằng chúng đáng tin cậy hơn hầu hết.

Đây là repo git của tôi sẽ được cập nhật nhất: https://github.com/winstonwolff/ctags-javascript-coffeescript

Và đây là các quy tắc tôi sử dụng khi viết bài này:

--languages=-JavaScript
--langdef=js
--langmap=js:.js
--regex-js=/^var[ \t]+([a-zA-Z0-9._$]+) = \[/\1/a,array/
--regex-js=/^var[ \t]+([a-zA-Z0-9._$]+) = \{/\1/o,object/
--regex-js=/^var[ \t]+([a-zA-Z0-9._$]+)[ \t]*=[^{\[]*$/\1/r,var/

--regex-js=/^var[ \t]+([A-Za-z0-9._$]+)[ \t]*=[ \t]*[A-Za-z0-9_$]+.extend/\1/f,function/
--regex-js=/^[ \t]*([A-Za-z0-9_$]*\.)*([A-Za-z0-9_$]+)[ \t]*[:=][ \t]*function/\2/f,function/
--regex-js=/^[ \t]*function[ \t]*([A-Za-z0-9_$]+)[ \t]*\(/\1/f,function/
--regex-js=/^[ \t]*var[ \t]+([A-Za-z0-9_$]*\.)*([A-Za-z0-9_$]+)[ \t]*=[ \t]function/\2/f,function/

--regex-js=/(jQuery|\$)\([ \t]*([^ \t]*)[ \t]*\)\.bind\([ \t]*['"](.*)['"]/\2.\3/f,function/

--regex-js=/^[ \t]*describe[ \t]*\([ \t]*["'](.*)["']/\1/f,function/
--regex-js=/^([ \t]*)(describe|context|it)[ \t]*\([ \t]*["'](.*)["']/.\1\3/f,function/
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.