Community
    • Login

    INFOS on the "ViSimulator" N++ plugin

    Scheduled Pinned Locked Moved General Discussion
    2 Posts 1 Posters 8.5k Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • guy038G Offline
      guy038
      last edited by guy038

      Hi, All,

      From that discussion, about the ViSumulator plugin

      https://notepad-plus-plus.org/community/topic/12147/visimulator-com-has-been-comprimised/3

      I decided to have a look to that emulation of the Unix VI editor ! So, below, you’ll find the main pieces of information about the ViSimulator plugin.

      After numerous tests, I, particularly, rewrote, in an readable form, the documentation part, which is part of the second post !

      
      LINKS :
      ¯¯¯¯¯
      
          - New Site :    https://web.archive.org/web/20150516065053/http://www.visimulator.com:80/
      
      
          - Download :    https://web.archive.org/web/20150515145616/http://www.visimulator.com/download.html
      
      
          - Help     :    https://web.archive.org/web/20150523045434/http://www.visimulator.com:80/help.html
      
      
      BEWARE  :
      ¯¯¯¯¯¯
      
          - DO NOT use, anymore, the OLD link : http://www.visimulator.com
      
      
      DESCRIPTION :
      ¯¯¯¯¯¯¯¯¯¯¯
      
          - ViSimulator is a plug-in for Notepad++, which makes it possible to edit as VI/VIM, within notepad++
      
          - ViSimulator simulates/emulates most frequently-used VI/VIM commands, to provide more powerful editing capability for Notepad++
      
      
      INSTALLATION :
      ¯¯¯¯¯¯¯¯¯¯¯¯
      
          - Stop any instance of Notepad++
      
          - Download "ViSimulator.dll" and copy it to "plugins" directory of Notepad++
      
          - Restart Notepad++.
      
              => You should find the "ViSimulator" option, below the "Plugins" menu.
      
      
      MD5/SHA1 digests :
      ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
      
      MD5 : 5a336f7eaf315b7f562b1459c6196778
      SHA1: 9ce0425fe02926dcf42461dd976c0c33ad549ead
      
      
      IMPORTANT :
      ¯¯¯¯¯¯¯¯¯
      
      It works, ONLY, with UNICODE Notepad++ build and was tested, initially, with Notepad++ v6.4.2, v6.5.1, v6.5.3 and v6.5.5.
      
      I personally tested it, WITHOUT any problem, with the LAST N++ version v7.5.6 ;-))
      
      
      HISTORY :
      ¯¯¯¯¯¯¯
      
      "ViSimulator" v0.4.0.1093
      
          FIXED    : 'G' may result in Notepad++ frozen when "Clickable Link" of Notepad++ enabled (enabled in default)
      
                   To avoid this, there are three methods:
      
                       - Update ViSimulator to version 0.4.0.1093 or above, in the new version, some work was done to get around the bug of "Clickable Link".
                       - Disable "Clickable Link" option of Notepad++ -- recommended
                           - Click at menu [Settings->Preference] to open the settings dialog,
                           - Then, click at the [Misc] at the bottom of the left list on the dialog just opened,
                           - At last, uncheck "Clickable Link" and save the settings.
                       - Wait for Notepad++ to release version 6.5.5 or above, it will fix this.
      
          FIXED    : 'H' 'L' 'M' will go to right line in wrap mode.
          FIXED    : 'zt' 'zb' 'z<return>' 'z-' will scroll to right position in wrap mode.
          FIXED    : 'Ctrl-u' 'Ctrl-d' will scroll right count of lines and go to right position in wrap mode.
      
      
      "ViSimulator" v0.4.0.1073
      
          FIXED    : In VISUAL mode, when caret moved out of view window, the view does not scroll to make caret visible
          ADDED    : Support text object of [] {} <> "" '' . The following commands can be used in NORMAL mode:
                         ci] ci[ ci} ci{ ci> ci< ci" ci' ca] ca[ ca} ca{ ca> ca< ca" ca'
                         di] di[ di} di{ di> di< di" di' da] da[ da} da{ da> da< da" da'
                         yi] yi[ yi} yi{ yi> yi< yi" yi' ya] ya[ ya} ya{ ya> ya< ya" ya'
          ADDED    : / ? Search FORWARDS and BACKWARDS. You can use REGULAR expression in search command
          ADDED    : HISTORY for command line of EX command and search
          IMPROVED : Command bar display
      
      
      "ViSimulator" v0.3.6.868
      
          ADDED    : Press Ctrl-Alt-Shift-V shortcut to toggle ViSimulator ENABLED or DISABLED
          ADDED    : A simple SETTINGS dialog, you can custom some options
      
      
      "ViSimulator" v0.3.6.838
      
          ADDED    : Press shortcut Ctrl-[ will return to NORMAL mode.
          FIXED    : When caret at the END line of document, 'dd' does NOT delete the current line.
          FIXED    : 'f' may failed at some situations
          FIXED    : And many other bugs fixed.
      
      
      "ViSimulator" v0.3.0.659
      
          FIXED    : Use Alt+W and other combined keys to active corresponding N++ menu item.
                     Use Alt to active menu, and then enter a character to active N++ corresponding menu item.
          FIXED    : 'O' insert NEW line BEFORE current line when the cursor is at the VERY FIRT line of the file.
          FIXED    : If the COUNT preceding command char is too large, it may lead to Notepad++ not responding for a while.
          ADDED    : Support of commands 'y[H|L|M]' 'd[H|L|M|' 'c[H|L|M]' '>[H|L|M]' '<[H|L|M]'
          ADDED    : Support of commands 'dj' 'dk' 'cj' 'ck' 'yj' 'yk'
          ADDED    : Support of commands 'gU' 'gu' 'gUU' 'guu' 'gu3j' 'gU3k' 'gugg' 'gUgU' 'gugu' 'gUG' 'gU[fFtT]*' etc.
          CHANGED  : 'H' 'L' will not scroll one page up or one page down when the cursor stay at the top line or the bottom line in current view.
          CHANGED  : '##G' '##gg' ( # = any digit ) will move cursor to line ## and scroll line ## to the middle of the view.
          CHANGED  : '##%' will move the cursor to the ## percent line of file and scroll current line to the middle of the view.
          CHANGED  : Disables VISUAL mode temporarily.
      
      
          Copyright © 2014 Simon HE. All rights reserved.
      

      The detail of all commands, of the ViSimulator plugin, are gathered in the next post

      Best Regards

      guy038

      1 Reply Last reply Reply Quote 0
      • guy038G Offline
        guy038
        last edited by guy038

        Hi, All,

        Here are, below, the syntax of all the commands of the ViSimulator plugin :

        
        VI Commands :
        ¯¯¯¯¯¯¯¯¯¯¯
        
            The commands, CURRENTLY supported, in ViSimulator v0.4.0.1093, are :
                                                              ¯¯¯¯¯¯¯¯¯¯¯
        
        
        CURSOR MOTIONS :
        ¯¯¯¯¯¯¯¯¯¯¯¯¯¯
        
            0 / Home   : Move the cursor to column 1                      of CURRENT line
            ^ / Home   : Move the cursor to the FIRST NON-blank character of CURRENT line
            $ / End    : Move the cursor to the END                       of CURRENT line
        
            |          : Move the cursor to the [COUNTth] COLUMN ( or FIRST ) of CURRENT line  ( NOT with French Keyboard )
        
            -          : Move the cursor to the FIRST NON-blank character of the PREVIOUS [count] line
            + / Enter  : Move the cursor to the FIRST NON-blank character of the NEXT     [count] line
        
            h          : Move the cursor to the LEFT  [count] column, in CURRENT line
            l or Space : Move the cursor to the RIGHT [count] column, in CURRENT line
            k          : Move the cursor to the UP    [count] line
            j          : Move the cursor to the DOWN  [count] line
        
        
            w          : Move the cursor to the BEGINNING of NEXT     [count] word
            b          : Move the cursor to the BEGINNING of PREVIOUS [count] word
            e          : Move the cursor to the END       of NEXT     [count] word
            ge         : Move the cursor to the END       of PREVIOUS [count] word
        
            W          : Move the cursor to the BEGINNING of next     [count] word, ignoring PUNCTUATION
            B          : Move the cursor to the BEGINNING of previous [count] word, ignoring PUNCTUATION
            E          : Move the cursor to the END of next           [count] word, ignoring PUNCTUATION
            gE         : Move the cursor to the END of previous       [count] word, ignoring PUNCTUATION
        
        
            f*         : Move the cursor to NEXT                     [count] OCCURRENCE of the character *, in CURRENT line
            F*         : Move the cursor to PREVIOUS                 [count] OCCURRENCE of the character *, in CURRENT line
            t*         : Move the cursor to just BEFORE the NEXT     [count] OCCURRENCE of the character *, in CURRENT line
            T*         : Move the cursor to just AFTER  the PREVIOUS [count] OCCURRENCE of the character *, in CURRENT line
        
            ;          : Repeat last f*/F*/t*/T* search
            ,          : Repeat last f*/F*/t*/T* search, in the OPPOSITE direction
        
        
            H          : Move the cursor to the FIRST NON-blank character of the [count] line from the TOP    of the screen
            M          : Move the cursor to the FIRST NON-blank character of the         line at   the MIDDLE of the screen
            L          : Move the cursor to the FIRST NON-blank character of the [count] line from the BOTTOM of the screen
        
            gg         : Move the cursor to the FIRST NON-blank character of the [count] line ( or FIRST ) of the file
            G          : Move the cursor to the FIRST NON-blank character of the [count] line ( or LAST  ) of the file
        
        
            Ctrl-D     : Scroll file DOWNWARD, [count] HALF page(s), with CURRENT line at the SAME RELATIVE location
            Ctrl-U     : Scroll file UPWARD,   [count] HALF page(s), with CURRENT line at the SAME RELATIVE location
        
            Ctrl-F     : Scroll file DOWNWARD, [count] page(s),      with CURRENT line at the SAME RELATIVE location
            Page Down  : Scroll file DOWNWARD, ONE page              with CURRENT line at the SAME RELATIVE location
        
            Ctrl-B     : Scroll file UPWARD,   [count] page(s),      with CURRENT line at the SAME RELATIVE location
            Page Up    : Scroll file UPWARD,   ONE  page             with CURRENT line at the SAME RELATIVE location
        
            Ctrl-E     : Scroll file UPWARD,   [count] line(s)       with CURRENT line INCHANGED
            Ctrl-Y     : Scroll file DOWNWARD, [count] line(s),      with CURRENT line UNCHANGED
        
        
            z<Enter>   : Scroll CURRENT line at the TOP    of the screen and move the cursor to the FIRST NON-blank char.
            z.         : Scroll CURRENT line at the MIDDLE of the screen and move the cursor to the FIRST NON-blank char.
            z-         : Scroll CURRENT line at the BOTTOM of the screen and move the cursor to the FIRST NON-blank char.
        
            zt         : Scroll CURRENT line at the TOP    of the screen
            zz         : Scroll CURRENT line at the MIDDLE of the screen
            zb         : Scroll CURRENT line at the BOTTOM of the screen
        
        
            %          : Move to the MATCHING boundary of a BLOCK {[(<...>)]}
        
            %          : Move the cursor to the count PERCENTAGE of the file
        
        
            *          : Select the NEXT     occurrence, of the word UNDER the cursor
            #          : Select the PREVIOUS occurrence, of the word UNDER the cursor  ( NOT with French Keyboard )
        
            ?Text      : Move the cursor, right AFTER the FIRST occurrence of Text, found UPWARD   ( REGEX syntax possible )
            /Text      : Move the cursor, right AFTER the FIRST occurrence of Text, found DOWNWARD ( REGEX syntax possible )
        
            n          : Select next SELECTED text, UPWARD,   after an INITIAL search ?Text
            n          : Select next SELECTED text, DOWNWARD, after an INITIAL search /Text
        
            N          : Select next SELECTED text, in the OPPOSITE direction
        
        
        REGEX Syntax :
        ¯¯¯¯¯¯¯¯¯¯¯¯
                       Globally, identical to BOOST Regex syntax, in Notepad++. Unfortunately, when matches are CONSECUTIVE,
                       a SINGLE character is ALWAYS skipped, while searching for the NEXT occurrence :-((
        
        
        Text OBJECTS :
        ¯¯¯¯¯¯¯¯¯¯¯¯
        
            i( / i)  : Select the (..) block, at cursor location, with possible NESTED / JUXTAPOSED (..) blocks, NOT including its BOUNDARIES
            i[ / i]  : Select the [..] block, at cursor location, with possible NESTED / JUXTAPOSED [..] blocks, NOT including its BOUNDARIES
            i{ / i}  : Select the {..} block, at cursor location, with possible NESTED / JUXTAPOSED {..} blocks, NOT including its BOUNDARIES
            i< / i>  : Select the <..> block, at cursor location, with possible NESTED / JUXTAPOSED <..> blocks, NOT including its BOUNDARIES
        
            i"       : Select the ".." block, at cursor location, WITHOUT INNER ".." blocks inside,              NOT including its BOUNDARIES
            i'       : Select the '..' block, at cursor location, WITHOUT INNER '..' blocks inside,              NOT including its BOUNDARIES
        
        
            a( / a)  : Select the (..) block, at cursor location, with possible NESTED / JUXTAPOSED (..) blocks, including its BOUNDARIES
            a[ / a]  : Select the [..] block, at cursor location, with possible NESTED / JUXTAPOSED [..] blocks, including its BOUNDARIES
            a{ / a}  : Select the {..} block, at cursor location, with possible NESTED / JUXTAPOSED {..} blocks, including its BOUNDARIES
            a< / a>  : Select the <..> block, at cursor location, with possible NESTED / JUXTAPOSED <..> blocks, including its BOUNDARIES
        
            a"       : Select the ".." block, at cursor location, WITHOUT INNER ".." blocks inside,              including its BOUNDARIES
            a'       : Select the '..' block, at cursor location, WITHOUT INNER '..' blocks inside,              including its BOUNDARIES
        
        
            dObject  : Delete the SELECTION
            cObject  : Delete the SELECTION and enter INPUT mode
            yObject  : Copy   the SELECTION in the CLIPBOARD
        
            guObject : Change the SELECTION to LOWERCASE (Forms 'i' and 'a' give SAME results !)
            gUObject : Change the SELECTION to UPPERCASE (Forms 'i' and 'a' give SAME results !)
        
        
        REGULAR commands :
        ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
        
            Esc            : Enter  NORMAL mode and delete any SELECTION
        
            i              : Enter     INPUT  mode                  to insert text BEFORE the cursor
            Inser          : Toggle to NORMAL mode OR to INPUT mode to insert text BEFORE the cursor
            a              : Enter     INPUT  mode                  to append text AFTER  the cursor
        
            gi             : Enter INPUT mode at the LOCATION which was, LAST time, exited
        
            gI             : Enter INPUT mode at column ONE,                        of the CURRENT line
            I              : Enter INPUT mode BEFORE the FIRST NON-blank character, of the CURRENT line
            A              : Enter INPUT mode AFTER the END,                        of the CURRENT line
        
            R              : Enter INPUT mode with OVER-TYPE behavior, at CURRENT position of the CURRENT line
        
            Tab            : Insert a TABULATION character, when INPUT  mode
            Backspace      : Delete the PREVIOUS character, when INPUT  mode
        
            Delete         : Delete the CURRENT  character, when INPUT  mode
            Delete         : Delete the PREVIOUS character, when NORMAL mode
        
            Enter          : Cut from UNDER the cursor to END of line and paste, at PREVIOUS indentation, on a NEW line, DOWN, when INPUT mode
            Ctrl-M         : Cut from UNDER the cursor to END of line and paste, at column 1,             on a NEW line, DOWN, in BOTH modes
        
            o              : Insert an NEW line BELOW the cursor and enter INPUT mode at INDENT column of that NEW line
            Ctrl-Alt-Shift : Insert an NEW line BELOW the cursor at column 1 of that NEW line and keep the CURRENT VI mode (N++ Command)
              + Enter
        
            O              : Insert an NEW line ABOVE the cursor and enter INPUT mode at column 1 of that NEW line
            Ctrl-Alt-Shift : Insert an NEW line ABOVE the cursor at column 1 of that NEW line and keep the CURRENT VI mode (N++ Command)
              + Enter
        
            s              : Delete [count] character(s) from UNDER the cursor and enter INPUT mode
        
            S / cc         : Delete [count] line(s) DOWN,     from CURRENT line, insert a BLANK line and enter INPUT mode, in CURRENT line
            cw             : Delete [count] NEXT     word(s), from CURRENT word,                     and enter INPUT mode, in CURRENT line
            cb             : Delete [count] PREVIOUS word(s), from CURRENT word,                     and enter INPUT mode, in CURRENT line
        
        
            C              : Remove ALL characters from UNDER the cursor to the END of [count] line(s) and enter INPUT mode
            D / d$         : Remove ALL characters from UNDER the cursor to the END of [count] line(s)
        
            dd             : Delete [count] line(s) DOWN,     from CURRENT line
            dw             : Delete [count] NEXT     word(s), from CURRENT word
            db             : Delete [count] PREVIOUS word(s), from CURRENT word
        
            x              : Delete [count] character(s) from UNDER  the cursor, and copy them to the CLIPBOARD
            X              : Delete [count] character(s)      BEFORE the cursor, and copy them to the CLIPBOARD
        
            r*             : Replace [count] character(s), from UNDER the cursor, with the character *
        
            J              : Join the CURRENT line with the [count] NEXT line(s), with ONE SPACE character as separator
            Ctrl-J         : Join SELECTED lines,                                 with ONE SPACE character as separator (N++ Command)
        
        
            u              : Undo, [count] time(s) the LAST action
            Ctrl-Z         : Undo, ONE time,       the LAST action (N++ Command)
        
            Ctrl-R         : Redo, [count] time(s) the LAST undone action
            Ctrl-Shift-Z   : Redo, ONE time,       the LAST undone action (N++ Command)
        
        
            Y / yy         : Copy [count] line(s) to the CLIPBOARD
        
            p              : Paste, [count] time(s), the contents of the CLIPBOARD, AFTER  the cursor
            P              : Paste, [count] time(s), the contents of the CLIPBOARD, BEFORE the cursor
            Ctrl-V         : Paste  ONE time,        the contents of the CLIPBOARD, BEFORE the cursor (N++ Command)
        
            v              : Toggle to VISUAL mode, with selection of [count] character(s), to the RIGHT, OR to NORMAL mode
            V              : Toggle to VISUAL mode, with selection of [count] line(s),      DOWNWARD      OR to NORMAL mode
        
        
            ZZ             : SAVE and CLOSE current file, WITHOUT any message (same as EX command :wq)
        
            .              : Repeat, [count] time(s), the LAST text CHANGE command
        
        
            >              : Indent    ALL the SELECTED line(s)
            <              : UN-indent ALL the SELECTED line(s)
        
            >>             : Indent    [count] line(s) DOWN
            <<             : UN-indent [count] line(s) DOWN
        
            >{CC}          : Indent    ALL the line(s) from CURRENT line to CURSOR command line
            <{CC}          : UN-indent ALL the line(s) from CURRENT line to CURSOR command line
        
            d{CC}          : Delete ALL text from CURRENT position to CURSOR command and copy contents to the CLIPBOARD
            c{CC}          : Delete ALL text from CURRENT position to CURSOR command,    copy contents to the CLIPBOARD, and enter INPUT mode
            y{CC}          : Copy   ALL text from CURRENT position to CURSOR command and copy contents to the CLIPBOARD
        
            where {CC} means any "Cursor Movement Command"
        
        
            ~              : Toggle CASE of CURRENT character to UPPER or LOWER ( NOT with French keyboard )
        
            guu            : Change ALL characters of CURRENT line in LOWER case
            gUU            : Change ALL characters of CURRENT line in UPPER case
        
            gu{CC}         : Change ALL characters, from CURRENT position to CURSOR command, to LOWER case.
            gU{CC}         : Change ALL characters, from CURRENT position to CURSOR command, to UPPER case.
        
        
        EX Commands :
        ¯¯¯¯¯¯¯¯¯¯¯
        
            :       : Enter EX mode
        
            :w      : SAVE  current file
            Ctrl-S  : SAVE  current file
        
            :q      : CLOSE current file, with message if CURRENT file is MODIFIED
            :bd     : CLOSE current file, with message if CURRENT file is MODIFIED
            Ctrl-W  : CLOSE current file, with message if CURRENT file is MODIFIED
        
            :wq     : SAVE and CLOSE current file, WITHOUT any message (same as VI command ZZ)
        
        
        NOTES :
        ¯¯¯¯¯
        
            - The LOWER commands g, m, q et z do NOT exist, in ViSimulator
        
            - The UPPER commands K, Q, U et Z do NOT exist, in ViSimulator
        
        
            - All CTRL Commands, EXCEPT Ctrl-B, Ctrl-F, Ctrl-U, Ctrl-D, Ctrl-Y, Ctrl-E and Ctrl-R, do NOT exist, in ViSimulator
                                        ¯¯¯¯¯¯  ¯¯¯¯¯¯  ¯¯¯¯¯¯  ¯¯¯¯¯¯  ¯¯¯¯¯¯
        
        So, the UNDERLINED N++ ACTIVE shortcuts, in Notepad++, are NOT available, when ViSimulator is ENABLED, in NORMAL mode, from within N++
        
        
        PARTICULARITIES, with a FRENCH keyboard :
        ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
        
            - Use the £ key ( instead of : ) to switch to EX mode
        
            - Use the : key ( instead of / ) to search FORWARD  for [ regex ] string ( Use UP and DOWN arrows to navigate between search HISTORY )
        
            - Use the / key ( instead of ? ) to search BACKWARD for [ regex ] string ( Use UP and DOWN arrows to navigate between search HISTORY )
        
        
            - The 8 "Text Object" commands i[ , i] , i{ , i}  and  a[ , a] , a{ , a} do NOT work, because of the MANDATORY use of the ALT key to write the [ , ] , { or } symbols
        
        
            Copyright © 2014 Simon HE. All rights reserved.
        

        Cheers,

        guy038

        1 Reply Last reply Reply Quote 1

        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

        With your input, this post could be even better 💗

        Register Login
        • First post
          Last post
        The Community of users of the Notepad++ text editor.
        Powered by NodeBB | Contributors