Teknologi Informatika    
   
Daftar Isi
(Sebelumnya) Wikipedia Link rotWikipedia:Merging (Berikutnya)

Wikipedia:Text editor support

It is often convenient to edit Wikipedia articles using a full-fledged text editor, instead of the standard text area of a web browser. Text editors provide facilities that are very useful for writing articles (especially long articles), such as spell checking, search and replace, macros, and syntax highlighting. They also provide a quick and easy way of saving a local backup copy of an article, possibly for future offline editing.

This page contains pointers for adapting several external and in-browser text editors to editing Wikipedia articles.

Contents

How to open articles in your text editor

Manual method

A "manual" way of editing in an external GUI text editor is to use copy and paste.

  1. Start editing the article as normally in browser (click the Edit tab of a wiki page, or use the keyboard shortcut Shift+Alt+E)
  2. Select the entire contents of the browser text area (as with Ctrl+A or Cmd+A), then copy-paste it to a new external editor window
  3. Perform the editing
  4. Select the editor window contents, then copy and paste back to the browser text area.

Be careful not to mangle any special characters.

For a given software combination, there may be more efficient methods available:

Mozilla and Mozilla Firefox

If you are using the Mozilla web browser, it is possible to configure an external editor for editing text areas, including the Wikipedia edit area. This then avoids the need to copy and paste the article text between browser and editor. Several solutions exist:

  • MozEx. The official package does not support editing UTF-8-encoded documents and does not install properly on Mozilla Firefox. However, the development version does not have these problems. A quick MozEx tutorial is available.
  • ViewSourceWith provides similar functionality vis-a-vis the text editing.
  • Editus Externus.[dead link] Similar to the others, but the editor blocks the browser, so it is not possible to check other articles while writing.
  • TextArea Sputnik, supports nonblocking editing and different encodings in an external editor. (You may see question marks in an edit textbox unrelated to the edits you are making (for example, the Unicode grapheme and other glyphs at the bottom), but your edits won't destroy the characters.)
  • It's All Text!, supports nonblocking editing and UTF-8 encoding.
  • Vimperator and Pentadactyl have a shortcut in Insert mode that allows external text editing (the default is Ctrl+i).

With all these solutions, once you are done editing, you need to save in your editor, then click into the browser's text area and it is updated. You can then hit Preview. If you want to continue editing after the preview, hit Back in your browser, then work in your editor. Alternatively, you can hit Preview before you start editing for the first time, then work in your editor, save, preview, edit some more, save, preview etc., without the need for hitting Back in between.

Use It's All Text! to invoke an external editor

When It's All Text! plugin has been installed, a little blue edit button appears at the bottom right corner of the text area. Just click the button to open the contents of the text area in your editor.

However, before you can use It's All Text!, you need to specify the path to your editor in the Preferences dialog box. The Preferences dialog opens automatically when you use It's All Text! for the first time, but you can open it manually as follows: Right click in the text area to open context menu; select "It's All Text" → "Preferences".

If your editor requires some other command line options in addition to the filename, use a shell script (.sh file in Linux and OS X, or .bat in Windows) to call your editor, and specify path to that script instead of calling your editor directly. In addition, you can add filename extension for wiki file type in Preferences dialog, in case your editor uses file type specific configuration.

Once the above is done, you can edit any text area in your editor by clicking at the Edit button at the lower-right corner of the text area. Alternatively, you can right-click on the text area. From the "It's All Text" menu, you can choose which filename extension to use for editing. Next time you use the blue edit button, the extension is the one you used last time.

After editing, just save the file from your editor. The contents are automatically copied to the text area in Firefox. To indicate this, the text area turns yellow briefly.

A temporary file is created for editing and it is removed at the end. So if you want to preserve a text file for later editing, you can change the file name and/or save the file to another directory.

Using Vim or another console editor

Some macros may work under Vim, but not under gVim for some reason (e.g., the macro to format text paragraphs). Or you just want to use Vim within an X terminal as you used to do, instead of using gVim. To invoke Vim within an X terminal window, you can write a shell script (see below) to invoke an X terminal and to run the vim command within that X terminal, or generally your preferred editor. Assume that the filename of this script is wiki.edit.vim, and that you put the script in the directory /home_dir/bin/ so that the path of the script would be /home_dir/bin/wiki.edit.vim Put the above path in the Preferences box (instead of /usr/bin/gvim) of It's All Text. It should work. Note that /home_dir/ is the complete path to your home directory from the root (/) directory; don't use ~/ (tilde) instead of /home_dir/; it won't work. The listing of the script wiki.edit.vim is given below:

#!/bin/sh : ${VISUAL='vim'} exec xterm -e $VISUAL ${1+"$@"}

Don't forget to make the file executable with $chmod +x wiki.edit.vim

Using Vim on Mac OS X

To get It's All Text to work nicely with Vim on the Mac, you wneed Macvim. Unpack the .tbz file and drag MacVim.app to your Applications folder. MacVim also comes with a script called mvim. You need to tell It's All Text to use this script and not MacVim.app. You can put this script anywhere (like a MyScripts folder in your Applications folder), it can find MacVim.

External editor feature

Starting with MediaWiki Version 1.5, the software allows you to edit any resource using any external tool. See Manual:External editors for details.

Text browsers

elinks

The text-only browser elinks also provides a function to edit text areas. The key combination Ctrl+T calls an external editor, e.g. Vim. This allows also to use syntax highlighting, edit functions, spelling corrections and saving local copies.

w3m

w3m opens an external editor for textareas by default.

Lynx

Lynx allows editing a text area with an external editor by typing Ctrl+X and E or Ctrl+E and E when the cursor is in the text area. In addition, it accepts a user-definable key-binding (normally not bound) to invoke the external editor. Some packagers may assign the user-definable binding in Lynx's configuration file.

Do not wrap

After saving the file in an external editor and quitting it, answer "no" (by typing the N key) to the Lynx question "Wrap lines to fit displayed area? (n)"; answering "yes" will otherwise have Lynx wrap lines with normal carriage returns, which will break the document structure. Using article preview is strongly encouraged.

Line and paragraph breakage

Lynx is prone to breaking lines longer than 1023 characters: When this happens, a large paragraph with lots of reference data may easily become broken and articles saved like that may take a slightly inconsistent appearance at best; at worst, complex articles might lose their structure.

The character length limit is dependent on maximum buffer length set for a line, the size of which is 1023 characters; the behaviour can be observed when moving the cursor to a text area line exceeding the limit, whereby Lynx will issue an alert: "Form field value exceeds buffer length! Trim the tail."

Even if a paragraph of article text on its face is not very long, it may still contain multiple references along with extensive amounts of related code and data for them, which makes an actual paragraph in article code much longer and in some cases well beyound the length of a 1023-character limit. When a line of text exceeds that limit and a text file is sent back to the Lynx textarea, Lynx will yield an error message: "Alert! Very long lines have been wrapped!". In such a case it's best not to save article content before such issues have been mitigated.

Therefore, article editors should be careful to follow the character length of longer lines, and where (usually) possible, insert strategic linebreaks with carriage returns (not HTML <BR> tags): Advanced text editors, like vi or VIM, do typically show cursor position within a line in their status areas and thus allow to gauge line length when the cursor is at the end of a line.

In a longer paragraph of article code containing references, single linebreaks can be inserted within reference code, so long as parameter values themselves are not broken.

  • Some editors hold the practice of entering a linebreak before every reference parameter (as can be seen in examples of Citation templates; Whether this is a good practice within text, is subject to debate);
  • Others choose not to interfere with a paragraph's visual consistency and enter a linebreak before a very long URL, one that is longer than the visual line in a terminal window, which is usually the length of 80 characters. If the situation in text necessitates, a linebreak can also be inserted before other parameters.

Because URLs are typically long, placing these on a new line is handy for comparing article editions, as some textually non-breaking code prepended and/or appended to a URL may lie outside a comparison iframe's viewport and this may hinder in discovery of changes made to an article.

If a paragraph line is near the limit or exceeds it by just a few characters, then article editors can choose to optimize code or text:

  • By removing superfluous spaces:
    • the best practice with extensive template data (such as references) is to only separate the last character of a previous parameter value and the marker pipe of next parameter's name;
    • In plain text after a sentence-ending period, some article writers add two spaces instead of one, but browsers ignore this.
  • By refactoring template data into a shorter format: date=26 February 2011 can be replaced with date=2011-02-26 — Users with their own date preferences should then see dates in their favoured format when logged in;
  • By rewording a line without affecting the nature of the text within.
  • The above applies even if a paragraph line does not contain breakable code.

If a line paragraph still exceeds the 1023-character limit, but does not contain any reference code (or any other wikicode that would work with linebreaks), then users should consider logically breaking that paragraph into two for better legibility.

Encoding

If accented and international characters fail to show properly, use a terminal program that has support for Unicode (such as uxterm) and set the assumed and display character sets to UTF-8 or greater in Lynx options.

Nevertheless, article content with any special characters — including non-standard Latin, Cyrillic, or other non-Latin languages — are seen in Lynx textareas in the UTF-8 &#xXX; format, which in that form are sent to text editors and then back.

Beware that these UTF-8 glyph representations are not treated as one character, but six (ö = &#xF6;), and these add to the 1023-character line limit.

Such behaviour is a hindrance to editing non-Latin texts, and even Latin texts that are written in languages that may feature extensive amounts of accented characters.
See #Dealing with special characters for more.

Lynx in Windows

In addition to above instructions, there are intricacies specific to Windows.

If you want to use Wikimedia's secure servers, get a version of Lynx that supports SSL. To find out if yours already does, go to Options and see if the User-Agent header contains OpenSSL.

The assumed character set should be utf-8, as this is also the default charset used by Wikipedia. The display character set can be different, such as cp850, but editable text will always be in utf-8.

Lynx configuration files

Configuration files for Lynx are simple text files and can be edited from any text editor that supports Unix linebreaks. In Windows 9x, the built-in text editor for this is WordPad, because Notepad does not support the Unix Line Feed.

lynx.cfg is the config file for Lynx; the global config file in Windows is always located in the same folder as the Lynx executable, wherever it has been installed to. A typical location is C:\Program Files\Lynx. If Lynx is installed in that folder, then Windows Vista and newer usually require administrator access to edit the file (via User Account Control).

lynx.rc is a per-user Lynx User Defaults File saved from the Options page. Settings in it take priority over the global config file. In Windows Vista the per-user User Defaults file can be in C:\Users\Username\AppData\Local\temp\lynx.rc. If the file is in the temp directory, care is advised when using automated cleanup tools, such as Disk Cleanup.

Option syntax is different between global (lynx.cfg) and per-user (lynx.rc) configuration files.

lynx.cfg is extensive; very often almost all options are placed into it, along with explanatory comments for each option. If it's not so, there's an official online version at lynx.isc.org/lynx2.8.7/lynx2-8-7/lynx .cfg — Keep in mind that if your Lynx version is different, change the numbers in the URL accordingly, as some options may be version-specific.

The best way to find an option is by using the text editor's find feature.

When not in active use, an option is commented out with a hash # and its default setting is on; To use an option, delete the hash character before it. It may occasionally happen that the config file does not contain a specific option, but it can be added by the user.

Defaults to reconsider

The following options are often found as defaults in Lynx binaries compiled for Windows and might not meet formatting conventions used in Wikipedia. These options can be edited from lynx.cfg and are usually not specified in the Options page. Before making changes, make a backup copy of the file, renaming it to lynx.cfg.old, for example.

Collapsed <BR> tags
The COLLAPSE_BR_TAGS: option should be set to FALSE, as in the example below:

COLLAPSE_BR_TAGS:FALSE

The reason is that some editors intentionally use more than one <BR> tag, especially in locations where conventional paragraph breaks are not allowed.

Justified text
Graphical browsers do not show this, since justification is not used. For this, set

JUSTIFY:FALSE

Numbered links
As Wikipedia articles very often feature linked content in tables, the numbers in brackets before or next to links may be distracting. Set these following options:

DEFAULT_KEYPAD_MODE:LINKS_ARE_NOT_NUM BEREDNUMBER_LINKS_ON_LEFT:FALSE
Editing

The typical key combination to invoke an out-of-Lynx editor in Windows is Ctrl+x+e and not Ctrl+E+e like in Unices and elsewhere; this can be changed in the config file. Both an internal and external editor can be used, according to taste and preferences. Avoid Windows Notepad for reasons in above paragraphs. And only starting with Windows XP does WordPad have full Unicode support (with some reservations).
An example with Vim, configured to use the mediawiki syntax:

SYSTEM_EDITOR:C:\Progra~1\Vim\vim73\v im.exe -c "setf mediawiki"

Note double quotes ^

Colour issues

When using an in-window editor like Vim and after exiting back into Lynx, any colour theme Lynx uses is rendered inoperable (links and buttons not highlighted anymore), so the best practice is to never show colors in Options (in section Appearance), and save the settings.

Command line tools

There are also command line tools that allow you to download articles, edit them using your favorite text editor, and upload the edited articles back into Wikipedia (or into any MediaWiki server). This bypasses the need for a web browser. These are (at least):

  • mvs, a Perl program available from CPAN. There's more information at Meta:WWW::Mediawiki::Client. Unfortunately, mvs uses the name of the local file as the title of the page for the wiki remote server. If you need title pages in UTF-8 for Russian, Japanese or Arabic for example, you won't be able to upload such files. It seems that Mediawiki::Client as well as Perl libraries are not enough advanced in the management of UTF-8 characters to be fully operational, even if your terminal and shell are correctly set for UTF-8. But see Debian bug reports.
  • Meta:pywikipedia is an extensive library and set of utilities for doing innumerable things with wikipedia. It can also do something as simple as editing Wikipedia pages. It has some ways to avoid the wrong transmission of titles in UTF-8, for example it allows to incorporate the name of the title within the file itself and to use another command line tool. The local filename could then be written in simple ASCII. Here is an example of a file, named locally 'foo.wiki', using pagefromfile.py (from Meta:pywikipedia):
{{-start-}}'''Демография'', или наука о народонаселении, изучает численность, состав, размещение и движение населения. {{-stop-}}{{-start-}}'''人口学'''� ��ヒトの人口の科学的研究� �いい、主と�-てその大きさ 、構造、そ�-てその成長発� ��を研究対象とする。{{-stop- }}{{-start-}}'''Demography''' is the scientific study of human populations primarily with respect to their size, their structure and their development.{{-stop-}}{{-start-}}'''� �لديمغرافية''': علم يتناول دراسة المجتمعات البشرية من حيث حجومها و بناها و تطورها و خصائصها العامة و لا سيما من النواحي الكمية.{{-stop-}}

In the above example, the command line to upload the four pages in one submission (the 'start' and 'stop' markups drive successively the four different pages Демография, 人口学, Demography and الديمغرافية) is:

  python pagefromfile.py -file:foo.wiki

How to set up specific editors for Wikipedia editing

Eclipse plug-in

The Wikipedia Editor plugin Eclipse Wikipedia Editor is available for Eclipse (cross-platform) with an automatically updating outline of the article. It has many features which are very helpful for editing wikipedia. It also downloads articles directly from Wikipedia and has highlighting.

GNU Emacs

There are a few Emacs major mode implementations available for editing MediaWiki syntax:

  • Mediawiki.el, available from launchpad, “… adds the ability to edit sites hosted on Mediawiki (including Wikipedia, of course).”
  • wikipedia-mode.el (obsolete) is a simple major mode that mostly provides syntax highlighting for MediaWiki mark-up.
  • wikipedia.el (obsolete) is a much more advanced major mode which provides WYSIWYG editing of Wikipedia articles. Note, however, that it is developed using the current CVS version of GNU Emacs, may not be compatible with older versions, and has been effectively discontinued because it's not being actively maintained. Also, the mode was in the alpha stage of development when it was orphaned, so use it at your own risk.

Line Formatting

longlines.el is now part of the default GNU Emacs distribution. The following information is retained for reference.

Wikipedia articles don't use line breaks. Because of this, you may want to install one of the following:

  • longlines.el — implements “word wrap” functionality for Emacs (longlines.el is now part of GNU Emacs). Installation instructions for longlines.el.
  • screen-lines.el — redefines movement commands to operate in terms of screen lines as opposed to logical lines

Access Methods

wikipediafs.el can be used along with one of the aforementioned major modes, when using the virtual Wikipedia filesystem.

jEdit

For jEdit (Java-supporting OSes) there is a plugin available at http://www.djini.de/software/mwjed/ . Apart from providing syntax highlighting for wikipedia markup, it can communicate directly with the Wikipedia website using the HttpClient component from the Jakarta Project. (Unavailable as of 2012-03-20.)

Kate/KWrite

For Kate (for GNU/Linux KDE desktop), rules for syntax highlighting are provided by the XML file on Wikimedia Commons kate-highlighting. It recognizes HTML tags and entities, wiki control characters, templates, variables, keywords, links, section titles, tables and <nowiki> sections.

To install this template, copy it to your home directory of KDE ~/.kde/share/apps/katepart/syntax/ for per user settings or a global settings:

  • Mostly, put it on $(PREFIX)/share/apps/katepart/syntax/.
  • on Ubuntu Linux, use /usr/share/kde4/apps/katepart/syntax/.
  • on OpenSUSE-Linux for instance PREFIX=/opt/kde3/.

There's also an import tool : Settings → Configure Kate → Highlighting → Download.

In recent editions of Kate, MediaWiki syntax highlighting is included by default. This can be configured by choosing Settings → Configure Kate → Fonts & Colors → Highlighting Text Styles and select "Markup/MediaWiki" in the drop-down menu.

As checked on version 3.8.5 (KDE 4.8.5), Kate will automatically wrap lines when they are longer than a specified number of characters (default 1024). This auto-wrap functionality can be disabled by setting the "Line Length Limit:" to zero (0) in Settings → Configure Kate → Open/Save.

gedit

gedit is a cross-platform, free software text editor that comes bundled with Ubuntu Linux by default. There is a GPL-licensed MediaWiki syntax highlight mode provided here (French). You can download, unzip, and copy the language file to the correct folder, or you can run the following in a GNU/Linux shell:

  • For gedit 2.x:
wget --output-document=gedit-mediawiki.zip http://jpfleury.indefero.net/p/gedit-mediawiki/source/download/master/unzip gedit-mediawiki.zipmkdir -p ~/.local/share/gtksourceview-2.0/language-specs/cp gedit-mediawiki-master/mediawiki.lang ~/.local/share/gtksourceview-2.0/language-specs/
  • For gedit 3.x:
wget --output-document=gedit-mediawiki.zip http://jpfleury.indefero.net/p/gedit-mediawiki/source/download/master/unzip gedit-mediawiki.zipmkdir -p ~/.local/share/gtksourceview-3.0/language-specs/cp gedit-mediawiki-master/mediawiki.lang ~/.local/share/gtksourceview-3.0/language-specs/

NoteTab

A Clip Library plugin for the NoteTab (Windows) text editor contains some functions to automate Wiki markup.

SubEthaEdit

A syntax highlighting mode is available for SubEthaEdit (Mac OS X) as well. After downloading the mode bundle, drop it in /Library/Application Support/SubEthaEdit/Modes/ (system-wide) or ~/Library/Application Support/SubEthaEdit/Modes/ (user-specific). You may need to create the final two directories by hand. The mode will be automatically selected for files with a .wiki or .wikipedia extension.

TextMate

A "MediaWiki" bundle is available in the TextMate bundle subversion repository. To learn how to load this bundle, see the TextMate manual page about installing more bundles, or view this shell script that downloads and installs it. [1]. The bundle does syntax highlighting, code completion, and other actions.

For Sublime Text 2 users, note that you may enable this bundle as well, since Sublime Text 2 supports TextMate bundles.

Vedit

Wiki Tools for VEDIT contains syntax highlighting, keyboard configuration, User and Tools menus and several macros for inserting and editing wiki tags and for some more complex operations such as add/delete/copy/paste columns in a wiki table. Installation instructions included, as well as instructions for configuring It's All Text! for Vedit.

Vim

Please feel free to contribute improvements to the below scripts, or check the vim-devel list if anyone has requested the upload of mediawiki.vim Syntax & FileType plugin. If not, request it and/or post the reasons why they are not here. (As of 16 November 2011, it is not in the Vim source control tree's "syntax/" directory.)

The below scripts are also posted in the vim.org script collection, where they are occasionally updated (but not since 2011-11-17) with newer versions taken from community contributions on this site. Feel free to remind mvc to upload a newer copy periodically if those become stale, since they were uploaded from his vim.org account.

$HOME/.vim/syntax/mediawiki.vim

To make Vim support the MediaWiki markup used on Wikipedia (basically syntax highlighting), save the following lines to "~/.vim/syntax/mediawiki.vim" or "vimfiles\syntax\mediawiki.vim". If any of the directories above don't exist you may create them (the Unix/Linux command is mkdir).

When using Vim in Windows, it's preferable to create and save mediawiki.vim in Vim itself, otherwise the file may become broken.

File:$HOME/.vim/syntax/mediawiki.vim

" mediawiki.vim (formerly named Wikipedia.vim)" " Vim syntax file" Language: MediaWiki, http://www.mediawiki.org/" Maintainer: This syntax file needs a maintainer in order to ship " with Vim. Please contact [[User:Unforgettableid]] if you want" to volunteer." Home: http://en.wikipedia.org/wiki/Wikipedi a:Text_editor_support#Vim" Last Change: 2011 Sep 19" Credits: [[User:Aepd87]], [[User:Danny373]], [[User:Ingo Karkat]], et al." " Published on Wikipedia in 2003-04 and declared authorless." " Based on the HTML syntax file. Probably too closely based, in fact." There may well be name collisions everywhere, but ignorance is bliss," so they say."" To do: plug-in support for downloading and uploading to the server. if !exists("main_syntax")  if version < 600 syntax clear  elseif exists("b:current_syntax") finish  endif  let main_syntax = "html"endif syntax case ignoreif v:version >= 700  syntax spell toplevelendif " Mark illegal characterssy match htmlError "[<>&]" " Tagssy region  htmlString   contained start=+"+ end=+"+ contains=htmlSpecialChar,@htmlPreprocsy region  htmlString   contained start=+'+ end=+'+ contains=htmlSpecialChar,@htmlPreprocsy match   htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=@htmlPreprocsy region  htmlEndTag start=+</+   end=+>+ contains=htmlTagN,htmlTagErrorsy region  htmlTag start=+<[^/]+ end=+>+ contains=htmlTagN,htmlString,htmlArg, htmlValue,htmlTagError,htmlEvent,html CssDefinition,@htmlPreproc,@htmlArgClustersy match   htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1   contains=htmlTagName,htmlSpecialTagNa me,@htmlTagNameClustersy match   htmlTagN contained +</\s*[-a-zA-Z0-9]\++hs=s+2  contains=htmlTagName,htmlSpecialTagNa me,@htmlTagNameClustersy match   htmlTagError contained "[^>]<"ms=s+1 " Allowed HTML tag namessy keyword htmlTagName contained big blockquote br caption center cite codesy keyword htmlTagName contained dd del div dl dt font hr ins lisy keyword htmlTagName contained ol p pre rb rp rt ruby s small span strike subsy keyword htmlTagName contained sup table td th tr tt ul varsy match   htmlTagName contained "\<\(b\|i\|u\|h[1-6]\|em\|strong\)\>"" Allowed Wiki tag namessy keyword htmlTagName contained math nowiki references source syntaxhighlight " Allowed arg namessy keyword htmlArg contained align lang dir width height nowrap bgcolor clearsy keyword htmlArg contained noshade cite datetime size face color type startsy keyword htmlArg contained value compact summary border frame rulessy keyword htmlArg contained cellspacing cellpadding valign char charoffsy keyword htmlArg contained colgroup col span abbr axis headers scope rowspansy keyword htmlArg contained colspan id class name style title " Special characterssy match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};" " Commentssy region htmlComment start=+<!+ end=+>+ contains=htmlCommentPart,htmlCommentE rrorsy match  htmlCommentError contained "[^><!]"sy region htmlCommentPart  contained start=+--+ end=+--\s*+ contains=@htmlPreProcsy region htmlComment start=+<!DOCTYPE+ keepend end=+>+ if !exists("html_no_rendering")  sy cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialC har,htmlPreProc,htmlComment,htmlLink,@htmlPreproc   sy region htmlBold  start="<b\>"  end="</b>"me=e-4  contains=@htmlTop,htmlBoldUnderline,htmlBoldIta lic  sy region htmlBold  start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlBoldUnderline,htmlBoldIta lic  sy region htmlBoldUnderline   contained start="<u\>"  end="</u>"me=e-4  contains=@htmlTop,htmlBoldUnderlineItalic  sy region htmlBoldItalic  contained start="<i\>"  end="</i>"me=e-4  contains=@htmlTop,htmlBoldItalicUnderline  sy region htmlBoldItalic  contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop,htmlBoldItalicUnderline  sy region htmlBoldUnderlineItalic contained start="<i\>"  end="</i>"me=e-4  contains=@htmlTop  sy region htmlBoldUnderlineItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop  sy region htmlBoldItalicUnderline contained start="<u\>"  end="</u>"me=e-4  contains=@htmlTop,htmlBoldUnderlineItalic   sy region htmlUnderline start="<u\>"  end="</u>"me=e-4  contains=@htmlTop,htmlUnderlineBold,htmlUnderli neItalic  sy region htmlUnderlineBold   contained start="<b\>"  end="</b>"me=e-4  contains=@htmlTop,htmlUnderlineBoldItalic  sy region htmlUnderlineBold   contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlUnderlineBoldItalic  sy region htmlUnderlineItalic contained start="<i\>"  end="</i>"me=e-4  contains=@htmlTop,htmlUnderlineItalicBold  sy region htmlUnderlineItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop,htmlUnderlineItalicBold  sy region htmlUnderlineItalicBold contained start="<b\>"  end="</b>"me=e-4  contains=@htmlTop  sy region htmlUnderlineItalicBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop  sy region htmlUnderlineBoldItalic contained start="<i\>"  end="</i>"me=e-4  contains=@htmlTop  sy region htmlUnderlineBoldItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop   sy region htmlItalic start="<i\>"  end="</i>"me=e-4  contains=@htmlTop,htmlItalicBold,htmlItalicUnde rline  sy region htmlItalic start="<em\>" end="</em>"me=e-5 contains=@htmlTop  sy region htmlItalicBold  contained start="<b\>"  end="</b>"me=e-4  contains=@htmlTop,htmlItalicBoldUnderline  sy region htmlItalicBold  contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlItalicBoldUnderline  sy region htmlItalicBoldUnderline contained start="<u\>"  end="</u>"me=e-4  contains=@htmlTop  sy region htmlItalicUnderline contained start="<u\>"  end="</u>"me=e-4  contains=@htmlTop,htmlItalicUnderlineBold  sy region htmlItalicUnderlineBold contained start="<b\>"  end="</b>"me=e-4  contains=@htmlTop  sy region htmlItalicUnderlineBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop   sy region htmlH1 start="<h1\>" end="</h1>"me=e-5 contains=@htmlTop  sy region htmlH2 start="<h2\>" end="</h2>"me=e-5 contains=@htmlTop  sy region htmlH3 start="<h3\>" end="</h3>"me=e-5 contains=@htmlTop  sy region htmlH4 start="<h4\>" end="</h4>"me=e-5 contains=@htmlTop  sy region htmlH5 start="<h5\>" end="</h5>"me=e-5 contains=@htmlTop  sy region htmlH6 start="<h6\>" end="</h6>"me=e-5 contains=@htmlTopendif  " No htmlTop and wikiPre inside HTML preformatted areas, because" MediaWiki renders everything in there literally (HTML tags and" entities, too): <pre> tags work as the combination of <nowiki> and" the standard HTML <pre> tag: the content will preformatted, and it" will not be parsed, but shown as in the wikitext source."" With wikiPre, indented lines would be rendered differently from" unindented lines.sy match htmlPreTag   /<pre>/ contains=htmlTagsy match htmlPreEndTag /<\/pre>/   contains=htmlEndTagsy match wikiNowikiTag /<nowiki>/  contains=htmlTagsy match wikiNowikiEndTag /<\/nowiki>/ contains=htmlEndTagsy match wikiSourceTag /<source\s\+[^>]\+>/ contains=htmlTagsy match wikiSourceEndTag /<\/source>/ contains=htmlEndTagsy match wikiSyntaxHLTag /<syntaxhighlight\s\+[^>]\+>/ contains=htmlTagsy match wikiSyntaxHLEndTag /<\/syntaxhighlight>/ contains=htmlEndTag " Note: Cannot use 'start="<pre>"rs=e', so still have the <pre> tag" highlighted correctly via separate sy-match. Unfortunately, this will" also highlight <pre> tags inside the preformatted region. sy region htmlPre start="<pre>" end="<\/pre>"me=e-6 contains=htmlPreTagsy region wikiNowiki start="<nowiki>"  end="<\/nowiki>"me=e-9 contains=wikiNowikiTagsy region wikiSource start="<source\s\+[^>]\+>" keepend end="<\/source>"me=e-9 contains=wikiSourceTagsy region wikiSyntaxHL start="<syntaxhighlight\s\+[^>]\+>" keepend end="<\/syntaxhighlight>"me=e-18 contains=wikiSyntaxHLTag sy include @TeX syntax/tex.vimsy region wikiTeX matchgroup=htmlTag start="<math>" end="<\/math>"  contains=@texMathZoneGroup,wikiNowiki,wikiNowik iEndTagsy region wikiRef matchgroup=htmlTag start="<ref>"  end="<\/ref>"   contains=wikiNowiki,wikiNowikiEndTag sy cluster wikiTop contains=@Spell,wikiLink,wikiNowiki,wikiNowikiE ndTag sy region wikiItalic start=+'\@<!'''\@!+ end=+''+ oneline contains=@wikiTop,wikiItalicBoldsy region wikiBold  start=+'''+ end=+'''+   oneline contains=@wikiTop,wikiBoldItalicsy region wikiBoldAndItalic start=+'''''+   end=+'''''+ oneline contains=@wikiTop sy region wikiBoldItalic contained start=+'\@<!'''\@!+ end=+''+  oneline contains=@wikiTopsy region wikiItalicBold contained start=+'''+ end=+'''+ oneline contains=@wikiTop sy region wikiH1 start="^="  end="="  oneline contains=@wikiTopsy region wikiH2 start="^==" end="==" oneline contains=@wikiTopsy region wikiH3 start="^===" end="===" oneline contains=@wikiTopsy region wikiH4 start="^===="   end="===="   oneline contains=@wikiTopsy region wikiH5 start="^====="  end="====="  oneline contains=@wikiTopsy region wikiH6 start="^======" end="======" oneline contains=@wikiTop sy region wikiLink start="\[\[" end="\]\]\(s\|'s\|es\|ing\|\)" oneline contains=wikiLink,wikiNowiki,wikiNowi kiEndTag sy region wikiLink start="\[http:"   end="\]" oneline contains=wikiNowiki,wikiNowikiEndTags y region wikiLink start="\[https:"  end="\]" oneline contains=wikiNowiki,wikiNowikiEndTags y region wikiLink start="\[ftp:" end="\]" oneline contains=wikiNowiki,wikiNowikiEndTags y region wikiLink start="\[gopher:" end="\]" oneline contains=wikiNowiki,wikiNowikiEndTags y region wikiLink start="\[news:"   end="\]" oneline contains=wikiNowiki,wikiNowikiEndTags y region wikiLink start="\[mailto:" end="\]" oneline contains=wikiNowiki,wikiNowikiEndTag sy region wikiTemplate start="{{" end="}}" contains=wikiNowiki,wikiNowikiEndTag sy match wikiParaFormatChar /^[\:|\*|;|#]\+/sy match wikiParaFormatChar /^-----*/sy match wikiPre /^\ .*$/ contains=wikiNowiki,wikiNowikiEndTag  " HTML highlighting if version < 508  command! -nargs=+ HtmlHiLink hi link <args>else  command! -nargs=+ HtmlHiLink hi def link <args>endif if version >= 508 || !exists("did_html_syn_inits")  HtmlHiLink htmlTag Function  HtmlHiLink htmlEndTag Identifier  HtmlHiLink htmlArg Type  HtmlHiLink htmlTagName htmlStatement  HtmlHiLink htmlSpecialTagName Exception  HtmlHiLink htmlValue  String  HtmlHiLink htmlSpecialChar Special   if !exists("html_no_rendering") HtmlHiLink htmlTitle Title HtmlHiLink htmlH1 htmlTitle HtmlHiLink htmlH2 htmlTitle HtmlHiLink htmlH3 htmlTitle HtmlHiLink htmlH4 htmlTitle HtmlHiLink htmlH5 htmlTitle HtmlHiLink htmlH6 htmlTitle HtmlHiLink htmlPreProc  PreProc HtmlHiLink htmlHead htmlPreProc HtmlHiLink htmlPreProcAttrName  htmlPreProc HtmlHiLink htmlPreStmt  htmlPreProc HtmlHiLink htmlSpecial  Special HtmlHiLink htmlCssDefinition htmlSpecial HtmlHiLink htmlEvent htmlSpecial HtmlHiLink htmlSpecialChar  htmlSpecial HtmlHiLink htmlComment  Comment HtmlHiLink htmlCommentPart  htmlComment HtmlHiLink htmlCssStyleComment  htmlComment HtmlHiLink htmlString   String HtmlHiLink htmlPreAttr  htmlString HtmlHiLink htmlValue htmlString HtmlHiLink htmlError Error HtmlHiLink htmlBadArg   htmlError HtmlHiLink htmlBadTag   htmlError HtmlHiLink htmlCommentError htmlError HtmlHiLink htmlPreError htmlError  HtmlHiLink htmlPreProcAttrError htmlError HtmlHiLink htmlTagError htmlError HtmlHiLink htmlStatement Statement HtmlHiLink htmlConstant Constant HtmlHiLink htmlBoldItalicUnderline htmlBoldUnderlineItalic HtmlHiLink htmlUnderlineItalicBold htmlBoldUnderlineItalic HtmlHiLink htmlUnderlineBoldItalic htmlBoldUnderlineItalic HtmlHiLink htmlItalicBoldUnderline htmlBoldUnderlineItalic HtmlHiLink htmlItalicUnderlineBold htmlBoldUnderlineItalic HtmlHiLink htmlItalicBold  htmlBoldItalic HtmlHiLink htmlItalicUnderline htmlUnderlineItalic HtmlHiLink htmlUnderlineBold   htmlBoldUnderline HtmlHiLink htmlLink Underlined if !exists("html_my_rendering")  hi def htmlBold term=bold  cterm=bold  gui=bold  hi def htmlBoldUnderline   term=bold,underline cterm=bold,underline gui=bold,underline  hi def htmlBoldItalic  term=bold,italic   cterm=bold,italic   gui=bold,italic  hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline  hi def htmlUnderline   term=underline cterm=underline gui=underline  hi def htmlUnderlineItalic term=italic,underline  cterm=italic,underline  gui=italic,underline  hi def htmlItalic  term=italic cterm=italic gui=italic endif   endif " !exists("html_no_rendering")   if version < 508 let did_html_syn_inits = 1  endif endif " version >= 508 || !exists("did_html_syn_inits") " Wiki highlighting HtmlHiLink wikiItalic htmlItalicHtmlHiLink wikiBold  htmlBoldHtmlHiLink wikiBoldItalic htmlBoldItalicHtmlHiLink wikiItalicBold htmlBoldItalicHtmlHiLink wikiBoldAndItalic htmlBoldItalic HtmlHiLink wikiH1 htmlTitleHtmlHiLink wikiH2 htmlTitleHtmlHiLink wikiH3 htmlTitleHtmlHiLink wikiH4 htmlTitleHtmlHiLink wikiH5 htmlTitleHtmlHiLink wikiH6 htmlTitle HtmlHiLink wikiLink   htmlLinkHtmlHiLink wikiTemplate   htmlSpecialHtmlHiLink wikiParaFormatChar htmlSpecialHtmlHiLink wikiPre htmlConstantHtmlHiLink wikiRef htmlComment HtmlHiLink wikiSource wikiPreHtmlHiLink wikiSyntaxHL   wikiPre  let b:current_syntax = "html" delcommand HtmlHiLink if main_syntax == "html"  unlet main_syntaxendif " vim: set et sts=2 sw=2:

$HOME/.vim/ftdetect/mediawiki.vim

Basic FileType Detection

To autodetect files ending in ".wiki", add the following lines to ".vim/ftdetect/mediawiki.vim" or "vimfiles\ftdetect\mediawiki.vim" (or create the file if it doesn't exist):

File:$HOME/.vim/ftdetect/mediawiki.vi m

au BufRead,BufNewFile *.wiki set filetype=mediawikiau BufRead,BufNewFile *.wikipedia.org*  set filetype=mediawikiau BufRead,BufNewFile *.wikibooks.org*  set filetype=mediawikiau BufRead,BufNewFile *.wikimedia.org*  set filetype=mediawiki

Alternatively, the command ":setf mediawiki" will temporarily set the syntax for the current file.

Mozex Firefox Extension Fix

If you use the Mozex Firefox extension, Mozex creates a temporary file ending in ".txt" rather than ".wiki" so the above autodetection will not work in combination with that plugin. One solution is to have Mozex invoke vim with these arguments:

-c "setf mediawiki"

A complete editor command can look some thing like that

gnome-terminal -e "vim -c 'setf mediawiki' $1"
Adapt to Media Wiki's Lines without Line Breaks

Wikipedia articles often only have line-breaks at the end of each paragraph, a situation Vim by default doesn't handle as other text editors. Save the following lines to "~/.vim/ftplugin/mediawiki.vim" or "vimfiles\ftplugin\mediawiki.vim" to make it as you may be used to from Notepad:

File:$HOME/.vim/ftplugin/mediawiki.vi m

" Many MediaWiki wikis prefer line breaks only at the end of paragraphs" (like in a text processor), which results in long, wrapping lines.setlocal wrap linebreaksetlocal textwidth=0 " No auto-wrap at all.setlocal formatoptions-=tc formatoptions+=lif v:version >= 602 | setlocal formatoptions-=a | endif " Make navigation more amenable to the long wrapping lines. noremap <buffer> k gknoremap <buffer> j gjnoremap <buffer> <Up> gknoremap <buffer> <Down> gjnoremap <buffer> 0 g0noremap <buffer> ^ g^noremap <buffer> $ g$noremap <buffer> D dg$ noremap <buffer> C cg$ noremap <buffer> A g$a inoremap <buffer> <Up> <C-O>gkinoremap <buffer> <Down> <C-O>gj
Additional Gimmicks

Additional to that you may want to save the following lines to "~/.vim/ftplugin/mediawiki.vim" or "vimfiles\ftplugin\mediawiki.vim" for some more gimmicks (you may need to put "filetype plugin on" in your vimrc):

File:$HOME/.vim/ftplugin/mediawiki.vi m

" utf-8 should be set if not already done globallysetlocal fileencoding=utf-8setlocal matchpairs+=<:> " Treat lists, indented text and tables as comment lines and continue with the" same formatting in the next line (i.e. insert the comment leader) when hitting" <CR> or using "o".setlocal comments=n:#,n:*,n:\:,s:{\|,m:\|,ex:\|} setlocal formatoptions+=roq " match HTML tags (taken directly from $VIM/ftplugin/html.vim)if exists("loaded_matchit") let b:match_ignorecase=0 let b:match_skip = 's:Comment' let b:match_words = '<:>,' . \ '<\@<=[ou]l\>[^>]*\%(>\|$\):<\@<=li\>:<\@<=/[ou]l>,' . \ '<\@<=dl\>[^>]*\%(>\|$\):<\@<=d[td]\>:<\@<=/dl>,' . \ '<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>'endif " Other useful mappings" Insert a matching = automatically while starting a new header.inoremap <buffer> <silent> = <C-R>=(getline('.')==''\|\|getline('.')=~'^=\+$')?"==\<Lt>Left>":"="<CR> " Enable folding based on ==sections==setlocal foldexpr=getline(v:lnum)=~'^\(=\+\)[^=]\+\1\(\s*<!--.*-->\)\=\s*$'?\">".(len(matchstr(getline(v:lnum),'^=\+'))-1):"="setlocal fdm=expr

In-browser editors

wikEd

wikEd is a full-featured in-browser text editor that adds enhanced text processing functions to Wikipedia and other MediaWiki edit pages (as of October 2009[update], wikEd works with Firefox, SeaMonkey, Safari and Google Chrome, but not with Internet Explorer or Opera).

Features include:

  • Powerful search and replace (including Regular expressions)
  • Wikicode syntax highlighting
  • Fullscreen editing mode
  • Edit preview and show changes on the same page without reloading
  • MS-Word and web page import (including tables)
  • Single-click fixing of common mistakes

wikEd can simply be enabled under Preferences::Gadgets (on wiki installations where wikEd is not installed as a gadget, a small code snippet can be pasted to your common.js page or it can be run locally as a Greasemonkey user script). For detailed installation instructions see the wikEd homepage.

Dealing with special characters

Text on Wikipedia is encoded using the UTF-8 character set, which allows the use of many non-English characters and special symbols. Such characters may appear even in articles where you wouldn't expect them due to the use of interwiki links to non-English versions of the article. Therefore, it's very important to use an editor that does not mangle these characters or replace them with question marks. Check your editor's documentation to make sure that it supports Unicode or UTF-8, and enable it if needed. You don't necessarily need a special editor; recent versions of Notepad and Microsoft Word support Unicode, for example. An extensive list of Unicode-supporting editors is available for Windows and other operating systems (see also: Perbandingan -- text editors).

If your editor does not support UTF-8, then copy-paste from web browser may mangle the characters. For example pasting from Windows Clipboard automatically converts characters to whatever character set is used in your editor and any characters not included in this character set are replaced with question marks. You can avoid this by using one of the helper applications or browser plugins mentioned above. For example It's All Text! does not mangle any characters.

When making an edit to an article with special characters using a new editor, it's a good idea to use the "Show changes" button (next to "Show preview") to see exactly what changes your edit will make - if areas with special characters that you didn't intend to modify are highlighted as red, that means they will be corrupted, even though both versions may look the same to you because you don't have foreign fonts installed.

BabelPad is a free editor for Windows with special support for dealing with Unicode, and is ideal if you need to determine which of several similar-looking characters an article is using, or deal with hard-to-edit Unicode control codes (like for multidirectional text).

See also

  • Wikipedia:Tools
    • Wikipedia:Tools/Editing tools
  • AutoWikiBrowser
    • MWiki-Browser. A fork of AutoWikiBrowser (last release in July 2007).
(Sebelumnya) Wikipedia Link rotWikipedia:Merging (Berikutnya)