class VimModel: def __init__(self): self.displayBuffer = [] # буфер для хранения всех строк self.currentLine = 0 # текущий индекс строки self.currentCol = 0 # текущий индекс колонки self.scrollY = 0 # вертикальная прокрутка self.scrollX = 0 # горизонтальная прокрутка self.file_path = "" # путь к файлу def MoveLeft(self): if self.currentCol > 0: self.currentCol -= 1 elif self.currentLine > 0: self.currentLine -= 1 self.currentCol = len(self.displayBuffer[self.currentLine]) def MoveRight(self): if self.currentCol < len(self.displayBuffer[self.currentLine]): self.currentCol += 1 elif self.currentLine < len(self.displayBuffer) - 1: self.currentLine += 1 self.currentCol = 0 def MoveUp(self): if self.currentLine > 0: self.currentLine -= 1 self.currentCol = min(self.currentCol, len(self.displayBuffer[self.currentLine])) def MoveDown(self): if self.currentLine < len(self.displayBuffer) - 1: self.currentLine += 1 self.currentCol = min(self.currentCol, len(self.displayBuffer[self.currentLine])) def load_file(self, file_path): """Загрузка файла для редактирования""" self.file_path = file_path try: with open(file_path, "r") as file: self.displayBuffer = [list(line.rstrip('\n')) for line in file.readlines()] except FileNotFoundError: print(f"File {file_path} not found. Starting with empty buffer.") self.displayBuffer = [] def save_file(self): """Сохранение файла""" try: with open(self.file_path, "w") as file: for line in self.displayBuffer: file.write(''.join(line) + '\n') return True except Exception as e: return str(e)