Các plugin Vim được đề xuất cho mã hóa JavaScript? [đóng cửa]


125

Tôi mới biết về JS & Vim. Những plugin nào sẽ giúp tôi viết mã Javascript?


6
Để làm cho câu hỏi rõ ràng hơn và giúp OP bằng tiếng Anh của họ cho các bài đăng trong tương lai ... Nó nên đọc: "Xin chào, tôi mới biết về JS & Vim. Các plugin nào sẽ giúp tôi viết mã Javascript?" Bạn có thể nói "Tôi chưa quen với Javascript và vim". Bạn có thể sử dụng "cái gì" cho số ít, ví dụ " a_plugin là gì sẽ giúp tôi ..." hoặc bạn có thể sử dụng "which" cho số nhiều như thế này: " which_plugins sẽ giúp tôi ...". Cũng thông báo rằng thay vì "plugins " bạn nên sử dụng "plugins sẽ " vì đó là một giả thuyết. Hy vọng rằng sẽ giúp :-)
hendrixski

3
@hendrixski - bỏ phiếu để mở lại điều này.
ocodo

8
Hầu hết các câu hỏi không mang tính xây dựng bao giờ hết.
Vladislav Zorov

8
Tôi khá thích cách câu hỏi "không mang tính xây dựng" này đã giúp tôi cải thiện rất nhiều công việc của mình.
MaiaVictor

Vì câu hỏi đã bị đóng (không công bằng IMO), tôi sẽ chỉ thêm một nhận xét ở đây: có một giao diện người dùng dựa trên điện tử cho NeoVim với tính năng tự động hoàn tất máy chủ ngôn ngữ bản in (cũng hoạt động với vanilla JS!): Onivim.io . Vẫn còn hơi khó khăn xung quanh các cạnh nhưng tôi đã sử dụng nó như là trình điều khiển hàng ngày của tôi trong vài tuần nay và không có quá nhiều vấn đề. Nó có một cộng đồng thực sự tốt xung quanh nó, và nó đang được phát triển rất nặng nề, vì vậy tôi mong đợi những điều tốt đẹp từ nó trong tương lai! Tiết lộ đầy đủ: Tôi thực hiện quyên góp hàng tháng cho dự án và dự định đóng góp trong tương lai.
Parker Ault

Câu trả lời:


116

Kiểm tra cú pháp / Linting

Có một cách rất dễ dàng để tích hợp JSLint hoặc jshint.com hướng đến cộng đồng (IMO tốt hơn nhiều) với Vim bằng cách sử dụng plugin Syntastic Vim. Xem bài viết khác của tôi để biết thêm.

Trình duyệt mã nguồn / Danh sách thẻ

Ngoài ra còn có một cách rất gọn gàng để thêm danh sách thẻ bằng cách sử dụng DoctorJS của Mozilla (trước đây là jsctags ), cũng được sử dụng trong trình chỉnh sửa trực tuyến Ace của IDE của Cloud9 .

  1. Cài đặt các gói sau bằng trình quản lý gói yêu thích của bạn (Ubuntu apt-get, nhàbrew của Mac , v.v.):
    1. exuberant-ctags
      • LƯU Ý: Sau khi cài đặt, đảm bảo chạy ctagsthực sự chạy exuberant-ctagsvà không cài đặt sẵn hệ điều hành ctags. Bạn có thể tìm ra bằng cách thực hiện ctags --version.
    2. node (Node.js)
  2. Bản DoctorJSsao từ github:git clone https://github.com/mozilla/doctorjs.git
  3. Đi vào bên trong DoctorJSdir và make install(Bạn cũng sẽ cần makecài đặt ứng dụng, nhưng điều này rất cơ bản).
    • Có một số lỗi khi cài đặt plugin, make installkhông thực hiện được mẹo này vào lúc này. Bây giờ tôi chỉ cần thêm bin/thư mục của repo vào $ PATH của mình. Xem GitHub của DoctorJS và các trang phát hành để biết thêm thông tin.
  4. Cài đặt plugin TagBar Vim ( LƯU Ý: Đó là TagBar, không phải là TagList khét tiếng cũ!).
  5. LỢI NHUẬN. :)

Dự án mới - Tern.js

DoctorJS hiện đã chết . Có một dự án đầy hứa hẹn mới gọi là tern.js . Hiện tại nó đang ở giai đoạn đầu beta và cuối cùng sẽ thay thế nó.

Có một dự án ramitos / jsctags sử dụng chim nhạn làm động cơ của nó. Chỉ npm install -gcó nó và tagbar sẽ tự động sử dụng nó cho các tệp javascript.


5
+1 cho TagBar (chỉ biết về TagList!)
RobM

9
Hiện nay doctorjs đòi hỏi bạn phải bản sao đệ quy theo quy định tại lỗi này , git clone --recursive https://github.com/mozilla/doctorjs.gitvà sau đó thực hiện cài đặt nên làm việc
Andy Ray

1
Doctorjs trên Windows: baumichel.blogspot.ca/2011/11/ thêm các loại tệp bổ sung vào TagBar: github.com/majutsushi/tagbar/wiki
Andrew

6
Trước khi thực hiện bước 3, hãy cd vào Doctorjs và làm điều này : git submodule init && git submodule update. Sau đó thực hiện bước 3.
glortho

2
Lệnh brew thực sự làbrew install ctags-exuberant
sym3tri

17

snipMate mô phỏng hệ thống chèn của TextMate và đi kèm với một loạt các đoạn mã JS hữu ích (trong số các đoạn khác) theo mặc định. Thật dễ dàng để thêm của riêng bạn.

javaScriptLint cho phép bạn xác thực mã của mình chống lại jsl.

Ngoài ra, bạn có thể tìm thấy nhiều tệp cú pháp JavaScript trên vim.org. Hãy thử chúng và xem cái nào phù hợp nhất với bạn và phong cách mã hóa của bạn.

Omnicomplete ( ctrlx- ctrlo) bản địa hoạt động rất tốt đối với tôi. Bạn có thể làm cho nó năng động hơn với autoComplPop , nhưng đôi khi nó có thể gây khó chịu.

chỉnh sửa, để đáp lại bình luận của tarek11011:

acp không hoạt động với JavaScript theo mặc định, bạn phải điều chỉnh nó một chút. Đây là cách tôi đã làm (hack bẩn, tôi vẫn là Vim noob):

Trong vim-autocomplpop / plugin / acp.vim tôi đã thêm phpjavascript(và actionscript) để behavsnó trông như thế:

let behavs = {
    \   '*'            : [],
    \   'ruby'         : [],
    \   'python'       : [],
    \   'perl'         : [],
    \   'xml'          : [],
    \   'html'         : [],
    \   'xhtml'        : [],
    \   'css'          : [],
    \   'javascript'   : [],
    \   'actionscript' : [],
    \   'php'          : [],
    \ }

Một chút bên dưới, có một loạt các khối mã trông như thế:

"---------------------------------------------------------------------------
call add(behavs.ruby, {
    \   'command' : "\<C-x>\<C-o>",
    \   'meets'   : 'acp#meetsForRubyOmni',
    \   'repeat'  : 0,
    \ })

Tôi đã sao chép cái này và chỉnh sửa nó một chút để trông như thế:

"---------------------------------------------------------------------------
call add(behavs.javascript, {
    \   'command' : "\<C-x>\<C-o>",
    \   'meets'   : 'acp#meetsForRubyOmni',
    \   'repeat'  : 0,
    \ })

và đã làm tương tự cho Actioncript và php.

Nếu bạn muốn chỉnh sửa JS / CSS trong tài liệu HTML, bạn có thể thực hiện: đặt ft = html.css.javascript trong dòng lệnh của Vim để thực hiện ctrlx- ctrlohoạt động như mong đợi đối với tên phương thức / thuộc tính trong khối JS và thuộc tính / giá trị trong khối CSS. Tuy nhiên, cách tiếp cận này cũng có nhược điểm của nó (thụt lề kỳ lạ).


Làm thế nào bạn làm những phím nhìn mát mẻ?
Maxim Sloyko

1
Haha, đó là <kbd> </ kbd>. Các trình duyệt thường không có kiểu dáng mặc định cho thẻ này, kudos cho nhóm SO để thực hiện công việc phụ.
romainl

cảm ơn romainl, nhưng có một vấn đề với autoComplPop, nó chỉ hoạt động với tệp html không có js và css và php
Tarek Saied

Giống như rất nhiều plugin Vim, acp rất nhạy cảm với filetypes. Nếu kiểu tệp của bộ đệm là "html", thì cả acp và omni đều không hoạt động đối với JS / CSS / PHP được nhúng. Và tôi sẽ chỉnh sửa câu trả lời của mình, không đủ tùy chọn chỉnh sửa / phòng ở đây.
romainl

Bạn có thể thích sử dụng nhánh bảo trì hiện tại của snipMate mà Rok Garbas & co. đặt cùng nhau.
vào

8

Plugin này cũng hữu ích: https://github.com/maksimr/vim-jsbeautify . Nó cung cấp tự động định dạng đầy đủ cho javascript. Một tổ hợp phím và mã của bạn trông rất đẹp. Nó có thể có ích khi dán đoạn mã là tốt. Nó sử dụng js-beautifier phổ biến, cũng có thể được tìm thấy như một ứng dụng trực tuyến. Cái sau có thể được tìm thấy ngay tại đây: http://jsbeautifier.org/ .


3
Tôi đã viết một plugin tự động định dạng chung cho vim tích hợp js-beautifier và hơn thế nữa. Kiểm tra tại đây: github.com/Chiel92/vim-autoformat
Chiel ten Brinke

prettitier - tốt nhất
Alex Shwarc

6

Tôi chỉ sử dụng một plugin vim cụ thể của js - jslint.vim - https://github.com/hallettj/jslint.vim để xác thực mã của bạn bằng các quy tắc jslint và cũng cung cấp cho bạn lỗi cú pháp.


cảm ơn nhưng tôi nghĩ rằng tôi có một vấn đề, hãy xem img69.imageshack.us/img69/7629/11142565.png
Tarek Saied

Hừm, trên các cửa sổ có những hướng dẫn cụ thể bạn sẽ cần phải tuân theo, nó yêu cầu một trình thông dịch javascript. Tôi đã không thử cài đặt nó trên windows, nhưng các hướng dẫn cài đặt đã xuống trang một chút trong README, xin lỗi tôi không thể giúp đỡ nhiều hơn ở đó.
Scott

3

Để sửa lỗi thụt lề và tự động định dạng (Ctrl =): thụt lề JavaScript

Để đặt độ rộng thụt lề, thêm javascript.vimtệp vào thư mục ~ / .vim / ftplugin với nội dung sau (đối với hai khoảng cách thụt lề):

 setl sw=2 sts=2 et

trong ~/.vimrc:autocmd FileType javascript setlocal sw=2 ts=2 sts=2
JuanPablo
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.