Комментарии (#) идут для запуска строки в режиме вставки в Vim

Каждый раз, когда я хочу добавить комментарий к строке с отступом в энергии, я совершил нападки, Shift-o (откройте новую строку выше тока, переключитесь на режим вставки), и начните вводить комментарий Python (использование #). Тот хеш затем волшебно перемещен в запуск строки (никакое добавление отступа), и я должен нажать вкладку несколько раз.

Кто-либо знает, как работать вокруг этого?

57
задан Mateusz Piotrowski 11 April 2016 в 17:38
поделиться

3 ответа

Я полагаю, у вас есть Smartindent в вашем .vimrc

см. : H SmartIndent

When typing '#' as the first character in a new line, the indent for
that line is removed, the '#' is put in the first column.  The indent
is restored for the next line.  If you don't want this, use this
mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H.
When using the ">>" command, lines starting with '#' are not shifted
right.

Я считаю, что вам не нужно Smartindenting во время кодирования Python. Поэтому просто удалите его из ваших настроек или добавьте следующее в свой .vimrc:

au! FileType python setl nosmartindent
64
ответ дан 24 November 2019 в 19:44
поделиться

Попробуйте поместить это в вашем .VIMRC:

autocmd BufRead *.py inoremap # X<c-h>#

Это сделает, что вставка знака HASH (фунта) всегда отступается в исходных файлах Python.

9
ответ дан 24 November 2019 в 19:44
поделиться

Вы можете использовать крюк мыши низкого уровня. См. IS Пример и проверьте MESAGE WM_MOUSEMOVE в HoodCallback.

Вы также можете использовать класс IMESSAGEFILTER, чтобы поймать события мыши и вызвать событие, чтобы получить позицию (Примечание: это только получит позицию над окном, не снаружи этого):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace GlobalMouseEvents
{
   public partial class Form1 : Form
   {
      public Form1()
      {
         GlobalMouseHandler gmh = new GlobalMouseHandler();
         gmh.TheMouseMoved += new MouseMovedEvent(gmh_TheMouseMoved);
         Application.AddMessageFilter(gmh);

         InitializeComponent();
      }

      void gmh_TheMouseMoved()
      {
         Point cur_pos = System.Windows.Forms.Cursor.Position;
         System.Console.WriteLine(cur_pos);
      }
   }

   public delegate void MouseMovedEvent();

   public class GlobalMouseHandler : IMessageFilter
   {
      private const int WM_MOUSEMOVE = 0x0200;

      public event MouseMovedEvent TheMouseMoved;

      #region IMessageFilter Members

      public bool PreFilterMessage(ref Message m)
      {
         if (m.Msg == WM_MOUSEMOVE)
         {
            if (TheMouseMoved != null)
            {
               TheMouseMoved();
            }
         }
         // Always allow message to continue to the next filter control
         return false;
      }

      #endregion
   }
}
-121--2387567-

Вы можете попробовать NERD-комментатор , который является плагином, который позволяет добавлять комментарии к строкам на большинстве языков автоматически. Вы просто размещаете курсор в строку, которую вы заинтересованы и введите , C пространство и линия будет прокомментирована. Этими же клавишами удалят комментарий, чтобы показать линию.

Так что, если у вас есть:

def func():
  print("indented") <- cursor position in command mode

тип , C пространство И вы получаете:

def func():
  #print("indented")
1
ответ дан 24 November 2019 в 19:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: